I think it's DirectX, I'm currently using the XNA 4.0 libraries (as annoying as that is), until I figure out how to work with OpenGL without it being a pain. I plan on changing to a better library after getting the testing done for the texdef and animdef file formats (which is 90% complete).
Here's some drafts for the tool to create the ANIMDEF and TEXDEF files, I should probably pack these into one file rather than scattering them, but I'll do that as soon as I sort out the level layout format.
Here is an image of a possible ANIMDEF editor:
Next is the TEXDEF editor:
You'll be glad to know I have ANIMDEFS pretty much working, though the next step is to find a better library than XNA.
Edit:
I just realised, I missed out the boxes for scaling and transparent blitting options, oh well, you get the idea of the gui anyway.
Edit2:
Work starts on whatever this tool will be called, I have a good plan to combine the TEXDEFs and ANIMDEFs that to be honest, I should've done in the first place. At least it means I get to use that loading screen from AO temporarily.
Edit3:
Here's some good news: I've started working on a way to get everything organised and a method of making the engine work the way I think it should.
Firstly; to do with the TEXDEFs and ANIMDEFs, they're needed to get this working is the simple thing; however I've been putting together a format for instructing level building. This doesn't mean I'm putting it in the engine this instant, and don't worry, it's not something that I've dived into 90% of the way and justifies how the engine will work already.
LVLX (for now - can't call it LVL otherwise there would be confusion of course), is what I have in mind for hopefully telling it what to do with levels.
Essentially it contains instruction in four main parts:
CAMDEFs - Tell the engine what images are being used for CAMs, how to reference them (like the R1P15C01 or whatever in the original), and what X and Y they are.
also I need to sort out foreground bits too! almost forgot that...
OBJDEFs - Really simple, a couple bits telling the game what an object is that you want to use on your level, say a slig, contained as a compiled library in %gamedir%\mylevel\slig.dll, obviously with the whole security thing, the best I can do for now is make the editor/engine scream at the user until they are 100% sure they want to load it.
LVLBUILD - Where the instructions are contained for adding the objects defined in OBJDEFs come in, this basically will tell the engine how to create new object instances (XY coords, variables that you might need, blah blah).
LVLINFO - A simple segment that isn't 100% needed, but tells the engine what version of LVLX it's using in case it is updated and some converter might be needed to get it to work. In addition, you can stick author, par time, comments, level name and just all that general info.
---
You might be wondering where TEXDEFs and ANIMDEFs are, I've decided it would be best to give each individual object control over it's own one. It would make the whole thing easier to manage when someone wants to edit stuff. For example, say you had slig.dll in a folder, you could also put texdefs.dat and animdefs.dat in that same folder, link them in the .dll and load it that way.
Also it means you don't spend 500000 years loading bitmaps the moment you run the engine; which is not a good idea whatsoever (there's a loading screen for that!)
---
Oh and the .dlls themselves can be loaded in a similar way plugins do in things like Paint.NET and CraftBukkit, using an interface to get AI responses to stuff like gamespeak and keep track of what needs to watch input or not (this is how possessions will work).
... I can't wait until the 4th edit when I make the tools.
Edit 4:
Not the tools; but this is to do with the visuals of the game... the best I really can do is a set resolution, probably 640x480 like the original game, if it reeaally needs to be bigger, I will think about a way of setting it up to do such a thing.
On top of that, looking back at the level thread again, I almost didn't think about the background, like how Abe and stuff can appear in two layers, a little annoying but meh. I'm thinking, I should add a variable into the ALIVEObject class to tell it what layer to draw it on, obviously invoked using the interface of course...
Edit 5:
Just quickly, because rereading it I don't know if I mentioned; the AO spritesheet thing is the thing that sparked the creation of TEXDEFs. I know that the black represents transparency, and that's what I mean when I say I missed that part out in the gui draft.
That's the main issue with bitmaps, the engine will have to spend a lot of time keying out the colour, if you use PNGs, well, HELLO ALPHA! So the engine screenshot I did above was a test also to make sure that it was getting rid of the colour correctly, I did not edit any transparency before loading it into the test.