HomeGamesUpdatesPricingMethodology
Steam News13 May 20233y ago

How It's Made: Somnium Engine

Pictured: An interface born out of an overwhelming spite for a certain other engine, also dear ImGui :flushed: ON today's episode of 'How it's made,' we take a look inside the strange and arcane machinery of the Harpy R

In this update4

Full notes

Full Slime Squadron: Harpy Raiders update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

1 fix2 additions5 changes0 removals
  • UI and audio
  • Gameplay
  • Compatibility
  • Performance
  • Fixes
changedPictured: An interface born out of an overwhelming spite for a certain other engine, also dear ImGui :flushed:
changedThe WhyIn truth, I did use other engines. In particular, Unity, as that was what my school had been teaching us. Though from day one, using it to build anything large was out of the question due to the constant crashing and BSOD'ing I experienced. I also did not like the idea of relying on proprietary technology from a corporation I did not necessarily vibe with.
changedThe WhatSomnium Engine is the byproduct of my labor of an entire year - and it's not even done. For those who would love the details, it is a archetype ECS based multi-core game engine that runs on Vulkan for some reason. In the near future, I will also support Window's DirectX and Apple's Metal for maximum compatibility.
addedThe WhatThe engine is written fully in the C# programming language. It has such cool features such as a custom lightweight physics engine built specially for funny slime-based platformers, the ability to be modded (You can add new items to Harpy Raiders without even writing code!), casually having several thousand entities in a level and much more.
changedThe WhatSomnium comes with it's own editor! I designed it with a philosophy counter to the direction of game engines today: The editor is not a fully fledged editor environment from which you play your game. Instead, it's much more akin to Notepad or Microsoft Word in which you use it to edit a level file, and only that. Playing the game is the responsibility of whatever coding program you use. This contrasts with engines such as Unity and Godot again, in which you click a play button from within the editor in order to see your game in action. I chose this route because several of my bad experiences in Unity came with the fact that the editor and game were so tightly linked together.
changedThe HowLike with many hit games such as Stardew Valley or Terraria, I started off with building things in a Microsoft XNA Framework successor library - in particular, it was Monogame Framework. You can think of a framework as the foundations for a Game Engine - handling things like basic rendering but not anything more.

Slime Squadron: Harpy Raiders changes

changedPictured: An interface born out of an overwhelming spite for a certain other engine, also dear ImGui :flushed:
changedIn truth, I did use other engines. In particular, Unity, as that was what my school had been teaching us. Though from day one, using it to build anything large was out of the question due to the constant crashing and BSOD'ing I experienced. I also did not like the idea of relying on proprietary technology from a corporation I did not necessarily vibe with.
changedSomnium Engine is the byproduct of my labor of an entire year - and it's not even done. For those who would love the details, it is a archetype ECS based multi-core game engine that runs on Vulkan for some reason. In the near future, I will also support Window's DirectX and Apple's Metal for maximum compatibility.
addedThe engine is written fully in the C# programming language. It has such cool features such as a custom lightweight physics engine built specially for funny slime-based platformers, the ability to be modded (You can add new items to Harpy Raiders without even writing code!), casually having several thousand entities in a level and much more.
changedSomnium comes with it's own editor! I designed it with a philosophy counter to the direction of game engines today: The editor is not a fully fledged editor environment from which you play your game. Instead, it's much more akin to Notepad or Microsoft Word in which you use it to edit a level file, and only that. Playing the game is the responsibility of whatever coding program you use. This contrasts with engines such as Unity and Godot again, in which you click a play button from within the editor in order to see your game in action. I chose this route because several of my bad experiences in Unity came with the fact that the editor and game were so tightly linked together.

Pictured: An interface born out of an overwhelming spite for a certain other engine, also dear ImGui :flushed:

ON today's episode of 'How it's made,' we take a look inside the strange and arcane machinery of the Harpy Raiders game engine. Content warning: Alot of technical information coming up, this one's for you, programmers!

The Why

But Linx, you may ask. Why do you need to make a game engine? Why not use Godot or Unity for this silly pixel art 2d platformer game??

