shinyquagsire23 / DesktopAdventures

A recreation of the Desktop Adventures engine in C
GNU Lesser General Public License v2.1
47 stars 4 forks source link

Turning a map viewer into a game engine #2

Open shinyquagsire23 opened 8 years ago

shinyquagsire23 commented 8 years ago

As of now most if not all the actual data of Yoda Stories is being parsed and can actually be viewed from the console and by looking at each ZONE index, however I feel like now this program has reached a point where, as a map viewer and data parser, it's 100% complete, there's very little that you can actually add besides changing how things load and cleaning things up.

However, actually turning this into a real working game engine is an entirely different story, since you have to start handling characters, scripts, etc, and you can't freely roam the maps and compare things. I feel though that actually figuring out a few unknowns will end up being easier to do by actually turning this into a game engine. Below is about the process which will be needed for this:

Also along the way I need to decide how I'm going to handle Indianna Jones, it might be better or worse to have to deal with that later on in development, but I'm really not sure.

IceReaper commented 8 years ago

Regarding Indiana Jones: Reading this format would require only simple additions to the code. It works completely the same. Yoda only has some extras like multiple worlds. I would suggest implementing it from the beginning. For example a value might indicate whether it is (1) an item or (2) a weapon. But when reading both formats, you might get another (3) weapon. And when comparing them you might correct the usage to (1) item, (2) shootable_weapon, (3) throwable_weapon. Not that large difference, but it might be useful to specify values more exactly and understand some script-related stuff better.

So my vote is on reading it too. Depending on how long the project will take to be complete, you might not want to deal with the basics at the end. If everything is loaded correctly, you can focus on the map viewer / gamecode and thats it. Another idea would be if i complete my toolkit, to simply convert Indiana Jones to Yoda Stories if anyone wants to play Indiana Jones :D But using the original game files might be a little bit more interesting.

shinyquagsire23 commented 8 years ago

So far I have some good progress on getting the player implemented, movement is pretty flawless at the moment, and for now what I'm probably going to do is focus a bit more on the hotspot elements in the maps which should allow navigation in some maps (ie the base starports on each planet, houses, etc).

IceReaper commented 8 years ago

Would it be possible to add a hint / link / wiki doc on how to compile this project on linux / mac / ubuntu / 3ds? Tried it on my windows machine this weekend - did not manage to succeed as i never did anything in C... yet

shinyquagsire23 commented 8 years ago

@IceReaper I'll see if I can add that into the README.md, but for the most part it's just a cmake project for non-3DS and 3DS is just a Makefile in the src/3ds folder.

For cmake you'd just run

mkdir build
cd build
cmake ..
make

And that's all you'd need.

shinyquagsire23 commented 8 years ago

So far a very, very sizable portion of the IACT scripts are fully functional. The only unimplemented commands and triggers are:

IACT_CMD_OpenShow_MAYBE
IACT_CMD_Unk1f
IACT_CMD_Unk20

IACT_TRIG_CheckEndItem
IACT_TRIG_CheckStartItem
IACT_TRIG_Unk10
IACT_TRIG_Unk15
IACT_TRIG_Unk16
IACT_TRIG_Unk1d
IACT_TRIG_Unk1e

And I feel that most of those will fall into place either with world generation or finding the maps which use them. Inventory stuff is fully implemented as well, although I still need to actually implement weapons.