News:

Herr Otto Partz says you're all nothing but pipsqueaks!

Main Menu

Other games?...

Started by Matei, February 05, 2024, 02:39:31 PM

Previous topic - Next topic

Matei

Hi there, nice to see that this game is still played in 2024, but it does have some serious limitations, especially concerning the tracks. After you've seen 4 or 5 of them, they all start looking the same. I also saw a discussion about the "physics":

https://forum.stunts.hu/index.php?topic=4189.0

The main problem is that the car moves too much in predetermined ways, not just when it starts sliding, but also during jumps, when it appears to pitch at a constant speed, which is most likely the reason why it can't go backwards. Those predetermined moves just wouldn't work. Also, the image is shaky because of the low resolution combined with low precision integer arithmetic, but this is part of the game. With properly drawn high resolution graphics, the game would most likely not be very entertaining, as a rather unsuccessful remake found at http://ultimatestunts.nl/ suggests.

Aside from that, I have 2 games which, besides being free (as in freedom), have a few things in common with Stunts, such as the fact that they look somewhat similar (and better, I would say) and the fact that they can run on relatively old computers (i.e. Pentium II, without 3D acceleration). If anyone's interested, I could certainly use some help with them. More details are on my site:

https://matei.one/

https://matei.one/idxscr.html

Stunts also runs in Dosemu, btw.

http://www.dosemu.org/

dreadnaut

#1
Hello Matei! Welcome to our forum, and thanks for letting us know about your games.

One piece of feedback, if I may: when you to introduce yourself to a retrogaming community, starting with "your game is boring" might put people in the wrong frame of mind. Not the best marketing strategy ;D   Acknowledging it here, so we can move ahead and talk about your games instead.

I tried SimCar for a bit, and it's interesting! It feels more like a "need for speed" game with a fixed track, without the "open world" of Stunts, but that allows for interesting geometry. The main issue I had with it is that all four cars seems made of paper, and fly and flip very easily. Luckily, some have a decent grip event when sitting on their roof, so it's possible to drive into another object and flip them again.

I did bump (no pun intended) into a bug that sent me flying in the sky at 300+ km/h, and eventually falling into the void.

Overall, not really a game yet, but more than a tech demo. Thanks for bringing it up!

Mate

I never encountered any bug that sends the car flying in the air at 300+ km/h, but the track is indeed surrounded by the void. If you fall, you can just restart. Only the first car can reach 300+ km/h and I think it's possible that you might have bumped into something else, like the start of a bridge, for instance. The viewing distance can be increased, btw, but the track should be redesigned a little to look good in that situation. I'm going to improve both games, but if no one is helping, it will take a while. Stunts is not that boring, I played it quite a bit myself and it's better than what most people are playing these days, but if you want something to work on and develop, in my opinion it's a dead end. Most likely, the cars from Simcar seem made of paper because their power is unlimited and a constant moment is applied to the wheels, regardless of their speed. If you want to do stunts, this doesn't seem like a bad idea to me. In Skunks I limited the power and the game is a little more developed.

Aside from that, posting messages here is quite difficult, because even if I answer the questions correctly, I have to try at least 2 or 3 times.

Matei


dreadnaut

Quote from: Mate on February 05, 2024, 05:58:55 PMAside from that, posting messages here is quite difficult, because even if I answer the questions correctly, I have to try at least 2 or 3 times.

Sorry to hear that. The "guest" features in the forum software are indeed a bit rough, it's definitely easier for those who have an account.

Cas

Hello, Matei!

I had come across Skunks at some point. We've been noticing different approaches at games that either resemble Stunts or have a relatively similar objective. I have to agree with Dreadnaut there, you know, this is a Stunts-loving community. Nobody here consider Stunts even "a little boring", ha, ha.

Anyway, Skunks looks really good and it's nice to see it running and giving a feeling similar to that of Stunts in many aspects. We have wanted to extend Stunts in many ways for years and to some degree, we managed to do it. We can make our own cars and also tracks that would not be allowed by the original games, we have some mods. But there are things we always dream of and we don't have. Like, tracks always have two layers and three levels, that's it. And they're always 30x30. We haven't been able to add new track elements without replacing existing ones and borrowing their physical models. Things like that.

Of the things we like the most about Stunts as it is, probably one of them is how unique cars can be and what they can do. In spite of the crazy physics we get sometimes, racing in Stunts is a lot of fun, allows for the development of skills that make a great difference and get you to really feel the vertigo sometimes. I'm sure the other guys can make a long list of their own favourite things about Stunts.

But if you don't like racing Stunts, this can still be your place. Feel free to join us. See... I do like racing, but I'm a pretty awful pipsqueak myself. I usually do more programming and socials here. I also enjoy making roller-coaster-y tracks. My programming style is very different from the usual trend, but like you, I love free software and that's another thing we'd like from Stunts if it were possible. I have worked on a 3D engine that follows the style of Stunts... and I don't just mean its looks, I mean, that's written from scratch, draws by software, etc. It's kind of a pain, but it has its charm. Now I wanted to develop physics, also the same way, from scratch, no 3rd party code. Maybe I ask myself too much and that's why I'm stuck, ha, ha, but then if I get to do it, I'll be very happy.

I like how you want to keep everything free and try to avoid dependencies. I see you're a GNU/Linux guy too!  Very good!  8)
Earth is my country. Science is my religion.

Matei

I do like Stunts, but there's no racing in it, since a race requires more than one car. TORCS has computer controlled cars, but the tracks are much simpler and last time I played it, the simulation wasn't even 3D. "Roller-coaster-y tracks" are exactly what my games are for. Did you make the track rendering program from https://raceforkicks.com/projects/engine.html? I tried it today, but I could only use the executable, because it's in Freebasic. If the 3D models could be extracted from the original files and converted to some more accessible (text) format, maybe I could do something with them, but I don't know what their copyright situation is. Simcar already has some cars and tracks from TORCS in it.

I first made a 3D rendering program like the one you describe (i.e. from scratch) in 2007, then I made a game with no (or very simple) physics in 2010 (Simcar 1.0.0-4.1.0), then a game with Open Dynamics Engine also in 2010 (Skunks) and after that I figured out how to make a game with physics written from scratch (Simcar 5.0.0+), but I'm also keeping Skunks, because what I made is not quite like Open Dynamics Engine. Then in ~2012 happypenguin.org disappeared, tablets and phones appeared and (almost) no one was interested in this kind of stuff any more. Anyway, now I'm putting the stunts mostly in Simcar and making Skunks a somewhat more realistic simulation. You can obviously use everything I made. The latest graphical functions are documented, so it shouldn't be very hard, but the 3D part is only with triangles (no lines).

I figured out what the problem with the questions was. I was writing "Lightning by Alan Rotoi" instead of "Lightning".

Cas

We have the 3D model format very well documented. You can use Stressed or CarWorks to turn it into OBJ, but then you lose some things that can't be represented there. My engine, the one you saw, has had some additions more recently, but it's essentially the same thing. It reads the actual 3D models from Stunts, but you'll see some glitches. These occur because, while both my engine and Stunts use a Painter's Algorithm, I can't possible guess the exact details they used and then, some things are rendered differently. This can be solved by re-creating some of the models. Also, re-creating them would rid us from licensing problems, so eventually, that could be a solution.

I've been using FreeBasic mostly because of its very small and portable graphics and real-time input library. I would like to work in C, but libraries I found are unnecessarily huge and can't be statically compiled. The way I work, I only need very basic functions from it, because I do mostly everything by hand. I like to make my software so that you can just copy it somewhere and run it without having to install dependencies. I love GNU/Linux, but that particular thing is often one of its weaknesses.

I would like to make a complete graphics+physics engine for Stunts that still looks like Stunts, only native resolution and maybe a few more features (such us more drawing depth, like what I've done) and have it read the original files, so that we still feel we're playing Stunts. And then add modularity to it so that it can grow and be free software. My skills are growing, but there's still a long way to go. So I really admire where you've been able to get to.
Earth is my country. Science is my religion.

Matei

SDL has everything you want. Also:

https://sourceforge.net/projects/simple3d/

"Documentation and compilation instructions inside, for GCC and Open Watcom;

Software rendering, no 3D accelerator required; images can be displayed with SDL-1.2, SDL-2, or saved in a *.bmp file;"

A few people actually asked me whether my game can read original tracks from Stunts. I can use *.OBJ files, so I will try Carwoks (Freebasic again :-"). Thanks.

Matei

Ok, Carworks didn't work and it seems to be only for cars anyway, but I have some suggestions about https://raceforkicks.com/projects/engine.html

You wrote that you only need very basic functions, but you used the function "Line" from Freebasic, which means you can't use a Zbuffer. Anyway, if a track element is close to a terrain element (like the one under it, for instance), you could always draw the terrain before the track. From what I saw, this should solve all the problems. If you want to make a game that looks and plays like Stunts, I suggest you don't try to figure out how the original "physics" work but start with something simple, i.e. some functions for keeping the car parallel to the ground and basic steering and acceleration and then experiment with jumps and other things until you like the result. I noticed a small problem though:

https://www.freebasic.net/forum/viewtopic.php?t=25026

"You have to use some 3rd-party library that implements this as it's not included in the FreeBasic runtime or graphics library."

Daniel3D

Quote from: Matei on February 05, 2024, 08:12:07 PMI do like Stunts, but there's no racing in it, since a race requires more than one car.
Then track mania isn't a racing game either. 8)

But you are partly right.
Stunts in it's bare form is not a game in today's standards.
It a fully functional game engine and not limited by additional "game features".

The game is shaped by the competitions and because stunts is unlimited, nothing you need to unlock, it is therefore equal for everyone.

That gives online competitions the freedom to set the rules and boundaries.

The lack of inbuilt limiting features (And the inclusion of a track editor obviously) is the reason it is still played.
Edison once said,
"I have not failed 10,000 times,
I've successfully found 10,000 ways that will not work."
---------
Currently running over 20 separate instances of Stunts
---------
Check out the STUNTS resources on my Mega (globe icon)

Matei

That's right, Trackmania is not a racing game, but I just noticed something else. If the program from https://raceforkicks.com/projects/engine.html can display all the track, maybe it can save all the triangles and their colours into a text file. If someone were to give me such a text file with all the triangles, I could use it in Simcar right now, just like I did with the tracks from TORCS, and since the tracks from Stunts are very small anyway...

Cas

What Daniel3D mentions about Stunts is very true and reminds me of something I frequently say about DOS when I compare it to modern OSs. I like saying that "the greatness of DOS wasn't in what it would give you, but in how much it wouldn't stop you from doing". Stunts today isn't just the game that came in the box, it's the game, plus what we've created on top of it and I don't just mean software, but the things we like doing with it... like live races, for instance. So... it's the same software, but we've made it a better game.

My little engine is based on a Painter's Algorithm. I did that because that's what Stunts does. This sort of algorithms can be very fast once optimised and if you make your models for it, they can work well. Yet, no Painter's Algorithm is perfect. It is always possible to make them fail. They are a simplification of rendering, a trick. Z-buffer is the "right" way to render 3D graphics. It is much slower, but if very optimise, it can work even in software and in high resolution on modern machines. Now, models made for a Painter's Algorithm won't look good on a Z-buffer in general. You have to recreate them. Z-bias strategies have to be implemented otherwise.

I would love to write a Z-buffer engine for this, but I do think it's worth to also complete my work on this PA-based engine because it's so easy to make it run fast. My code is currently very far from optimal. As you pointed out, I've been using the Line function instead of a blitting routine and it still runs very fast. The Line function is terrible for this purpose: its coordinates are double precision floats and it's designed to draw diagonal, not horizontal, lines, so it make a lot of unnecessary calculations as it draws. My idea is to eventually replace the whole triangle drawing routine with an assembly based one and allow to fall back to this high level one in case you want to compile the game on something other than x86 processors (don't think it will happen). For Z-buffer, this is absolutely required.

What I need from a graphics and real-time input library is:
- Ability to copy a block of memory onto the screen or graphic window
- Ability to read mouse X and Y and buttons at any time
- Ability to retrieve the current status of the keyboard at any time

Anything else is just bloating it. A library like this should take some 500k or less statically linked. Yet, that has been the holy grail I've been looking for for a very long time.

I've made a little game with sound that runs on GNU/Linux on Windows in FreeBasic before. I didn't exactly include a third party library, although the OS API is itself a library, so in a way, it does call a library I didn't write, but that doesn't count because ALSA is practically guaranteed to be found on every GNU/Linux freshly installed. So I read some code another guy had used and created my own little library based on it. It does do something weird with the sound channels, though, I don't know why, but it sounds perfectly OK.

Yep, CarWorks is a little buggy, especially the 3D part... but not because of the rendering. It's because the arrays that handle the primitives are a mess there. I have to rewrite that part. And yes, it's only for cars. But we have Stressed, that can handle other shapes. It's not hard to produce a text file from 3SH files... It'll be a lot larger and slower to load and parse, but it could give you an idea of the structure. If I get the time, I'll try to do something like that for you. Until then.... https://wiki.stunts.hu/wiki/Resource_file_format#3d_shapes

This is the format spec we've developed.
Earth is my country. Science is my religion.

Cas

Sorry, guys, I'm making it too long!

But I forgot to answer this technical thing Matei mentioned. One of the glitches you can see in my engine there is that large objects placed on top of hills or water sometimes experience Z-fighting, as pointed out by Matei.

You were saying, Matei, that I could just draw all terrain first. I have already thought of that, but it isn't that simple. I'll explain the technical details. You'll see that general the 1x1 track elements don't have this Z-fighting problem. This is because I calculate the distances by averaging the four corners of the base of track elements and then I lift that up a little bit to make it closer to somebody looking from the top. That is enough for elements that size. The problem is that bigger elements that are, say, 2x2, have their centre further away and so the centre of the 1x1 hilltop or water "wins the fight". If I force all terrain to be drawn first regardless of distance, I will be able to see objects through hills, so I need to find an intermediate solution.

I can think of many possibilities. One is to create a new object that's 2x2 but actually made of 1x1 hilltop sub elements and place it whenever there's a large object on top. It would work, but I don't like it much because it makes my engine even more dependent on Stunts' grid. Currently, my engine is a little more free than Stunts. For example, you can place objects that are not aligned with the grid and rotate them at any angle around the vertical, not just multiples of 90 degrees. I don't want to lose this freedom.

Stunts clearly solves this by placing everything on a grid. My engine only uses the "grid" when loading the track. After that, all is free. I wanted it to eventually allow for adding more features.

I could also be more "subjective" and add a distance threshold and then, when sorting objects, terrain objects always lose if the distance difference lies within that threshold. It can fail, but it would improve the things.

The real solution to everything is Z-buffering, I know.
Earth is my country. Science is my religion.

Matei

I never wrote that you should draw ALL the terrain first. Anyway, can you adapt the program to output a text file with the parameters of all the triangles of a track, which now it only displays? I suppose it shouldn't be very hard. If you can make a program in C to do that, I will include it in Simcar-5.3.0 and mention your contribution and of course the address of your site(s). I still have to adapt the game to use the latest graphical functions, but that will be Simcar-6.0.0... If you don't want to do it (at least in Freebasic), I will try to figure it out myself from "engine3.bas" and if I succeed, I will mention that you didn't help :P

Quick Reply

Name:
Email:
Verification:
Please leave this box empty:
Type the letters shown in the picture
Listen to the letters / Request another image

Type the letters shown in the picture:
What is the title of the ZCT240 track, from ZakStunts season 2021?:
Shortcuts: ALT+S post or ALT+P preview