In truth, I did use other engines. In particular, Unity, as that was what my school had been teaching us. Though from day one, using it to build anything large was out of the question due to the constant crashing and BSOD'ing I experienced. I also did not like the idea of relying on proprietary technology from a corporation I did not necessarily vibe with.

Normally, this would make Godot a much preferred choice, but I've never actually touched Godot before I started work on Somnium due in part to not knowing it exists, and also because once I started with data oriented programming, I could not deal with Godot's object oriented programming any longer. Lastly, I just love seeing how things are made - and making them myself. Thus, the decision to go ahead to make Somnium was given, and I started toiling in the early 2022.

In retrospect, going with my own engine was a good decision as well due to something I will discuss in a future post - and strangely it has nothing to do with game development itself!

The What

Somnium Engine is the byproduct of my labor of an entire year - and it's not even done. For those who would love the details, it is a archetype ECS based multi-core game engine that runs on Vulkan for some reason. In the near future, I will also support Window's DirectX and Apple's Metal for maximum compatibility.

The engine is written fully in the C# programming language. It has such cool features such as a custom lightweight physics engine built specially for funny slime-based platformers, the ability to be modded (You can add new items to Harpy Raiders without even writing code!), casually having several thousand entities in a level and much more.

Somnium comes with it's own editor! I designed it with a philosophy counter to the direction of game engines today: The editor is not a fully fledged editor environment from which you play your game. Instead, it's much more akin to Notepad or Microsoft Word in which you use it to edit a level file, and only that. Playing the game is the responsibility of whatever coding program you use. This contrasts with engines such as Unity and Godot again, in which you click a play button from within the editor in order to see your game in action. I chose this route because several of my bad experiences in Unity came with the fact that the editor and game were so tightly linked together.

All in all, I would say Somnium is a fully functional engine for making 2d games, with very basic 3d support that will be expanded on in the future for one of the levels in Harpy Raiders that will require 3d background scenery. And because I am developing it alongside Harpy Raiders, it will only continue to improve as we go along!

The How

If you wish to develop your own game engine, my advice for you is: Do it! But don't try to make a generic all-purpose engine unless you have a big team of contributors. (Godot, which has said big team of contributors, isn't even an all-purpose engine). Make something that your game needs, and always, make a game alongside your engine. Only then will you create something that's worthwhile and proven.

Like with many hit games such as Stardew Valley or Terraria, I started off with building things in a Microsoft XNA Framework successor library - in particular, it was Monogame Framework. You can think of a framework as the foundations for a Game Engine - handling things like basic rendering but not anything more.

However, due to Monogame's slow development cycle and lack of modern graphics support, I decided to also write my own framework and linked my engine to it. To do so, I checked out Sascha Willems' awesome Vulkan-Tutorial, and understood approximately 85.2% of it.

Alongside this, I leveraged numerous other technologies and tutorials, such as Omar Cornut's Dear ImGUI library, which practically the entire engine dev industry from indie to AAA runs on, as well as The Cherno's awesome game engine tutorial series (Which I did not follow to the teeth, but gave a good point to start from regardless)

With all the time a pre-University student has, and all the privileges of being a minor and not having a taxable income/day job, even you can make your own engine in a year!

The When

Somnium Engine will be released alongside either the demo or the first early access build of the game. However, the engine is an incredibly esoteric thing in it's current state. It lacks documentation, which will be resolved in the future (or not). Lastly, there are several core features the engine is missing, which I have not yet the time to implement, such as transform gizmos (I haven't needed it yet since I could just move things around typing numbers in the Inspector). However, even if the engine isn't released, the moment the demo drops, you can probably just link Somnium.dll in your own C# project and use it that way.

Had I gone back in time, I would have made several things differently, especially regarding the engine's ECS. However, time stops for no man, and the only thing that I can strive to keep constant is the relentless march of progress. There is no looking back with regret, only forward with new improvements. And that is the way it shall be, now and forevermore.

In the next posts, I will be detailing more about the game's lore and combat system!

Source

Steam News / 13 May 2023

Open original post

Changelog.gg summarizes and formats this update. How we read updates.