Elysian Shadows

ESTk DevLog 001: Entities, Shaders, and Bumpmaps

In an attempt to continually keep our backers updated, our team members educated, and my own narcissism satiated, I am hereby starting a blog series for all of my low-level endeavors developing the Elysian Shadows engine and toolkit. This will also serve as a changelog for our beta backers, once we start handing out test builds.

ESTk "Sex and Candy" release is our first attempt at combining our engine and toolkit into a single piece of software, allowing us to create our worlds as we play through them, all completely in-game. The biggest challenge we've faced during our development is the lack of tools for the kind of 2D/3D dynamic perspective and dynamic lighting engine we've created to power Elysian Shadows. We've opted to roll our own with the focus of offering artists and level designers a set of tools allowing them to easily take full advantage of our powerful engine and hide its internal complexities (Tyler and I can deal with that shit).

I'm working full-time as an art and level-design slave right now, shitting out new builds basically every day as new bugs are found and new features are requested. It's paramount that ESTk becomes streamlined for our workflow, as this could save us potentially hundreds of man-hours in the long run. The scope of ES is too large and our lofty goals are too grand for mediocrity.

The best engine in the world is essentially worthless if it takes a low-level computer engineer to create anything worthwhile with it. It's the level designers, artists, musicians, and content creators who are realizing your creative vision. These are the guys who are truly validating the beauty and elegance of your engine.

Anyway, enough game engine philosophy. Here's the bugs fixed with the latest build:

  • Entity transform properties are correctly represented within Selection View
  • Normal-map offset for tiles on the FRONT_PLANE has been fixed.
  • Tile decorations have been drastically unfucked.
  • Collider offset when selecting elevated entities has been fixed.
  • Toolkit doesn't allow you to attempt to open two simultaneous projects.
  • Entities can be selected in-scene without ESTk being in a running state.
  • Sheet View tile decoration font color matches Map View decoration font.

 

projectError
The new tile decorations respect the tiles' 3D orientation... Oh, and trying to open a project while one is already open greets you with a friendly message!
patrickBug
Patrick found a particularly elusive bug causing orthogonal normal maps to not quite meet correctly on orthogonal planes. After several hours of debugging, I had just forgotten to normalize a single vector before shader submission. Fuck.
normalMapBugFix
Now it's beautiful. Notice the smooth lighting transition between tiles.

I also implemented what I think are some particularly useful and bitchin' features. Most of them are to make our artist's life easier... Even though he insists on making mine harder...

  • Hidden Entity toggle and dropdown (settings saved)
  • Remap main texture unit to visualize normal and specular maps
  • Toggle on and off texture mapping (texture, normal, specular)
  • Dynamically reload shaders
normalMapVisual
Using the normal map's texture unit rather than the main texture's when rendering the map. Very useful for visually debugging hand-drawn normal maps by moving lights around in the scene.

 

hiddenEntities
We are now able to flag any entity managed internally with an underscore to make it a "hidden" entity and prevent users from fucking with it. There's a dropdown option to list these as well, if you wish to debug.

 

reloadShaders
Dynamically reload shaders and restore GPU-state at run-time. This is extremely useful when debugging GPU code. You can see the engine reloading in the log. Ignore the error, that uniform doesn't exist.

Anyway... It's Friday night... I'm sitting here writing a blog update on engine development... I regret nothing.

Falco Girgis
Falco Girgis is the founder and lead software architect of the Elysian Shadows project. He was previously employed in the telecom industry before taking a chance on Kickstarter and quitting his job to live the dream. He is currently pursuing his masters in Computer Engineering with a focus on GPU architecture.