🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Inspiration Game Engine

Published November 15, 2020
Advertisement

I have an affinity towards the look of classic 90's shooters. One can make a modern game engine look like a classic one, but that has a lot of overhead. Furthermore, games tend not to be very moldable because of all of the information that gets baked and the complexity of a true 3D environment. Inspiration is a ray-traced, 2.5D engine for simple classic-style games that uses text files, pngs, and dynamic libraries to provide a fully moddable world.

First Tier Features

  • Editing suite - There is a fully functioning level editor already working. It's simple and I'm expanding it to be GUI controlled.
  • Raycast-based software render - Reaching in the tech past all the way to Wolfenstein and dragging it forward with some modern sensibilities and algorithms. It provides the next few features, which are very difficult and expensive to do with modern rendering pipelines, for free.
  • Reflections - Any wall or sprite can be reflective. Furthermore, the performance hit from multiple reflections is minimal, so a true hall of mirrors, is achievable. I'd like to see you get that running at 60FPS in Unity with RenderTextures!
  • Refraction - Transparent objects can refract (as well as reflect.). There are no expensive shader calculations to perform, the renderer simply changes the angle of the ray and moves on, making this extremely efficient.
  • Alpha / Masks - Walls can be transparent or have sections that are either transparent or masked.
  • Composite 16-Way Sprites - Objects in the world are composed of one or many 1,8,or 16 way sprite set. I will include a Unity Scene with custom shaders and scripts to generate these from real 3D models.
  • Normal Mapping - Walls, floors, and sprites all support normal maps. The sprite generator has a custom shader that generates these automatically.
  • Material based - Materials hold texture(s) information, as well as parameters for rendering and physics.
  • Portals - Another difficult trick with a polygon renderer, but simple for raycasting. It allows you to build doors to far off parts of the map. These can be manually added, but are heavily used behind the scenes. Scenes are composed or multiple “rooms” and the ends of the rooms are stitched together with portals.
  • Baked sector lighting - No light maps, DOOM-style lighting, but with some upgrades. Color and direction are stored, so that bump maps show correctly. In order to make lighting easier, a baking system is already working, allowing light to realistically bounce around, but keep that distinct cell look.
  • Mipmaps - The pixel soup in the distance of older games is cleared up a little here. I wanted to make distant things more recognizable, without having to crank the resolution way up. Mipmaps don't just go down, they go up too. This isn't just a trilinear scale though, it's an xbrz scale, which is specifically meant for low-res sprite-based images.
  • Shader API - Shaders are just simple C functions that get dynamically loaded with dlopen. This allows me to swap them out in real time, and gives modders the ability to really change how the game looks. Swapping them in real time allows some nice features of the Editor, for example, to view just lighting information, simply swap to the LightsOnly shader. Fog is another swappable module. Brightness usually dims with distance, but you can have patches that do other things, giving you volumetric fog.
  • 2D Floor plan - I like the simplicity of 2D floor plans, it also makes the map far easier to comprehend. This is not to say that Inspiration has the same limitations as the DOOM engine. Each sector can have an infinity number of floor/ceiling pairs, making true room-above-room locations possible. You can also use the Build Engine trick and put a hidden portal to make it appear that a room is above another.

Here you can see some non-orthogonal walls that are reflecting multiple times.

Engine in Editor mode, real-time reflections on the walls

This blog is going to serve as my dev log for this project, which is already a month or so in development. I am building a game alongside the engine.

0 likes 2 comments

Comments

Domarius

This is totally my thing too. I really want to see a Doom style engine done with modern conveniences. Back in the day, my brothers and I were always making crazy maps in Doom and also Duke3D, and they each had their own atmosphere. This is directly attributable to the simplistic nature of 2.5D map editing, and the simplicity of placing a simple repeating texture on any surface for a splash of colour. Gone are those days where young kids can so easily be creative (Well I think Minecraft is the next answer for that), but it's true - the standard of graphical detail means we can no longer use a level editor in the same way - Doom 2016 came with “snap maps” and everything looks the same.

Also my fantasy is to take retro graphics and do things we could never do with them due to the power of modern computers combined with the low fidelity of retro graphics. So, tonnes of enemies, huge maps, etc. The true reflections tech you're making is exactly the kind of thing we could be doing with retro graphics now. I hope to see more of this.

December 09, 2020 03:25 AM
Wallace121215@gmail.com

@Domarius You are the very type of person that this project in intended for. Every game that I release with my new engine will ship with the fully functional editor tools that I've created for it. Anyone whose ever used a DOOM editor will find it familiar. It has a nice 3D view for easy editing, but also has the simple to understand line mode.

December 09, 2020 10:18 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement
Advertisement