Blocky Universe

Blocky Universe is released :partying_face: :partying_face: :partying_face:

You are the unusual archer in this blocky adventure. Fight enemies, explore the world and defeat bosses in your journey to repair the portal and save the universe.

You can play at poki or play market

15 Likes
4 Likes

Some facts about game:
1)30 week of development(part-time after main work and weekends)
2)Game size:
-Base 2.09 MB
-Liveupdate(sounds and some level models) 1 MB
3)1.5h-2h to complete the game
4)Worked in webgl1 and webgl2
-For support webgl1 fixed some shaders and replace float render targets with rgba targets.
5)Support portrait and album orientation.
-develop game for album but later add support for portait. Portrait use different camera parameters and also i scale album gui. I do not use layouts, i think layouts need much more work.


function Render:window_size_changed()
	self.gui_proj = vmath.matrix4_orthographic(0, self.screen_size.w, 0, self.screen_size.h, -1000, 1000)
	self.empty_view = vmath.matrix4()
	game.set_screen_size(self.screen_size.w, self.screen_size.h)

	local gui_scale = 1
	local gui_scale_2 = 1

	if COMMON.RENDER.screen_size.aspect < 0.65625 then
		local scale_target = (16 / 9) / (0.65625)
		local scale_current = (16 / 9) / (COMMON.RENDER.screen_size.aspect)
		gui_scale = scale_target / scale_current
	end
	if COMMON.RENDER.screen_size.aspect < 3 / 4 then
		local scale_target = (16 / 9) / (3 / 4)
		local scale_current = (16 / 9) / (COMMON.RENDER.screen_size.aspect)
		gui_scale_2 = scale_target / scale_current
	end
	...
end
--update gui parameters scale and model 
function Script:on_resize()
	gui.set_adjust_mode(self.vh.root_adjust, COMMON.RENDER.gui_scale.mode)
	gui.set_scale(self.vh.root_adjust, COMMON.RENDER.gui_scale.scale2)
end


6)Defold issues.
While worked on game:
-create 26 issues
-10 issues was fixed
All critical issues was fixed. Other have workarounds or is low priority.

7)Arrowhead hero
At start main hero was a standart human. Poki ask me to think about more
unique hero. Thanks for that ided.Arrow head hero looks much more interesting.

10 Likes

About 3D in defold. You can make such simple 3D game but you need to spend your time to uderstand how 3D worked in game engines.

Some must have extensions that help you make 3d games:
1)Defender Blender Export
2)Defold Mesh Binary(texture baked animations)
3)Scene 3D(i don’t use full scene3d but copy some shaders, functions and native frustum from it)
4)Defold light and shadows lights
Thanks community for that extensions. Also thanks defold team for engine and 3D features.

8 Likes

Great work! What do you feel is missing in terms of 3D support currently? GPU skinning is for sure on my list, but I would like to know what else to focus on!

3 Likes

I have some issues that i liked you to fix. So i show them again)
Please look at them, if you fixed them it will make me happy and games better)

1)Profiler currently disabled in the HTML5 build
New profiler is cool, but we need profiler in web to make performance games.

2)Frustum culling call when it not needed
Frustim culling can be better.

3)Change and get shape sizes, positions in runtime. You show this feature in roadmap

4)Gpu skinning
Low priority for me.Defold Mesh Binary can be used as workaround.

5)Render batch world for multiple render of same objects

SKINNING ANIMATION
1)81 enemy no shadow
render batch world:6.500-7.000
2)81 enemy shadow
render batch world:12.500-13.500

NO SKELET
3)81 enemy no shadow
render batch world:2.500-3.000
4)81 enemy shadow
render batch world:5.500-6.800

Looks like render batch world make same work twice when draw shadow.RenderBatchWorld do same work for every draw. For example when i draw same model multiple times per frame. Mb you can add some kind of cache?

RenderBatchWorld call for every model.

Model go in rig and cound array of vertices

Here you count matrices use 4 bones.

6)Editor performance and usability for 3d scenes.
For now editor is slow if scene is big. Also big in my cases is like my world in game with 4 areas and hundread of objects. So for now i use blender because it hard to make 3d scene in editor.

Is wasd camera movement already in editor?

7)Store the meta data within the .buffer format
Need it for aabb for meshes

8)Debug draw native api
In this game i use draw_line for some chunks debug and pathfinding debug.

6 Likes

Top 3D features for me:)
You already did a good work of implementing more 3d in defold, thanks. I like new gltf model importer, it worked better than dae. Also file sizes in archive from gltf is smaller:)

  1. Editor performance and usability. It is very easy to make editor slow on not very big scene.
    So i use mix of blender and in game editor)

  2. Store the meta data within the .buffer format
    For meshes exported from blender. For now i need to set aabb manually after game load

  3. Point 5 from previous post. Render batch world for multiple render of same objects.
    Looks like some of work can be cached and draw of shadows can me more effective.

5 Likes

Thanks! Not sure I understand what the issue is with point five, what exactly would we cache in that case? We can’t cache the output, but maybe the draw list?

2 Likes

I am also not sure, i am not familiar with render and can be wrong:)
When i debug i find that render batch world worked twice when i draw model and draw shadow of that model.

It is logicaly ok so i render same thing twice.

NO SKELET
3)81 enemy no shadow
render batch world:2.500-3.000
4)81 enemy shadow
render batch world:5.500-6.800

But looks like that this method do a lot of same work(on cpu?). Mb some if it can be reused when draw shadows after draw model.

I see that it batch world and it try to batch multiple objects in one draw call. So if it is not possible to cache result or speedup second draw it ok)

It is only my observation)

1 Like

Thanks for the list!
And nice feedback!

Re 5) RenderBatchWorldVS
The points you bring up are exactly why we want GPU skinning, since what’s currently costing now, is the CPU skinning, and it’s not cheap.

In particular, we want to use a shared object (e.g. a texture) to also make sure we can still batch these objects.

In short, we want to make cases like yours easy and performant.

re 1) Profiler
Yeah, it was my mistake to not double check that it didn’t work. And we’re trying to come up with a good way to make it work for a single thread.

re 3) Buffer meta data
I agree that we should add support for it in the buffer format as well.

I’m a bit curious about why you use the buffer format instead of .gltf though?

6 Likes

Hmm i am confused why i use buffer)
I use defender blender plugin for export level scene.
I think i start use buffer format at start, it worked good and i keep using it)
I think it good idea to try gltf in new game)

5 Likes

New screenshots for play market

10 Likes

Not only I, but my kids love the game (they are now in Minecraft-fan phase) :smiley:
I wish you a success with this one! :heart:

9 Likes