Page 1 of 1

Raycasting interactive 3D demo

Posted: Sat Mar 20, 2021 2:44 pm
by jbperin
In order to celebrate the release of the very first Oric 3D raycasting library, I want to share here two little demos that illustrate the use of this technology:
  • proto.tap which is a basic scene (used to test and debug)
  • raycast.tap which is a little bit more complex scene.
These demos are all playable online here (it is hosted at home with a very poor internet bandwidth .. so .. be patient).

Re: Raycasting interactive 3D demo

Posted: Sat Mar 20, 2021 7:11 pm
by xahmol
Very nice!

Re: Raycasting interactive 3D demo

Posted: Mon Mar 22, 2021 8:52 pm
by rax
Excellent!!!. Works very very well. :)

Have you tried to do a demo in a smaller window. I'm really interested in how it will work.

I hope I have free time soon to try it.

p.s. Online link not work (404) :)

Re: Raycasting interactive 3D demo

Posted: Tue Mar 23, 2021 6:57 pm
by jbperin
xahmol wrote:
Sat Mar 20, 2021 7:11 pm
Very nice!
rax wrote:
Mon Mar 22, 2021 8:52 pm
Excellent!!!. Works very very well. :)
Thank you ;-)
rax wrote:
Mon Mar 22, 2021 8:52 pm
Have you tried to do a demo in a smaller window. I'm really interested in how it will work.
I've just updated the proto.tap file to let you see how it works in a smaller window. I sized the viewport exactly the dimension that let enough space for a H3 viewport beside (to show the map) ;-)
rax wrote:
Mon Mar 22, 2021 8:52 pm
p.s. Online link not work (404) :)
Fixed .. for now ... (my RPI )

Re: Raycasting interactive 3D demo

Posted: Tue Mar 23, 2021 8:15 pm
by rax
jbperin wrote:
Tue Mar 23, 2021 6:57 pm
I've just updated the proto.tap file to let you see how it works in a smaller window. I sized the viewport exactly the dimension that let enough space for a H3 viewport beside (to show the map) ;-)
Cooооl! :) Тhanks for my whim. I like it too much. I think this is a fully functional playing field.

Re: Raycasting interactive 3D demo

Posted: Wed Mar 24, 2021 2:21 pm
by jbperin
rax wrote:
Tue Mar 23, 2021 8:15 pm
Тhanks for my whim.
Well, it turns out that there were one or two bugs in the viewport resizing following some recent improvements.
Your whim has been an occasion for me to detect these regression and fix them.
rax wrote:
Tue Mar 23, 2021 8:15 pm
I like it too much.
Thank you :-) I'm glad that you like it.
rax wrote:
Tue Mar 23, 2021 8:15 pm
I think this is a fully functional playing field.
I'm working on a little game to illustrate the use of raycasting in a real time game.
But as I am a very poor game maker, I'm really struggling with the level design task.
I hadn't figured that level design was such a hard task .. :-(

Re: Raycasting interactive 3D demo

Posted: Wed Mar 24, 2021 8:02 pm
by rax
jbperin wrote:
Wed Mar 24, 2021 2:21 pm

But as I am a very poor game maker, I'm really struggling with the level design task.
I hadn't figured that level design was such a hard task .. :-(
True! It is important not to give up, and in the end it works out. :)

Re: Raycasting interactive 3D demo

Posted: Wed Mar 24, 2021 8:31 pm
by ibisum
I think we need SpectreVR for the Oric now, guys. ;)

Re: Raycasting interactive 3D demo

Posted: Thu Mar 25, 2021 12:25 am
by Chema
jbperin wrote:
Wed Mar 24, 2021 2:21 pm
But as I am a very poor game maker, I'm really struggling with the level design task.
I hadn't figured that level design was such a hard task .. :-(
I truly know the feeling :) but, indeed it is a matter of keep trying!

Your engine deserves it!

Re: Raycasting interactive 3D demo

Posted: Thu Mar 25, 2021 8:21 am
by Dbug
Like a lot of things, people don't realize when they see the final result, the amount of time invested to do research, the false leads and the backtracking, the head scratching, etc... same thing with blogging, youtubing, etc... people don't realize that for each minute of video there are many more minutes spent preparing, filming, repeating, editing, etc...

