3D isometric game engine


Jeanmilost 2021-01-01 22:08 (Edited)

This is the core engine of the small 3D isometric game on which I’m currently working.

About the full game, I’m currently working on the levels design, and there is still a long way until reach the game I want to release. So it will probably be terminated a day, I just don’t know when 🙂

On the meantime, I also published this engine to allow all other members of this community to use this code for their own projects, if they want.

The v0.1 contains the following features:
- A main character
- A standard background
- 4 working doors
- Trigger zone detection functions
- A fade in/fade out transition effect
- A scrollable text display

In the v0.2, the following features were added:
- Isometric projection instead of pseudo-3D coordinates
- New objects in the scene, with Z sorting
- Collision detection with objects in scene, using 3D boxes
- Several code improvements

In the v0.3, the following changes were performed:
- Added an option to use the diagonals (by pressing A) of the controls to move the character instead of the standard axis (by pressing B), as proposed by was8bit.

In the v0.4, the following changes were performed:
- Added a robot, and an amount of life to player the robot may remove
- Added graphical and sound resources in order to create future game levels

In the v0.5, the following changes were performed:
- Now doors visibility may be configured in the level data
- Added array for the wallet items, and empty slots are shown

In the v0.6, the following changes were performed:
- Just updated the application screenshot 🙂

Have fun 😎

Isometric3D v0.5.nx | Open in app
2021-08-07 22:12
Isometric3D v0.4.nx | Open in app
2021-08-07 20:08
Isometric3D v0.3.nx | Open in app
2021-02-18 04:13
Isometric3D v0.2.nx | Open in app
2021-02-16 04:32
Isometric3D.nx | Open in app
2021-01-01 22:08

was8bit 2021-01-02 05:01


DrGonzo 2021-01-02 10:36

Amazing!!! Gj

Jeanmilost 2021-01-02 14:36

Thanx to all 🙂

Greenpilloz 2021-01-04 19:41

Nice transitions ;-)

Mrlegoboy 2021-01-21 08:52

This is really symbolic

was8bit 2021-02-16 05:54

Looking good :)

I keep getting the controls confused... i made controls that are easier for me..

Jeanmilost 2021-02-18 04:09

@was8bit Thank you for the suggestion. I tried, and indeed the controls are more logical, but I think them less precise this way, at least I prefer the previous system. But as it’s a question of opinions, I think the better is to keep the both, and let the user to choose his preference in the start menu, when there will have one. For that reason I kept your idea side by side with mine, and for the current code, the controls may now be changed by pressing A (diagonals) or B (standard).

was8bit 2021-02-18 04:24 (Edited)

That is a cool idea :) ... you are correct that since there isnt dedicated Diagonal buttons, it is abit more clumsier to hit both buttoms for the diagonal...

changing the gamepad size can make it easier... i am very greatful for the ability to change the gamepad size.... i have bigger clumsier fingers/thumbs so i always have trouble with virtual controls and virtual keyboards... even so i can still struggle abit with the gamepad...it is why i can never play games here that require precision control... i am also very slightly dyslexic, so getting the correct precise combination of keystrokes quickly is virtually impossible for me in a fast paced game..

That is probably why the original controls kept getting me confused... very greatful for the diagonal control option :)

was8bit 2021-02-18 04:30

I have monitored how i use the gamepad, and i usually keep my thumb down on it the entire time and drag my thumb arround to get the direction i want

When i force myself to only tap, my thumb always drifts off in a random direction and i end up not hitting what i think i was hitting, or not hitting anything at all...

Jeanmilost 2021-02-20 18:04

@was8bit These are very interesting considerations. It’s true that a good application should always consider that users may interact with it in different manners, and remain as flexible as possible to offer the best experience for everyone. I'm happy to know that a such option is so important for you, and I will of course include it in the final game. Thank you for the sharing of your experience.

was8bit 2021-02-20 19:05

And thank you, for the consideration, as well as all the wonderful games and ideas you share :D

was8bit 2021-02-20 19:16 (Edited)

Speaking on this topic, i have learned a few things that help improve the playability of my games for others...

1) I used to make my own buttons to replace the gamepad standard... it was fun, was more creative, and more flexible... however Timo reminded me that this made the game harder for those playing it on windows with a keyboard... so now i stick with gamepad

2) as i virtually always am on my big ipad, i had made some touchscreen games with single cell touch precision.... great for making a complicated game with my ipad, but Timo pointed out that on a cell phone the minimum size for accurate touch is a 2x2 cell area.. so now thats what i do, and i also test my touchscreen games on a cellphone to be sure it can be seen and played well...

3) I know a lot of people who only have android cellphones, and they although they can visit this website, they cannot download and play my games... i have realized that IF i make a game that responds generically to ANY tap on the screen as its sole control, that these people could play THAT game on their android browser directly from this website ;) ... although i havent been proficient yet coming up with good games with only a generic TAP to play the game, it is an exciting challenge to consider :)

For example , my latest SLOT MACHINE game, although not very exciting, is playable by android users directly from this website...

Greenpilloz 2021-02-22 12:45

Hmm, it depend on the phone used.. With mine even single touch games are unplayable from the web browser and the all thing is lagging like hell (that's why I did the RetroArch core ;-) )

was8bit 2021-02-22 13:02

Ah, lagging can cause issues..

Jeanmilost 2021-02-27 15:48

@was8bit I also faced a lot of issues when I tested my projects onto other computers. For example, one day I ran a small game I created (named « The Forgotten Treasure ») on my computer. I noticed that the game was incredibly more easy than on my iPhone, where I wrote it. This was because the keyboard allowed quicker moves which were significantly more difficult to perform with the pad provided on the iPhone. I think that these are this kind of issues a professional game developer is continually facing while it creates his projects. This is really a very interesting question.

was8bit 2021-02-27 19:43 (Edited)

Thats a good point... i haven't tested on a computer in awhile... so your point on that is very interesting...

On that note, on the old apple2e, the keyboard was significantly different than the ibm keyboard.... i am not sure about apple keyboards today, but an ibm keyboard only allows one keypress at a time... old dos games which allowed 2 players, then, could not have TRUE 2 players on the keyboard, as all you had to do to disable your opponent was tap your control keys faster than them, and you effectively override their keypresses... on the old apple2e, it could register several keypresses simultaneously, at least 4 at a time i believe... it was one way you could password your files by making a few letters of the file name a muliti-keypress, CTRL+LETTER was a common one...

NX allows all multiple presses except UP+DOWN or LEFT+RIGHT..

This has inspired me to make a tester...


If you have any ideas to make it better, let me know... one that i am thinking of is perhaps speed of executing a keypress pattern (if done correctly)....

was8bit 2021-08-08 06:30

Nice additions :)

Jeanmilost 2021-08-12 02:07

Thx 🙂

nitrofurano 2022-12-20 23:35

reminds me so many cool zx-spectrum games like Batman, Head Over Heels, Pentagram, etc.

Jeanmilost 2022-12-21 21:48

Thank you. I also created a complete game using this engine if you’re interested:

Log in to reply.