-
Notifications
You must be signed in to change notification settings - Fork 15
Question: since TP is not open source #274
Comments
Thanks, it's good to know.
For me, not exactly. I'm really bad at disassembling. Actually at the beginning, I found this video and this project, and I was amazed about it. I analyzed the files inside my I made a simple program in C#, to display this room with Monogame (if I remember it correctly). I was really satisfied with that. Then I watched the content of When I succeeded to do this scripting test (at this time I switched to C++, it was easier to use squirrel with this language), I challenged myself to create the intro of When the intro was finished, I dreamt about being able to move the actor in this room. With some blogs about path finding (I wrote more about this in my blog), the actor was able to walk in a room. And with my knowledge of Then I implemented all the methods found in the After that I analyzed the The difficult parts for me were the savegames and the achievements file, because as I said earlier, I'm really bad at disassembling. Hopefully I wrote this ticket and @atom0s helped me a lot because he reversed it (Thank you so much @atom0s). Another difficult part was the lighting effect but I described it also in this blog entry. Now I have still some bugs with
Good to hear, with patience and passion you can do amazing stuff. |
Holy crap! This is exactly the kind of "behind the scenes" I was looking for to your methods! I have many years of software experience but practically none when it comes to reverse engineering and I'm just recently learning about Ron Gilbert's legendary history in the gaming world. What's especially impressive is he seems to take the craft of building adventure game engines very seriously and some of the techniques he has implemented are super innovative such as the concept of cooperative scheduling. One question for you...what are these .nut files you speak of can you give me an example of what they look like? Are they embedded within the games binary files? Do they exist in textual form or is it some kind of bytecode data? I'm asking because if they are simply plain text files that are fed into the squirrel VM engine that would hold a ton of info while trying to recreate the game engine as you are. I'm sure you've seen the DeloresDev open source files Ron provided. Looking at the raw .wimpy files, .yack files and the .dinky files are super helpful in understanding how the engine works but I do know that this engine is different than TP. Btw, I posted documentation online for DeloresDev: https://deckarep.github.io/DeloresDev/HelpDocsHtml/home.html (which again I know is a different game/scripting engine but I'm sure these docs have some overlap with TP) so they may be of use to you. I really, really appreciate you taking the time to provide your links and talk about your process and I hope more questions are ok down the road! BTW, I read your blog about re-creating a room in TP using Monkey Island assets and additionally the article about Pathfinding. Top notch stuff! Cheers! |
cutscene(@()
{
breakwhilerunning(Opening.playOpening())
breakwhilerunning(TitleCards.showPartMeeting())
// and so on
}) These script files are integrated in a package file named
This is the case, but you have to code all the methods that are specific to an adventure game engine, the list of methods is huge, you can have a preview of these methods here, this list is not complete.
Yes, it was very interesting but at this time I already reversed almost all the methods, but it helped to create
Actually, there was also a documentation made for
I'm happy to read other developer's blogs and when someone is sharing his knowledge so it feels natural to do the same.
Thank you, that means a lot to me. Have a nice day. |
Another grand reply from you @scemino! A million thank you's for doing this. I'll definitely get my hands on the TP game first and the asset files and take a look at the .nut files. After our last conversation I was able to get a port of Ron's code working in Lua using native coroutine support. So far it works and I've been able to stub out a very small piece of the library recreating his video test. From this script test. Here is the example code (but not all): local function bounceImage(...)
local args = {...}
local x = love.math.random(0, WIDTH);
local y = love.math.random(0, HEIGHT);
local degrees = love.math.random(0, 360)
local factor = 10
local imgObj = args[2]
while true do
local steps = love.math.random(100.0*factor, 150.0*factor)
local end_x = love.math.random(0, WIDTH);
local end_y = love.math.random(0, HEIGHT);
local dx = (end_x - x) / steps;
local dy = (end_y - y) / steps;
for i=0, steps do
x = x + dx;
y = y + dy;
api.imageAt(imgObj, x, y)
api.breakhere(1);
end
end
end Even though I had to pull off a little ugly magic, it seems his model of concurrency works nearly the same in Lua despite having to write a bit of bootstrap logic. I'm mostly doing this to learn his game development methods that he has seemed to carry over from the I would say that these techniques weren't invented by Ron, but I believe he might have been the first to leverage this model of concurrency for game development. I could be wrong. Nevertheless modeling code as small cooperative scheduling tasks is a really, really cool way to build complex cutscenes without the use of state machines or ugly asynchronous code. |
Nice I started with this but with c++ and squirrel.
Yes this scheduling mode is really nice to create easily some script.
Exactly and have a look to his yack files is also interesting because it's really easy to create dialogs, conditions and animations with this format. |
Love this open source engine!
Just curious what method you used to be able to run the game? Is it simply a matter of reverse engineering the original games executable? Looking at all the assembly and rewriting it in regular code?
Amazing! I’m just here to learn.
The text was updated successfully, but these errors were encountered: