Hi List,
I have been working on a rendering engine for a 1st person maze game, like the kind that powered the old Wolfenstein 3D, and I thought I'd share my experience.
In the BitBlt Renderer image, I've done all the rendering by hand, in Squeak. It's being rendered in Standard Definition PAL. In standard it was hard to see where to go, so I changed it to widescreen, but that cost a couple frames per second. There are rough edges on the texture coming from cosine for fisheye correction, as well as a curve.
I ran out of wall time to do anything else with the renderer... it ran at 4 frames per second after scaling by the UI scale... and to make it not look like it runs like molasses I didn't tween walking and turning.
And then I tried to texture the floor and ceiling and my wall time went from 4 frames per second to 4 seconds per frame because I had to paint a pixel at a time. I'm sure it could have been done faster with WarpBlt, but I had only been able to optimize drawing trapezoids for 0, 90, 180, and 270 degrees and didn't want to lose turning animations.
In the GPU Renderer image, I've offloaded rendering onto the graphics card. It was certainly an adventure, because when I started I knew absolutely nothing about hardware rendering except it involves telling the GPU how to paint triangles. While I am upset that it is rendering at a high resolution instead of the chunky, 1990s look I was hoping for, I'll take the gained performance over it.
Actually, it runs so fast I can both convert the entire stage to a mesh and upload it every frame and still have wall time left over to do movement animations at 12 frames per second. I'm going to optimize stage loading next using the raycaster, but it performs well enough to use for debugging and as a demo for people at home.
So, yes, you can make a 3D game in Squeak. If it runs on my 10 year old laptop where only the onboard graphics card works, I'd say it can be done. Which is great, because I've really been excited about learning Smalltalk and using it to make graphical programs, and what better than writing a game?
That is really interesting. Thanks for sharing! Would love to continue hearing of your progress.
Scott
On 5/2/24 13:43, Lauren Pullen wrote:
Hi List,
I have been working on a rendering engine for a 1st person maze game, like the kind that powered the old Wolfenstein 3D, and I thought I'd share my experience.
In the BitBlt Renderer image, I've done all the rendering by hand, in Squeak. It's being rendered in Standard Definition PAL. In standard it was hard to see where to go, so I changed it to widescreen, but that cost a couple frames per second. There are rough edges on the texture coming from cosine for fisheye correction, as well as a curve.
I ran out of wall time to do anything else with the renderer... it ran at 4 frames per second after scaling by the UI scale... and to make it not look like it runs like molasses I didn't tween walking and turning.
And then I tried to texture the floor and ceiling and my wall time went from 4 frames per second to 4 seconds per frame because I had to paint a pixel at a time. I'm sure it could have been done faster with WarpBlt, but I had only been able to optimize drawing trapezoids for 0, 90, 180, and 270 degrees and didn't want to lose turning animations.
In the GPU Renderer image, I've offloaded rendering onto the graphics card. It was certainly an adventure, because when I started I knew absolutely nothing about hardware rendering except it involves telling the GPU how to paint triangles. While I am upset that it is rendering at a high resolution instead of the chunky, 1990s look I was hoping for, I'll take the gained performance over it.
Actually, it runs so fast I can both convert the entire stage to a mesh and upload it every frame and still have wall time left over to do movement animations at 12 frames per second. I'm going to optimize stage loading next using the raycaster, but it performs well enough to use for debugging and as a demo for people at home.
So, yes, you can make a 3D game in Squeak. If it runs on my 10 year old laptop where only the onboard graphics card works, I'd say it can be done. Which is great, because I've really been excited about learning Smalltalk and using it to make graphical programs, and what better than writing a game?
Hi Lauren --
This is awesome! :-) What do you use for GPU access? A plain OpenGL interface?
Best, Marcel
Am 02.05.2024 19:44:30 schrieb Lauren Pullen drurowin@gmail.com:
Hi List,
I have been working on a rendering engine for a 1st person maze game, like the kind that powered the old Wolfenstein 3D, and I thought I'd share my experience.
In the BitBlt Renderer image, I've done all the rendering by hand, in Squeak. It's being rendered in Standard Definition PAL. In standard it was hard to see where to go, so I changed it to widescreen, but that cost a couple frames per second. There are rough edges on the texture coming from cosine for fisheye correction, as well as a curve.
I ran out of wall time to do anything else with the renderer... it ran at 4 frames per second after scaling by the UI scale... and to make it not look like it runs like molasses I didn't tween walking and turning.
And then I tried to texture the floor and ceiling and my wall time went from 4 frames per second to 4 seconds per frame because I had to paint a pixel at a time. I'm sure it could have been done faster with WarpBlt, but I had only been able to optimize drawing trapezoids for 0, 90, 180, and 270 degrees and didn't want to lose turning animations.
In the GPU Renderer image, I've offloaded rendering onto the graphics card. It was certainly an adventure, because when I started I knew absolutely nothing about hardware rendering except it involves telling the GPU how to paint triangles. While I am upset that it is rendering at a high resolution instead of the chunky, 1990s look I was hoping for, I'll take the gained performance over it.
Actually, it runs so fast I can both convert the entire stage to a mesh and upload it every frame and still have wall time left over to do movement animations at 12 frames per second. I'm going to optimize stage loading next using the raycaster, but it performs well enough to use for debugging and as a demo for people at home.
So, yes, you can make a 3D game in Squeak. If it runs on my 10 year old laptop where only the onboard graphics card works, I'd say it can be done. Which is great, because I've really been excited about learning Smalltalk and using it to make graphical programs, and what better than writing a game?
Hi List,
On 5/2/24 23:21, Taeumel, Marcel via Squeak-dev wrote:
Hi Lauren --
This is awesome! :-) What do you use for GPU access? A plain OpenGL interface?
I'm using Ronie's Abstract-GPU because it was the first I was able to make work. I'm just issuing all the vertex commands on the fly. I know there's things like vertex shaders, but...
On 5/3/24 00:52, Stéphane Rollandin wrote:
I made one without acceleration, a clone of The Sentinel, using the Wonderland framework:
I wanted to try Wonderland, but I couldn't get Balloon3D working.
I really wanted to avoid using acceleration because I've never used a GPU before.
When I started, I knew extremely little about computer graphics at all, in fact. I had never really worked with Form and Canvas, and I had a passing familiarity that blitting was a thing. I knew you could use raycasting and height mapping to get 3D images out of bitmaps... and some basic facts like working in triangles even when you want rectangles, back face culling, and Z buffers. And that's it. For making a game, I'd used Game Maker, once, back when Flash was Macromedia.
So, I didn't start off entirely ignorant of the process, but it was very close, and everything I know is merely two decades out of date at best. I basically know what I want to end up with and I'm stubborn enough to make it happen. Smalltalk's transparency is really helping.
On 2024-05-03, at 8:48 AM, Lauren Pullen drurowin@gmail.com wrote:
So, I didn't start off entirely ignorant of the process, but it was very close, and everything I know is merely two decades out of date at best. I basically know what I want to end up with and I'm stubborn enough to make it happen. Smalltalk's transparency is really helping
And that is what Smalltalk is really all about; learning stuff and using that to solve things. A bit like life, really.
You might find Juan's approach to rendering (almost wrote 'reindeering' there, which would certainly be different) interesting. If you take a look at Cuis and the VectorEnginePlugin it might prompt some thoughts.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Strange OpCodes: JUM: Jeer at User's Mistake
So, yes, you can make a 3D game in Squeak.
I made one without acceleration, a clone of The Sentinel, using the Wonderland framework:
http://www.zogotounga.net/comp/guardians.htm
Stef
More Squeak News! :-D Scott? Christoph? Maybe a short post about 3D in Software with Morphic?
Best, Marcel
Am 03.05.2024 08:53:00 schrieb Stéphane Rollandin lecteur@zogotounga.net:
So, yes, you can make a 3D game in Squeak.
I made one without acceleration, a clone of The Sentinel, using the Wonderland framework:
http://www.zogotounga.net/comp/guardians.htm
Stef
Ha! I have plans to speak with Lauren about the work done with raycasting with Squeak for an upcoming article. An article about 3D in Squeak would be great as well although the information and sources that I currently have on this seems to be stale.
Scott
On 5/3/24 04:54, Taeumel, Marcel via Squeak-dev wrote:
More Squeak News! :-D Scott? Christoph? Maybe a short post about 3D in Software with Morphic?
Best, Marcel
Am 03.05.2024 08:53:00 schrieb Stéphane Rollandin lecteur@zogotounga.net:
So, yes, you can make a 3D game in Squeak.
I made one without acceleration, a clone of The Sentinel, using the Wonderland framework:
http://www.zogotounga.net/comp/guardians.htm
Stef
Hi Scott --
[...] although the information and sources that I currently have on this seems to be stale.
- ... - https://www.3dicc.com/ - https://en.wikipedia.org/wiki/Croquet_Project - http://www.zogotounga.net/comp/guardians.htm - https://en.wikipedia.org/wiki/OpenQwaq - https://github.com/hpi-swa-lab/squeak-graphics-opengl - https://github.com/hpi-swa-lab/squeak-graphics-canvas - https://github.com/desromech/abstract-gpu - ...
:-)
Best, Marcel
Am 03.05.2024 23:38:47 schrieb Scott Gibson scott.gibson@posteo.net:
Ha! I have plans to speak with Lauren about the work done with raycasting with Squeak for an upcoming article. An article about 3D in Squeak would be great as well although the information and sources that I currently have on this seems to be stale.
Scott
On 5/3/24 04:54, Taeumel, Marcel via Squeak-dev wrote: More Squeak News! :-D Scott? Christoph? Maybe a short post about 3D in Software with Morphic?
Best, Marcel
Am 03.05.2024 08:53:00 schrieb Stéphane Rollandin lecteur@zogotounga.netmailto:lecteur@zogotounga.net:
So, yes, you can make a 3D game in Squeak.
I made one without acceleration, a clone of The Sentinel, using the Wonderland framework:
http://www.zogotounga.net/comp/guardians.htm
Stef
Not entirely irrelevant:
https://github.com/codefrau/jasmine
^_^
Vanessa
On Sat, May 4, 2024 at 04:47 Taeumel, Marcel via Squeak-dev < squeak-dev@lists.squeakfoundation.org> wrote:
Hi Scott --
[...] although the information and sources that I currently have on
this seems to be stale.
- ...
- https://www.3dicc.com/
- https://en.wikipedia.org/wiki/Croquet_Project
- http://www.zogotounga.net/comp/guardians.htm
- https://en.wikipedia.org/wiki/OpenQwaq
- https://github.com/hpi-swa-lab/squeak-graphics-opengl
- https://github.com/hpi-swa-lab/squeak-graphics-canvas
- https://github.com/desromech/abstract-gpu
- ...
:-)
Best, Marcel
Am 03.05.2024 23:38:47 schrieb Scott Gibson scott.gibson@posteo.net: Ha! I have plans to speak with Lauren about the work done with raycasting with Squeak for an upcoming article. An article about 3D in Squeak would be great as well although the information and sources that I currently have on this seems to be stale.
Scott
On 5/3/24 04:54, Taeumel, Marcel via Squeak-dev wrote:
More Squeak News! :-D Scott? Christoph? Maybe a short post about 3D in Software with Morphic?
Best, Marcel
Am 03.05.2024 08:53:00 schrieb Stéphane Rollandin lecteur@zogotounga.net lecteur@zogotounga.net:
So, yes, you can make a 3D game in Squeak.
I made one without acceleration, a clone of The Sentinel, using the Wonderland framework:
http://www.zogotounga.net/comp/guardians.htm
Stef
Vanessa,
Thanks! I seemed to have missed this one.
Scott
On 5/4/24 17:09, Vanessa Freudenberg wrote:
Not entirely irrelevant:
https://github.com/codefrau/jasmine
^_^
Vanessa
On Sat, May 4, 2024 at 04:47 Taeumel, Marcel via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Hi Scott -- > [...] although the information and sources that I currently have on this seems to be stale. - ... - https://www.3dicc.com/ - https://en.wikipedia.org/wiki/Croquet_Project - http://www.zogotounga.net/comp/guardians.htm - https://en.wikipedia.org/wiki/OpenQwaq - https://github.com/hpi-swa-lab/squeak-graphics-opengl - https://github.com/hpi-swa-lab/squeak-graphics-canvas - https://github.com/desromech/abstract-gpu - ... :-) Best, Marcel
Am 03.05.2024 23:38:47 schrieb Scott Gibson <scott.gibson@posteo.net>: Ha! I have plans to speak with Lauren about the work done with raycasting with Squeak for an upcoming article. An article about 3D in Squeak would be great as well although the information and sources that I currently have on this seems to be stale. Scott On 5/3/24 04:54, Taeumel, Marcel via Squeak-dev wrote:
More Squeak News! :-D Scott? Christoph? Maybe a short post about 3D in Software with Morphic? https://news.squeak.org Best, Marcel
Am 03.05.2024 08:53:00 schrieb Stéphane Rollandin <lecteur@zogotounga.net> <mailto:lecteur@zogotounga.net>: > So, yes, you can make a 3D game in Squeak. I made one without acceleration, a clone of The Sentinel, using the Wonderland framework: http://www.zogotounga.net/comp/guardians.htm Stef
Marcel,
Thank you very much! This helps to confirm some sources I had. It also gives me one that I was missing too.
Thanks! Scott
On 5/4/24 07:46, Taeumel, Marcel via Squeak-dev wrote:
Hi Scott --
[...] although the information and sources that I currently have on
this seems to be stale.
- ...
- https://www.3dicc.com/
- https://en.wikipedia.org/wiki/Croquet_Project
- http://www.zogotounga.net/comp/guardians.htm
- https://en.wikipedia.org/wiki/OpenQwaq
- https://github.com/hpi-swa-lab/squeak-graphics-opengl
- https://github.com/hpi-swa-lab/squeak-graphics-canvas
- https://github.com/desromech/abstract-gpu
- ...
:-)
Best, Marcel
Am 03.05.2024 23:38:47 schrieb Scott Gibson scott.gibson@posteo.net:
Ha! I have plans to speak with Lauren about the work done with raycasting with Squeak for an upcoming article. An article about 3D in Squeak would be great as well although the information and sources that I currently have on this seems to be stale.
Scott
On 5/3/24 04:54, Taeumel, Marcel via Squeak-dev wrote:
More Squeak News! :-D Scott? Christoph? Maybe a short post about 3D in Software with Morphic?
Best, Marcel
Am 03.05.2024 08:53:00 schrieb Stéphane Rollandin lecteur@zogotounga.net:
So, yes, you can make a 3D game in Squeak.
I made one without acceleration, a clone of The Sentinel, using the Wonderland framework:
http://www.zogotounga.net/comp/guardians.htm
Stef
squeak-dev@lists.squeakfoundation.org