Regarding level design, like many things in video game, the trick is to think in term of "purpose":
- What is the level all about?
- What do we expect the player to do?
- Can we find a parallel between the level and some real life the player could relate to?

The best games are the ones where you instinctively understand what the game is about by just looking at how the level looks like:
- Is there a starting point and an end point?
- Does there seem to be ennemies?
- Are there things to collect?
- Does it looks like a maze with a single path, or are they multiple paths?
- Does the map allow wrap around (ex: Pac Man, Asteroids)
- Does the map looks like a real place (kitchen, castle, factory, ...)

Example:
- if you look at Donkey Kong, you start at the bottom and there's a woman on top screaming "help", instinctively you know that you have to climb up, and things that go down should probably be avoided.
- Manic Miner shows the name of the place on the screen, that gives you a theme for the screen, a framing on which you imagine where things happen
- Pac Man has a center "jail" where ghost moves out from, and the maze itself is designed to allow travelling efficiently, with a fair chance to avoid ghosts so you can win, but it's always a close call, so it feels rewarding.

Regarding the time limit in the "escape maze", the same thing has been done in many games, but the time limit is generally represented by something more entertaining than a count down: Could be the lava or water coming up, fire slowly consuming the forest, soldiers conquering, etc... slowly reducing the movement until you find the exit or get cornered.

Example: The Killing Game Show (water moving up)


This other game, No Buddies Land, has a similar concept, but because it's super hard to distinguish places where you can jump on, is super hard to play and very frustrating:


Among other things that can ruin a game:
- Unfair collisions (the game think you were hit where on screen it's obvious you were not, or you obviously hit the ennemies but nothing happens)
- In 3D games you want "sliding collisions", where the movement continue along the colliding wall instead of forcing you to reverse before you can move again
- Pixel perfect jumps with zero room for error
- Games that are too easy or too hard (it's good to start easier and then get more challenging)
- Traps and ennemies you can't possibly avoid
- Games that are purely tech demos but not interesting to play (typical example: Shadow of the Beast on the Amiga, beautiful but shallow and shitty gameplay)
etc...

Re: Raycasting interactive 3D demo

Posted: Thu Mar 25, 2021 8:01 pm
by jbperin
I think that non-players cannot be good game makers.

And it turns out that I'm not a gamer so I don't think I can produce a good game.

I am aware of that and from the very beginning of my works on Oric I focused on providing game maker with new way to express their creativity in 3D.
I've never considered me as a game maker and I've only tried to find a way to contribute to Oric software asset by bringing new possibilities.

And I'm typically in the situation of creating a game which is a pure tech demo.

Because my goal in creating this game is to:
- make sure that this techno is usable in game,
- demonstrate the use of ray casting in real time game on Oric computers,
- make competent game makers want to create new things with this techno,

In fact, I'm aligned with your proposal of purpose centered design.
Except that my target are not gamers (that I can't really understand because I'm not a gamer) but developpers.

I'm more than 40 yo and it's too late for me to become a gamer and someone who knows what players expect and want.
So I don't believe I can do a great game.

I even think that I'm loosing time by trying to do a good game.

For example yesterday I spent something like 3 hours to find a way to put text attributes in a printf format string.
And I found the solution by looking at rax's code "\033" !!
I'm sure that all game maker here knew the trick. But I didn't.
And that's the reason why I think that I shall better focus on implementing sprites, textured ground and sky or sliding collision
rather than loosing hours to struggle with attributes and user interface that I am not competent to design properly (while oric game makers are able to create wonderful things with almost no effort).

On the other hand, I must admit that I learn a lot by entering this field.
I learn a lot of thing with all the advice that you give me.
But there's no chance that someone can turn me into a good game maker.

As a conclusion I would say that I'm creating a game with ray casting because otherwise castoric will probably never have usage ... just like glOric.

Don't expect too much from this game because it is done by a cheap (newbie) game maker

Re: Raycasting interactive 3D demo

Posted: Fri Mar 26, 2021 10:38 am
by rax
jbperin wrote:
Thu Mar 25, 2021 8:01 pm
I think that non-players cannot be good game makers.

And it turns out that I'm not a gamer so I don't think I can produce a good game.
...
Don't expect too much from this game because it is done by a cheap (newbie) game maker
This is not true. I think you're doing great (better than me for some things when you think about it.). And I think you'll do great. :)

it's not time to give up now (or some other time :) ). We all learn from the programs of others.

Here, in our case, that it is not the end result that matters, but the path we will pass. The main thing is to have fun while doing it.

When we try to make a new game (or something like that), it almost always means that it will be better than the previous one. That is why we have to make many attempts.

My truth about programming is: never give up. :)

