19 Sep 2012

Concerning APS source, porting and such things

I know a few people are interested in porting APS to 1.3.2, which I am fine with.

However, there have been a few complications.
First of all, the svn has been corrupted for a while, I don't know how or why but it's gone weird.
Secondly, it now seems that I've lost a good chunk of the source files of every version of APS on my computer, which is even stranger.

Luckily, I've managed to cobble together a (hopefully) complete set of source files from the svn (the files that haven't been corrupted and old revisions of those that have) but that now means that this frankensource has code for both MC1.1 and MC1.2.5. I am also backing this version up in an encrypted rar so that my antivirus (the prime suspect in the mysterious disappearance) can't get at it.

If anyone wants the code to try and sort it out and do a quick port, I can put a link up. Just ask.

In the meantime, I am slowly getting to grips with the client-server model and the new Forge, and will be working on a total rewrite. I don't know how long this will take though as I'll be changing and improving pretty much everything as well as hopefully adding some new stuff, so feel free to make straight ports until I'm finished.


Also, as I forgot to mention it before, if anyone is interested I got very good grades in my first year at uni. My lowest score in a module was 77%, my highest was 92%

EDIT: The svn is now working again. To get the old source (1.2.5 version, best I could find), checkout:
svn://svn.code.sf.net/p/buildcraftaps/code/trunk/pre-132

4 Sep 2012

Modding CZ2D

So, other than being brutally realistic, CZ2D is also designed to be very easily moddable (a la Minecraft). However, because it's written in C#, the game code is compiled into a single .exe, unlike Minecraft where all the compiled class files are left intact within the .jar, allowing you to individually replace them.

As such, I need to make it as easy as possible to modify without needing to change any of the code in the .exe (not that this can't be done, it'd just screw up compatibility).

This is particularly difficult for Items, as they can have custom actions and such, so modders have to be able to add the code for that. The system I have thought of so far to solve this is similar to that of Kerbal Space Program's, i.e. each item has a plaintext file giving its default properties (name, size, weight, inventory/world texture, etc) but in that file it can also reference a .dll and the name of a class within that .dll which implements an interface, allowing the class to expand the item's functionality. Multiple items can use the same .dll, indeed the same class if they want to act the same.

I will probably abstract many of the other parts of the game out to separate .dlls so that things like the world code, rendering or content-handling can be swapped out with modded versions.


I've also just about started work on the 3D version of the Carthage Engine, nicknamed Xana, and once it's done I will probably port CZ2D over to it, once I've added things like multiple floors.