More game engine grunt work

April 20, 2019, at 05:53 AM by mgarcia in 2019, Blog, 3DS, GameDev, Industry, NetYaroze (0 comments)

Title: More game engine grunt work Author: mgarcia Date: 2019-04-20 13:53 +1000 Tags: 2019, Blog, 3DS, GameDev, Industry, NetYaroze Comments: Open

Size: 928.55 KB

April Update

Image: Blog.2019-04-20-More-game-engine-grunt-work

Click to view original image: 621kb

New format

Well continuing from the last post , new engine, new (optimized) formats.. kinda go hand in hand.

For the old engine I used Silo 3D and while it's easy to use, doing retro 3D (using tiles) isn't it's strength!
I was hoping an old 3D modeler could do it, like anim8or, which is a simple 3D modeler that also does animation and it's pretty simple to use, it also exports to a C language file, but alas that too relied on UV maps.

Then I came across and sprytile.
I looked at both.. but I found I was fighting with crocotile more and sprytile was more easier for me to pick up and output assets... even with my limited blender skills!
And Blender lock tool (locks to integer coordinates) is great, which is what my world uses (0-255).


The world is based on Quads not triangles (1 unsigned char (1 Byte) for each vert) calculating and storing the facing normals (3 floats (12 Bytes)).
The UV's in engine uses a single image for everything, it was originally 512x512 using 32x32 tiles (full image displayed at the bottom screen)
UV's not stored as float's (4Bytes each) but instead all 4 verts x 2 UV's stored as 6bit each , which is 6 Bytes (compared to 64 Bytes per quad using floats), from my last blog post, I'm more memory concerned then CPU usage.

  3ds new format 2019 04 14 15 22 58 

3ds new format 2019 04 14 15 22 58

Moving the camera

Next need to see the quads rendering correctly, that means moving the camera... the forward vector is used to move the camera.. simple stuff. Here the UV's aren't used, instead just using 100% of the texture on all quads.

  forward vector 2019 04 14 17 56 43 

forward vector 2019 04 14 17 56 43

UV's fixed

I fixed the UV's to use the actual UV's from the OBJ file. Storing the UV's as unsigned numbers is pretty hacky but works well, to compress them just multiply it by the texture width/height, when rendering, a quick divide of the same texture width/height gets the normalized UV coordinates back.

  UV's kinda working 2019 04 14 20 15 23 

UV's kinda working 2019 04 14 20 15 23

New asset pipeline

The UV was changed to unsigned shorts for a larger 1024x1024 texture file, now tiles are 64x64 tiles, tilable ("repeating textures") images from
The tiles I liked are resized to 64x64 and put into a non-alpha folder.
The font is created using Codehead's Bitmap Font Generator.

Codehead's Bitmap Font Generator

The tile map is then assembled via a bash script.
Images are split into alpha (transparent) and non alpha (not transparent).
Yeah, my script is hacky but works well:

64x64 tile map, 32x32 font:

Image: Blog.2019-04-20-My-all-in-one-texture

Click to view original image: 186kb

Bigger UV and better face culling

Fixed issues with face normals, because it's all quads and using a single face normal. I made it calculate a face average (also called smoothing) using each vertex (normal for each vert, then divided by 4).
It works well, not so much on really badly non planar quads, where the two triangles don't point in roughly the same directions, ie one is up and the other to a side, shown in the video below at 1:10 minute mark.

  3DS world rendering 2019 04 19 22 17 45 

3DS world rendering 2019 04 19 22 17 45

These video's are unlisted.. it's mostly for my blog and don't want to spam my youtube followers with small incremental stuff.
The whole playlist is here . The private videos showed the Nintendo test unit, which Nintendo prohibits.... I think? nobody knows 100%.

Net Yaroze

Since my old server died last year, the hasn't received much love. The idea was to set it up again as a wiki.
That's the reason why I use pmwiki as my flat file, blog CMS... which is really overkill and its kind of clunky, but it was to see how it would go, and it goes great!

I've started setting it up and I'm putting more time into it, still trying to get the layout how I want it, and slowly porting content across to it.
But so far so good :)

Comments are open.

Your name or alias (required):

Your plain text comment (required):

Your entered name and comment will be displayed above this form.
There is no reply notifications or editing of comments.

 Enter value: 7019  

RSS Feed @mgarcia_org Twitter Feeder my random Youtube videos
← An IndieWeb Webring πŸ•ΈπŸ’ β†’

Page last modified on March 23, 2020, at 02:00 PM and visited 2897 times.

Powered by PmWiki