Re: Raycasting interactive 3D demo

Posted: Fri Mar 26, 2021 11:40 am
by Dbug
Ultimately, the secret of game development is to iterate.

There's a reason why now many games are released in "Early Access": The games are actually feature complete, but need the feedback from player in order to catch issues that designers and developers did not see (it's easy to get blind of how difficult or broken you game is, when you've bene working on it for years and knows it inside-out).

And that's also why I told JiBé many times to not release stuff fast, but to get to the point he think something is worth sharing, then share with only a couple people to ask for feedback, fix the biggest issues (could be documentation, controls, performance, crashes, etc...), eventually do that a few times until most of the obvious stuff is fixed, and then only do a proper release.

And even after this proper release, there can be more iterations: Chema released version 1.1 and 1.2 of some of his games, to address things like Jasmin/Telestrat compatibility, or add joystick support, or localisation fixes.

Many things, you only learn from the actual tests on the Battle Field: There would not have been a Street Fighter 2 if there had not been a Street Fighter 1 before that, a good designer is rarely a genius with knowledge from the gods, they are generally smart people who look around, write down notes, look at the competition, on how people play, remarks (positive or negative), etc... and take that into account for the next project, or simply to release a new version of an older project.

Re: Raycasting interactive 3D demo

Posted: Fri Mar 26, 2021 7:07 pm
by jbperin
rax wrote:
Fri Mar 26, 2021 10:38 am
I think you'll do great. :)

it's not time to give up now (or some other time :) ). We all learn from the programs of others.

My truth about programming is: never give up. :)
Thank you rax for these encouraging words.

I won't give up because I want this game to get out one day or the other !!

It's going to be my first game so I'm targeting something simple with a very sober interface.

Dbug wrote:
Fri Mar 26, 2021 11:40 am
There's a reason why now many games are released in "Early Access": The games are actually feature complete, but need the feedback from player in order to catch issues that designers and developers did not see (it's easy to get blind of how difficult or broken you game is, when you've bene working on it for years and knows it inside-out).
I think I am not so far from an early access release.
The game logic and the user interface are set up.
I've got all 2D graphics ready.
The 3D render engine is efficient and reliable.

Now I've got 5 kb of memory to feed with game content.

And I'm starting to have ideas on how I am going to fill these 5 kb left :-)

Dbug wrote:
Fri Mar 26, 2021 11:40 am
Ultimately, the secret of game development is to iterate.

Many things, you only learn from the actual tests on the Battle Field: There would not have been a Street Fighter 2 if there had not been a Street Fighter 1 before that, a good designer is rarely a genius with knowledge from the gods, they are generally smart people who look around, write down notes, look at the competition, on how people play, remarks (positive or negative), etc... and take that into account for the next project, or simply to release a new version of an older project.
wiseness is speaking ...

I have some other project that I would like to push and I long to finish this one .. that's why I often realease too early.

Re: Raycasting interactive 3D demo

Posted: Fri Mar 26, 2021 9:17 pm
by Dbug
jbperin wrote:
Fri Mar 26, 2021 7:07 pm
I have some other project that I would like to push and I long to finish this one .. that's why I often realease too early.
But that's the thing: You don't have to work on one thing at a time, rotating over multiple projects allows you to learn or discover new things, that you can then apply to the rest.

Just one example, you admiration for the \033, which if you had just learnt BASIC like most people who started on the Oric, would have been obvious to you, and why it works with printf and not sprintf.

\033 is 27 in decimal, which is the ASCII code for ESCAPE, and printf calls the Oric PRINT command which in pretty much all BASIC examples do things like

Code: Select all

10 PRINT CHR$(27)+"L"
It does not work in sprintf because that behaves like PLOT which does not do any high-level manipulations, it just pushes the bytes to the memory, so there you can directly use the actual ATTRIBUTES values.

Among other differences it means that with the PRINT family you can clear the screen, do a PING, move the cursor around, etc...

Things you discover that improve your memory management, code performance, tricks with the assembler or compiler, all that you can reapply to the other projects, and also it allows your brain to get more creative by not staying stuck on one particular problem.