M3tox / DFET

DFET is a tool that can be used to extract files from games that were made with the DreamFactory engine up to version 4.0.
GNU General Public License v3.0
10 stars 0 forks source link

Game client rewrite #2

Open miried opened 2 years ago

miried commented 2 years ago

Thanks for writing this library, this looks really awesome!

Since you already spent time analyzing the asset format, I was wondering if you've thought about writing a new game client to run with the assets? It would be cool to be able to run the game in windowed mode, without the multicore problem, on different architectures etc.

Do you see any obstacles if one were to attempt this? Anyone else interested in this?

M3tox commented 2 years ago

Although we have talked about this privately already, I will share my thoughts here for the public issue: Making a new client with a modern renderer is technically possible, but would require a lot of time to implement. All file structures must be interpreted fully and correctly. The commands that are sent via the scripts to the engine must be also interpreted and executed correctly. These should be researched and tested first.

ecourtial commented 2 months ago

IMHO that are indeed various scenarios we could consider (while some of them could be mixed). Among them:

  1. "Just" create an application that would read and parse original assets. As mentionned by @M3tox it would need an interpreter for the game scripts. With that, the game would be ported "as is". The work would be to focus on the game engine and rendering.
  2. Recrate the game from scratch, using the original assets that we can now export thanks to this awesome work. In this scenario, we would have to ignore the game scripts and recreate the adventure by ourself. Tricky.
  3. Another one scenario. Since the game run smoothly on Windows 10/11, we could focus on improving the game using the tool mentionned by @M3tox in #3. Many applications would be available. 1) Patching the game (correcting errors like the lack of closing at the fore part of the A-DECK or the 2nd class promenade on the B-deck with its wrong openings. 2) Another would be adding extra rooms (for instance in the second and third class areas that are very few in the game). The first thing I think is the third class lounge under the poop deck. A crazy scenario would be to convert the adventure to the RMS Olympic (don't laugh, I was actually working on a POC for that) but it would be a huge amount of work, for instance recreating the whole B-deck of the first class.

Side note: implementing a new game should be cross-platform (i.e compilable on any with C++ or directly running on any with Java).

EDIT: one of the great things with rebuilding the game from scratch is that we could probably easily extends the scenario, adding characters, randomizing where there are located (same thing for some items)...

M3tox commented 2 months ago

I once tested it with SDL and that seems to work really good. It gives everything needed and it natevely integrates the DF library just fine. However, its far from being finished. If someone can sit down and note what all these script commands might mean, that would be great help. Otherwise its a lot of guess work and many commands would be just ignored by the new interpreter because we simply dont know what they do (might be also obsolete because of disk reading or RAM effiency things).

Number 2 is an option of course, but I am not a fan of it. The scripting language used is actually really nice. Its very similar to VBA. I would rather want an interpreter that can use its commands, than hard coding the scripts into a new game environment. Its a lot of work, yes, but think about the advantage: a) you can just use the old scripts and it will work. b) you can use the script language also for new stuff and for modders. If the new client comes with a little editor (I might release mine since I dont have the time to finish it anyways), people just open up the script and put whatever logic they want. Its a nice feature and keeps the game alive.

I have released patches for the game already, exactly these errors like the A-Deck doors are fixed with that. Check out my other repository here: https://github.com/M3tox/TAOOT and download the "inofficial patch 3" You will also find the "extendMod" which brings Vlad back to the turkish bath (cut content). Mind that this patch only works with the steam or gog version. It was so broken that I was kinda forced releasing fixes for that.

It is also possible to add entire rooms. I have done that 2 years ago with the read and writing room. It was planned as a free mod, but because of problems with the doors it never came to release, but the room itself works.

Right now it is impossible for me to continue my work on that, but I might come back to it when I finished my university.

ecourtial commented 2 months ago

I have released patches for the game already, exactly these errors like the A-Deck doors are fixed with that. Check out my other repository here: https://github.com/M3tox/TAOOT

Sorry I meant the fore part of the promenade deck, on A-deck. In real life it was closed by a small wall (with a Window I remember correctly) and a door, in order to prevent the wind to come into it. It makes the fore part of the A-deck a closed promenade for first class passenger, a "workaround" since, at the difference of the Olympic, there was no public promenade on B-deck (a major change if you look at the plans).

Regarding the code, I was working on reverse engineering tools for this game (a .mov exporter almost completed)... paused it months ago, until a few days ago I found out your incredible job (I knew the existence of you patches, but somehow I missed the other repo with the export :sweat: ). Since I have already done some reverse-engineering on other games, there is still the challenge to work on TAOOT and contribute somehow. I share your opinion : it would be easier to reuse all the existing assets and extend them :+1: :thinking: .

I will look into these script to see it inspires me :laughing: