Author Topic: yeti3d game engine  (Read 29721 times)

zear (OP)

  • Moderator
  • Posts: 2381
yeti3d game engine
« on: January 19, 2010, 10:03:54 pm »
Hey guys, this time I ported a gp2x version of Yeti3D - a 3D game engine.

That thing is damn fast! You should definitely try it.

Download: Dingoo File Archive (source code included)

I hope that someone with the proper skills will be interested in continuing developement of this fine engine and perhaps write a working shooter.
What you think CongoZombie? ;)
« Last Edit: January 19, 2010, 10:39:24 pm by zear »

volcanic

  • Guest
Re: yeti3d game engine
« Reply #1 on: January 20, 2010, 02:00:15 am »
Hey guys, this time I ported a gp2x version of Yeti3D - a 3D game engine.

That thing is damn fast! You should definitely try it.

Download: Dingoo File Archive (source code included)

I hope that someone with the proper skills will be interested in continuing developement of this fine engine and perhaps write a working shooter.
What you think CongoZombie? ;)
Wow!That's amazing!!

QBert

  • Guest
Re: yeti3d game engine
« Reply #2 on: January 20, 2010, 04:21:31 am »
Very impressive! Shame it's not much more than a demo at this point.

buzzphp

  • Guest
Re: yeti3d game engine
« Reply #3 on: September 27, 2010, 06:51:45 pm »
I will just leave this here:

http://sourceforge.net/projects/yeti3dpro/

Regards
Derek Evans
http://www.buzzphp.com



« Last Edit: September 28, 2010, 02:20:50 pm by buzzphp »

zear (OP)

  • Moderator
  • Posts: 2381
Re: yeti3d game engine
« Reply #4 on: September 27, 2010, 07:45:21 pm »
I will just leave this here:

http://www.buzzphp.com/yeti3d/
Hmm.. yeti3d PRO.. is this even legal? :)
And I see this is only the core source code, lacking datafiles, so I think it is useful only for developement. Also, the lack of any Makefiles makes it harder to fiddle with.
Anyway, thanks for the source.

Edit: A quick search in google revealed that you're the original Yeti3D developer :D
First, good job on this engine, it looks really fresh.
Second, any hints on how to compile it? As mentioned before, it lacks any makefiles and the code is a bit scattered without any hints what is where and how to start with it.
I realize Yeti3D has it's own limitations (like no room-over room, grid like levels, poor collision detection of the AI, no elevators and such), but I think it could still be used to write a cool FPS, especially that it supports software 3d models unlike build or idtech1 engines.
« Last Edit: September 27, 2010, 08:08:03 pm by zear »

buzzphp

  • Guest
Re: yeti3d game engine
« Reply #5 on: September 28, 2010, 02:00:22 pm »
All good questions.

First up, I haven't much interest in this project and have no interest uploading the entire project. The full project included all the original models, textures and console tools to convert files into Yeti3D format.  But, there is enough information there to sus out the engine.

There is a lot in Yeti3D that people dont know about. ie: Transparent floors and bridges can be created using planks made from objects. I did have a bridge working at one stage by walking on objects, and yes, you could walk underneith

People only saw Yeti3D as being a FPS engine, but I know it can be modified for a number of other game types. You just have to think outside the box.

It was Yeti3D downfall IMO. No one seemed to see that all kinds of games can be created.

At one stage I had a car racing game with a camera that circled the track. So, you basiclly drove little cars over the track with a side on view.

Something simple like that would rock, but noone seemed to get it.

I can point the camera down, and make a 3d platform game. You would need to scroll the 64x64 map, but it could be done. Or, just a simple fighting game between MD2 models.

Simple!!! Why does everyone always think, FPS?

Problem is, no one seem to see potential, or had the vision to get it done.

And lord knows, I wasn't going todo all the work!!!!!!!!
« Last Edit: September 28, 2010, 02:23:14 pm by buzzphp »

zear (OP)

  • Moderator
  • Posts: 2381
Re: yeti3d game engine
« Reply #6 on: September 28, 2010, 03:05:48 pm »
Now when you gave the examples of nonFPS games, my mind is full of cool ideas this engine could be used with:
* a 3d platformer like Super Mario 64 or Croc: Legend of Gobbos with 360' rotational camera and tpp view
* a 3d roguelike/rpg, maybe even realtime hack&slash like Fleshchasmer
* a mystery/horror game like Resident Evil series of 7 Days from Dingoo Native OS
* a 3d chess/other board games program

The current drawback of yeti3d on the dingoo is that if I display a couple of 3d models on the screen, the game is starting to lag. But I guess it could be optimized yet if it was able to run on a gba. And of course some of the objects could still use sprites, a good example of using both 3d models and sprites is Super Mario 64.

Anyway, I myself am not a programmer, so I can't really fiddle much with the engine if it involves modifying the source code rather than just recompiling it, but I'd like to raise the potential this engine has to offer and I hope some of the developers lurking on that forums will find it interesting enough to start fiddling with it.
« Last Edit: September 28, 2010, 03:07:20 pm by zear »

buzzphp

  • Guest
Re: yeti3d game engine
« Reply #7 on: September 29, 2010, 05:43:58 am »
Cool. Yea, Ive never heard of a dingoo. I looked at the specs, and I see no reason why it wouldnt run a native Yeti3D PRO nicely.

Anyway, the code is there. My favourite world is E1M5.y3d
You can view is by downloading the editor. Sorry about the monsters running though walls. That was part of a car racing game.

Here is what I would do if I was working on Yeti3D again:

1) Compile the editor. I think it needs C++Builder v6+
2) Calculate the LUT's, Sin Tables and Reciprical tables at runtime. there is code in the editor for the LUT's if you look (Search for yeti_lua_init)
3) Load the textures at run time. I'd use the Generalized Bitmap Module (GBM) library to load PNG's. I'd write the code so it would load any sized 8bit PNG's with each 64x64 being a texture. The code would also grab the palette and generate the LUT's
4) Write a loader for sprites. Again, I'd use GBM and convert the bitmaps to 16bit (5:5:5 RGB) sprites. The format is pretty simple.
5) Write a loader for the Y3D world maps. This would be dead simple. The original binary files are there. Just, load them at runtime.
6) write a loader for the Yeti3D model format. This format is defined in the MD2Viewer tool. The model format is about the best you will do for rendering MD2 models using fix point math, 16bit graphic, ARM processors based platforms.

The difficult thing about some of this will be to export the original binary files out from the C files. I know how I would do this :-) (EDIT: Ok, I'll tell ya. Compile the models, and use C functions to write out the arrays to files)

From there, I would start removing some of the code designed for slower processors. Yeti3D contains fast code for polygon projection, clipping and rendering.

From memory, I think there are about 4-5 different polygon texture mapping algorithms in Yeti3D. The best being dithered, perspective correct texture mapper with vertex lighting. The worst being a constant slope texture mapper used for models. (From memory, the algorithm is the same as what the PS1 used in hardware and the algorithm is very hard to find these days)

This should take a week at the most.

I would then most likely start converting to C++ and improving the function naming. This would just be so the code is easier to use, since C++ IDE's support some nice coding helpers.

I would also look into the map grouping code. A lot of Yeti3D's speed came from grouping cells together that could be rendered as one larger cell. But, that ment the lighting suffered. The balance depends on your platform speed I guess.

Anyway. Those are just some tips or insights for people that are interested.

A lot of people criticized Yeti3D without really understanding why it's design was the way it is. The engine was designed to work on low end hardware, while also being able to scale up. Some people compared it to Quake, which I found very odd. Yeti3D was designed to be a set of reusable graphic algorithms with a back-to-front cell based rendering sceme. The system would work for a number of game types with a high frame rate and colourful visuals. But, noone got that. (Maybe it was my fault focusing on a FPS demo)

The code also renders 3D worlds without any Z buffering, and the ray casting VIS algorithm is IMHO, still the best way to manage back to front rendering as well as rendering only what is visible. Ooo, I'd also look into the sky rendering code. I think that could be improved a little. Maybe.

ORRRRRR. You can just hack out what ever code you need. The image rendering code is still second to none. Check out y3d_image.c. That code was developed over a number of years and is still a very fast bitmap stretching algorithm.

The 24:8 fix point rotation maths and the texture mapping algorithms in Yeti3D is still the best ANSIC you will find. (Thats just my opinion) There are "better looking" algorithms, but they tend to be very slow. In its time, Y3D was rendering 2-3, 500 polygon models in a 16bit coloured lit 3D world on a Gameboy advanced at resonable speed. (IMHO, the speed wasn't up to a commercial standard, but it still looked ok-ish)

PS: I just saw that there is some y3d_fruity.c code in there. This code was going to be a colour 3D "mario brothers" style graphic rendering. Models were going to be simple colours, but with nice shading. There is also a 2D span clipping algorithm in there which is from an old BSP engine I wrote at University. It allows polygons to be rendered from front-to-back without overlap. None of this code was ever used.

Cheers
Derek Evans
Buzz PHP Class Library
http://www.buzzphp.com/
« Last Edit: September 29, 2010, 06:11:33 am by buzzphp »

alemaxx

  • Posts: 57
Re: yeti3d game engine
« Reply #8 on: November 29, 2010, 10:41:41 pm »
Hi Derek, very nice engine and a pleasure to port! I converted it to the spmp8000/letcool the only trouble I had was getting the colour format right. (binary can be found here: http://alemaxx.al.funpic.de/spmp8000/yeti3d.zip and Ill upload the modiied source if somebody wants it)

EXL

  • Posts: 29
Re: yeti3d game engine
« Reply #9 on: November 30, 2010, 09:22:26 am »
Hello again everyone!
I tried to compile the Yeti 3D pro for Dingux.

You can check if it works at all?  :-\

DownLoad (My blog)

zear (OP)

  • Moderator
  • Posts: 2381
Re: yeti3d game engine
« Reply #10 on: November 30, 2010, 01:39:22 pm »
You can check if it works at all?  :-\
Yep, it does.
And the performance is incredible. A lot faster than the GP2X port. Almost constant fullseed.
This totally deserves a proper game based on this engine.

EXL

  • Posts: 29
Re: yeti3d game engine
« Reply #11 on: November 30, 2010, 03:03:29 pm »
You can check if it works at all?  :-\
Yep, it does.
And the performance is incredible. A lot faster than the GP2X port. Almost constant fullseed.
This totally deserves a proper game based on this engine.

I am glad that the game will run! But I can not understand where the bug with transparent walls. Maybe someone knows how to solve it?

zear (OP)

  • Moderator
  • Posts: 2381
Re: yeti3d game engine
« Reply #12 on: November 30, 2010, 03:10:32 pm »
You mean you can walk through the walls?
I think at some point buzzphp mentioned he was in the middle of rewriting the engine for a racing game. This must be an effect of this. Notice how you can "climb" on any platform by going through the wall. When there's no platform above the wall, it must just put you on top of the map, hence the graphics glitch.
« Last Edit: November 30, 2010, 03:12:13 pm by zear »

EXL

  • Posts: 29
Re: yeti3d game engine
« Reply #13 on: November 30, 2010, 03:59:08 pm »
You mean you can walk through the walls?
I think at some point buzzphp mentioned he was in the middle of rewriting the engine for a racing game. This must be an effect of this. Notice how you can "climb" on any platform by going through the wall. When there's no platform above the wall, it must just put you on top of the map, hence the graphics glitch.

Yes, as if activated "noclip" )
In the version Yeti3D without the pro this was not

zear (OP)

  • Moderator
  • Posts: 2381
Re: yeti3d game engine
« Reply #14 on: November 30, 2010, 04:19:16 pm »
Ok, here's a little gameplay video:
<a href="https://web.archive.org/web/20221002181710/https://www.youtube.com/watch?v=7i9QglaeuMk" target="_blank">https://www.youtube.com/watch?v=7i9QglaeuMk</a>
I cycle thought multiple maps available in this version, that's why the scenery changes rapidly once in a while (also, it shows how fast the levels are being loaded).

lemmywinks

  • Posts: 2885
Re: yeti3d game engine
« Reply #15 on: November 30, 2010, 07:50:00 pm »
Wow this looks great, i remember it from GBA days and wondered what becme of it

A game built on this engine would rule!
Handhelds:
GPD Win, GPD XD 64gb, PlayGo, RS-90, 3DS XL, DSi XL, GBA SP, GBBC Clone, Gameboy Pocket c/w screen mod, PSP Go
PC:
ASUS TUF, Medion Erazer, Toshiba Z20t, Dell Mini 9, Psion 5MX, Toshiba 3480ct
Tons of other old laptops and tablets.....

campusten

  • Guest
Re: yeti3d game engine
« Reply #16 on: November 30, 2010, 09:57:55 pm »
Looking at that gameplay video gives me great memories of half-life.  Talking about that, how great would half-life on the dingoo be?

EXL

  • Posts: 29
Re: yeti3d game engine
« Reply #17 on: December 01, 2010, 09:19:48 am »
Ok, here's a little gameplay video:
I cycle thought multiple maps available in this version, that's why the scenery changes rapidly once in a while (also, it shows how fast the levels are being loaded).

<a href="https://web.archive.org/web/20221002181710/https://www.youtube.com/watch?v=-sikkERQMrg" target="_blank">https://www.youtube.com/watch?v=-sikkERQMrg</a>
Have you seen this bug with passing through walls? Is there a similar bug in the version for Dingoo?

zear (OP)

  • Moderator
  • Posts: 2381
Re: yeti3d game engine
« Reply #18 on: December 01, 2010, 02:55:58 pm »
Have you seen this bug with passing through walls? Is there a similar bug in the version for Dingoo?
Yes, this is exactly what I was talking about before.
From my understanding this version of the engine was meant to be a racing game, so this strange behaviour is probably caused by the fact, a car is supposed to ride up/down the hilly scenery. And 90 deg walls are also treated the same way, so when you touch a wall, it simply puts you on top of it. And for the walls that have no platforms on the top, it simply puts you on the top of the level, where's no background to be rendered, hence the bug.

l1nk3rn3l

  • Guest
Re: yeti3d game engine
« Reply #19 on: March 02, 2011, 11:53:52 am »
Have you seen this bug with passing through walls? Is there a similar bug in the version for Dingoo?
Yes, this is exactly what I was talking about before.
From my understanding this version of the engine was meant to be a racing game, so this strange behaviour is probably caused by the fact, a car is supposed to ride up/down the hilly scenery. And 90 deg walls are also treated the same way, so when you touch a wall, it simply puts you on top of it. And for the walls that have no platforms on the top, it simply puts you on the top of the level, where's no background to be rendered, hence the bug.


TO FIX THE BUG PLEASE REPLACE THE void player_init(entity_t* e)  FUNCTION IN "GAME.C" FOR THIS CODE:

void player_init(entity_t* e)
{
  e->radius = 50;
  e->nocollision=0;
  e->ontick = player_tick;
  animation_init(&e->animation, 0, 0, 8, 192, LOOP_FOREVER);
}


THat'S ALL FOLKS!!!!!

VISIT THE YETI3D WRAPPER FOR BENNU IN

http://code.google.com/p/yeti3dplusplus/
« Last Edit: March 14, 2011, 05:04:37 am by l1nk3rn3l »