Here is something I've been experimenting with in my free time trying to rehash a bit of my very own 1990s childhood's nostalgia with a modern game engine spin on it...
<click image to watch>
(https://i3.ytimg.com/vi/QekTuBIHfrw/maxresdefault.jpg) (https://youtu.be/QekTuBIHfrw)
<click image to watch>
Now... I am aware that this is a VERY dedicated community and so before anyone gets riled up about the footage I'd like to state that this is just a personal project that I compiled together out of my very own nostalgic drive and interest to see Stunts rendered in a more modern game engine...
Work on this multiplayer capable prototype might seize at any point in time with or without a public build release...
With that being said I am constantly interested in working together with other people in the game industry so in case you have experience with game development in general or Unreal Engine in particular and in case you find this project interesting to work on, always feel free to drop me an e-mail or message...
Looks cool! Is there a non-public alpha build available on request?
I personally don't know much about game development in general, and all I know about the Unreal Engine is that it is said that vehicles are hard to do with it. :o ;D
I understand why looking at the recent forum activity makes us look a little... overzealous. But we're generally not that scary, and we're trying to better our lives.
Hey @Overdrijf, it was more of a general precautional term (as we currently seem to globally experience crazy times) and was not specifically directed at any recent forum activity ;)
Currently there are no downloadable builds of this project available as major features (like being able to load and distribute Tracks saved with the BLISS editor and have them propagated across all connected players in the network at runtime) have not yet been implemented.
The showcased example Track was manually placed.
The problems with a remake "in a modern engine" are:
1. If the car will move differently, people who play Stunts won't be interested in it (I should know).
2. Even if the car will move exactly like in the original game, the remake won't run on everyone's computer and people who can run it will have an unfair advantage in the races (higher framerate, resolution and viewing distance), compared to the others. This problem will be made even worse if a nonfree engine, such as "Unreal Engine" or "Unity", is used.
I am aware that a multiplayer support feature is already a niche category within a niche playerbase of a niche game (Stunts).
But for people like me that played the game back in 1990 and only could dream of being able to share the Stunts Universe with other players in real-time, projects like Stunts Multiplayer Client and Server for DOSBox (https://forum.stunts.hu/index.php?topic=4029.0) by kurtis2221 are an absolute godsend.
Even though more than 90% of the community probably couldn't care less about multiplayer I think it is an outstanding achievement, especially when you consider that no official source code for Stunts was ever released.
@Matei:
1. Will eventually be solved once the game's codebase has been completely reverse engineered and thus can be ported to newer languages and OSs.
2. There are lots of ways (for example to lock physics simulations and netcode to a fixed tick rate) to prevent ppl with more performance to gain an unfair advantage or different behavior so I would consider this point to actually be a non issue too.
Should enough people be interested and get involved in the financing and development, I am convinced that such a project could be completely setup as an open source project even with Unreal Engine.
It looks cool. And I would also like to play it if possible.
In general, not specifically related to your project.
Looking at the video I realised again how unrealistic stunts physics are, and at the same time is that exactly why remakes don't feel the same. (I have to admit by that that TrackMania actually gets quite close)..
Stunts cars have no suspension, they don't learn, wobble or bounce. I am not sure if a "off the shelf" physics engine can do that. But since it is stated as bad choice for racing games, maybe the unreal engine is "bad enough" in this case to provide a stunts feeling..
If you want that, 8) we (definitely me) are happy to assist.
The Quake engine is even worse, why don't you use that?
https://www.moddb.com/mods/quake-rally
Looking at the video, the bounciness might be a bit excessive, and it's triggered by any segment of road (e.g., on the cork up/down). In a way it's similar to Matei's simulator: the reactions of the cars to terrain and environment feel too extreme 🤔
I just saw the video (I thought it was just a picture). It is indeed very close to what I have, but the reactions of the cars to the terrain are not too extreme. The terrain is too extreme.
https://forum.stunts.hu/index.php?topic=4243.msg92742#msg92742
Must be logged in too see the picture. Right now I'm working on something else, but the game is already available, as previously mentioned. It will have tracks from Stunts as soon as possible, but those will be just a bonus and it will never be like Stunts. The cars in Stunts don't move like cars at all.
[edit]
Actually, Stunts would work really well with other type of vehicles, like those found in Stars Wars Pipsqueak, for instance. The cars already move like there, so all that's needed are some appropriate 3D models and sounds.
https://redirect.invidious.io/watch?v=BmEo3NYKXrg
The same goes for Trackmania, obviously.
[/edit]
I was honestly surprised how the assets of a game released 34 years ago still basically work on an engine released 3 decades later.
I personally think that before any serious and 100% true to the original remake (1:1 physics behavior) can commence, the original Stunts needs to be completely reverse engineered so it can be ported to any existing engine and still behave like the original.
Now I don't know about everyone else but I personally noticed over the years that if one really wants to achieve results (especially when it involves significant coding/programming related issues), investing money and establish contact with capable programmers for a specific task is the only way to achieve substantial progress in a tolerable amount of time.
Even if it turns out to be less than 30 people, if we all put our will and resources together it should be well achievable, which is why I wonder whether there have been attempts in the past by this community to make this happen instead of leaving it to time and single individuals in their free time only ?
If there weren't any coordinated efforts so far, how would you guys feel about finally trying to come together regarding the reverse engineering of Stunts ?
I am truly convinced everyone will benefit (even the die hard Stunts conservatives that love and enjoy the original Stunts builds only, as it would open up an unlimited supply of modding and customization even for the original DOS based game).
Although reverse engineering Stunts would be a very good thing to do if you want to study and experiment with reverse engineering, this doesn't work if you pay someone else to do it. Anyway, why wouldn't "the assets" work? They are just 3D models, but I'm interested to find out where you got them from, because I got them from Mr. Cas. Personally, I wouldn't even reverse engineer his free and open source programs written in FreeBasic.
[edit]
I estimate that completely "reverse engineering" Stunts would be rather difficult, although if, by any chance, the Chinese government will want it done, I can assure you that it will be done. However, although Elite for ZX Spectrum was a much simpler game:
https://forum.stunts.hu/index.php?topic=4243.msg92791#msg92791
QuoteOh yeah - a 6502 hex dump - just a pigging list of numbers. In the end we wrote our version by playing Elite on a Beeb and making ours look the same.
[/edit]
There was a period of time in the middle to late decade of 2000, when at least three community members cooperated to reverse engineer Stunts. While the process was not completed in the way they planned, a very great advance was made.
Thanks to them, we currently have a source code (in assembly) that builds to Stunts. The original intention was to port all this to C... for DOS, originally. Some translation began, but most of the code has always remained in assembly.
I, personally, think that there is no need to fully create a C equivalent of the complete Stunts code because many parts of it can really be reproduced much more easily by just looking at the behaviour and doing the same because they're very simple, such as the menus, for example, but also, with a little effort, things like the intro or the internal track editor. Besides, we don't really need to replicate the intro and we have external editors. About graphics rendering, any rendering that resembles the essence of Stunts is good enough. So what really needs to be reverse-engineer is solely the physics engine.
And even that, which is the most cryptic part of the code, in my opinion, does not need to be interpreted or copied. As long as a physics engine is made that feels like Stunts in the sense that, if you play on it, you really can't tell the difference, even if they are not compatible as to be able to reproduce the same result... as long as that is done... it'll be enough. But... it turns out it's not easy to build a physics engine.
If it weren't that my job consumes all my energies, I'd be putting a lot more time into it. But well, what I want to point out here is that there are some things we would like Stunts to have and it doesn't... but there are also things it has that we don't want to change. The key here is understanding which are which. We don't all agree exactly, but we have a generally good consensus on this.
To give just a few examples:
- We would like to be able to make bigger tracks, to are new track elements, etc.
- We would not like an engine to feel more realistic
- We would like to play multiplayer Stunts
- We would not want to change the way the game looks except simple things such as smaller pixels
- We would like the game to run natively on GNU/Linux and Windows
- We would like the game to be free software
- We wouldn't want a new game that's "Stunts' sequel", but Stunts itself to be improved (a new engine or mods)
Things in which not all members think the same way or may have doubts:
- Programming language and libraries to choose
- Whether the program taking a lot of space matters or not
- Whether maintaining DOS support is important
- Data file format to use
Quote from: Oneofthe8devilz on February 27, 2024, 10:54:32 AMI personally think that before any serious and 100% true to the original remake (1:1 physics behavior) can commence, the original Stunts needs to be completely reverse engineered so it can be ported to any existing engine and still behave like the original.
Yep, that is my feeling as well, with
@Cas' caveats of "maybe we don't need to reverse engineer the menues, track editor, etc". But the game simulation can, in my opinion, be fully understood only by reverse engineering. Any independent reproduction will not include all the bugs and behaviours that make Stunts what it is. See the successful work around Dungeon Keeper / KeeperFX.
The Restunts effort (mirror (https://bitbucket.org/dreadnaut/restunts/src/master/)) laid the foundations thought. With some leadership it could advance, one method at a time, until the simulation if fully translated and understood. From there, the road opens up!
@Cas
The points you mention all read very reasonable to me and I can't really find anything I would disagree about.
I still think from a "staying true to the original" point of view though that I would prefer a complete reverse engineered and then ported STUNTS codebase from assembly to C, C++ or C# (whichever language turns out to be the best choice in the end for a multiplatform portation) that then can be made run natively on all modern OSs (maybe even including mobile platforms with ensured crossplatform multiplayer functionality).
This would also allow for a feature where one could implement a "switch to the Original vs Remake Graphics&Sounds at Runtime" functionality aka as "Classic Mode" as showcased in games such as Halo Remastered for example:
(https://i.ibb.co/HxGDfL4/Halo-Classic.png)
The point I am trying to make is that it took 34 years to get where we currently are with STUNTS and that I believe putting some money behind this enterprise and hiring specialized experts will definitely expedite the process.
All this could and should then of course be open sourced and placed available to everyone's access online via Github & Co.
C, obviously, but why smaller pixels? Trying to figure out what's in front of you is part of the game. Where's the fun if you can just see it?
[edit] Github was bought by Micro$oft, so it's compromised. [/edit]
Yeah, I usually don't push with it because I know that most people using GitHub really mean well in terms of software freedom, but I personally avoid GitHub (not just uploading things to it, but downloading them from it if there's an alternative) because of that reason. And I agree, if it's about standard language, we're talking about C. It's veeeery far from perfect, but it's the only language that can be called a standard.
The points I mentioned, of course, are not a matter of "what's right". I don't think there's one right way. Those points are details about what I feel that we, the members of the Stunts online community, generally would like to have.
Like Dreadnaut said, to really reproduce the behaviour, you need to fully interpret the code. I think it is possible to create from scratch a physics set that's convincingly close, without being compatible, but just how close is something we won't be able to know until we really try hard to do it. And in all honestly, I don't know if it takes less time to comprehensively reverse engineer the physics engine of Stunts or to develop a convincingly close brand new one. I don't know it.
Hiring people... I agree that'd be a great push and probably would also make us want to participate as well... and I don't think we here are not willing to pay. I personally would be happy to contribute. My only fear is that maybe the person(s) won't do it the way we would like or maybe we end up paying and not obtaining what we want. Also, while there are many skilled programmers, I wonder how many are skilled in software based, low level graphics and physics... The few I know about are here in this forum or have been here.
Several questions inevitably are popping up when thinking about this:
Does this community as a whole have the will/conviction to push forward in this direction ?
Does it have the numbers of members willing to contribute financially and structure wise ?
And who is willing to spearhead and lead this endeavor ultimately making decisions and taking responsibility for the utilization of funds and achieved codebase milestones ?
Making a new "engine" is much easier than "reverse engineering", but the cars should be replaced with vehicles like in Star Wars R**er to make it convincing.
[edit]
Added 2 pictures. CPU Celeron 400 MHz from 1999, GNU/Linux distribution Fedora Core 1 from 2003, Stunts runing in DOSEMU 1.4.0, Skunks 5.0.0 SDL 2. This computer is not fast enough to run Stunts in DosBOX, but in DOSEMU it runs perfectly.
[/edit]
[edit2]
The word reverse was used here 16 times so far, but the cars in Stunts still can't reverse.
[/edit2]
I reckon the reason why there hasn't been much (if any) talk about hiring somebody for this lays not in the realm of money investment, but in that of "belonging". I'm not sure of others feel the same way as I or if it really makes sense to put it this way, but from the heart and not from the mind, my feeling is that hiring somebody to do the work would make it less ours and we'd feel less of an attachment to the final product, even if free software.
You will surely argue "Yes, but what's the point if you'll just sit and do nothing and never achieve anything?"... and thinking of this rationally, certainly, that's a very good point. Yet, the heart is the heart. Again, maybe I'm totally mistaken and other community members feel it very different from what I do.
What do you mean "do nothing and never achieve anything"? You made a program which converts tracks and 3D models into text files, so that I can use them.
https://raceforkicks.com/projects/engine.html
Demo video for Bullet Physics:
https://matei.one/invidious.php?v=jQsphRNuqIE
QuoteBut I know we have to try,
See the good things in life,
Feel the magic in our hearts.
I think cas means that it doesn't feel right to pay someone else to do the work while you sit and wait. This is a project that we are very attached to and letting someone else finish it may damage the attachment. Things achieved through hardship and perseverance have more personal value.
And about the physics. It may not be possible to fully reverse the code. But we need enough to fully understand the workings and exactly what causes/makes the bug/features to copy that.
As for the look and feel. A bigger resolution would improve playability and hopefully also bring a new generation of players.
A legacy mode would be obviously part of the package.
Just chiming in to say that I think the remake shown in the video looks great from a graphics perspective. Very nice to have a far/unlimited draw distance and non flickering polygons, yet with models that look like the old stuff. The car suspension seems much more bouncy than the dos game, but I'd totally download this and thoroughly play it if there were a public download.
Uhm... I tried to watch the video, but it looks like a music clip
Well, my engine does that: it renders the whole track and you can move around and we've used it to make multiplayer videos of live races, though I think none has been published. Has one?
There are some things I still haven't fixed in rendering, like... I haven't found a good way to render wheels and some track elements are seen with artifacts not because the engine can't draw that, but because the design is optimised for Stunts' original engine and I can't guess exactly what it does... particularly, regarding Z-bias and especially when the top object is not a polygon (typically, a line). But except the wheel problem, the rest can be solved by re-building the track elements optimised for my engine. They'd look the same
What I have to do is move forward towards physics
It is a music clip. Here's another one:
https://matei.one/invidious.php?v=l5II1EUWbL0
QuoteRemember, Rome wasn't built in a day,
and you just might only make it halfway,
but the change you make just might save the day
for someone in need, so don't back away.
For Daniel3D:
A new generation of players has no reason to be attached to Stunts and for that generation, my game(s) should be close enough and also have that higher resolution. I also happen to know that (almost) no one is interested in them, but I have another idea. I wrote above that the cars in Stunts should be replaced with other vehicles, since they don't move like cars anyway, but the game could also have cars besides those (which is not a problem, because I already have the cars). The idea is not new, actually. Some race examples:
https://redirect.invidious.io/watch?v=bzdNbmZvCSg
https://redirect.invidious.io/watch?v=7NZ9X9A2efA
Is this of any use?
https://www.codeconvert.ai/assembly-to-c-converter (https://www.codeconvert.ai/assembly-to-c-converter)
https://codingfleet.com/code-converter/assembly/c/ (https://codingfleet.com/code-converter/assembly/c/)
You know, to help in the process of unravelling the assembly code.
The thing is this converter interprets each assembly line. The resulting C code is actually redoing the assembly, so it isn't more comprehensive than the assembly code itself and when you compile it, the code will be much longer and redundant. Besides, it's turning registers to variables.
A converter could help if it were aware of how a C compiler produces the resulting assembly code and then recognise the snippets and turn them into their probably original C code.
Yeah,
I know so little about it.
There are better converters like Neutron, but I don't think the code is available.
They are made to refine the code they get out of the disassembly.
People seem to be working on it.
https://github.com/nforest/awesome-decompilation?tab=readme-ov-file#ai-based-decompilation (https://github.com/nforest/awesome-decompilation?tab=readme-ov-file#ai-based-decompilation)
Anyhow, I love the looks of the mod. Beautifully done.
Yeah... the result is better when it's done by a person, but when you have so much code to do comprehensive analysis on, it makes sense to start thinking of ways to automate the process. Not an easy thing. AIs so far can sound very convincing, but they still don't "understand" what they're doing.