# Current Cell Editor & 3D Programming

As usual I’ve been conducting more research into how we could possibly make 3D things (cells) from 2D resources and I’ve come to the conclusion that the current Cell Editor Design is a bit limiting for making a 3D model even using Convolution Surfaces. Every solution I can find or come up with on my own ends up needing Z axis dimensions to go off of in order to construct a proper 3D object, and when those dimensions have to be assumed, things can get strange, or great looking things can be simplified to the point of being ruined.

As I understand the Honey Comb nature of the Cell Editor is pretty important for the way things are fit and planned out for cells specifically. They are very convenient. That’s why I suggest, should we move on to a 3D Cell Editor, we use a lattice of Truncated Octahedron rather than 2D hexagons. They fill 3D space the same way hexagons fill 2D space so we could keep things fairly familiar despite adding a 3rd dimension.

Either way, we need some way of measuring the Z axis in order for 3D cells to work and not start looking odd at some point. Especially big ones. Even using cubes would be much better.

1 Like

A 3D cell editor has been suggested in the past, but I’ve rejected the basic ideas of “hey let’s just do it” as it has a lot of implications on how the editor needs to work, how to do the controls, how to make it simple enough to use, etc. I’m not entirely against having a 3D cell editor, but all of those things as well as what implications it has for cell functionality and gameplay needs to be considered.
Why not assume that each hex is as tall as the hex radius? That would make cells that are flat at the top (when using convolution surfaces), but I think that would be good enough.

I have found that (as you said) this flat appearance can become more and more pronounced the bigger the cell is. At some point it’s bad enough where the shaders might do weird things like having fresnel so strong at the edge it looks like an outline, or the top of the cell shimmering. With some optical trickery I think it might work but, yeah having a Z measurement would be nice.

Also, I found out we have the camera set wrong, and when a big flat cell is at the edge, you can tell it’s side profile slightly. You have to set the camera to “Orthogonic”, not “Perspective”, in order to avoid that fish eye effect.

The Z measurment is super easy? At the edge of the cell the height is 0, and once the first hex middle point is reached, the height goes from -hex radius to + hex radius, so the Z is just 2 * hex radius, which is known.

We have explicit lens effect and chromatic aberration…
It’s always been that we aren’t making a 2D game, we are making a game where initially the 3D camera is locked to a top down view. I imagine that the transition to fully 3D will work so that the camera just starts to move to be in a third person perspective, that would be very trippy if the camera toggled between orthographic and perspective projection at that time.

The visual inspiration for the stage is that the player is looking through a microscope at the microbes.

I don’t think I said this to you, but I’m almost 100% confident that the current membrane textures cannot work on a 3D membrane as based on the look angle the part of the membrane that is fully transparent needs to change. So we need an edge detection shader that applies the texture to the membrane so that it is always aligned with the texture edges to be at the edges seen from the camera. At least that’s what my limited graphics programming experience is telling we need.

Z measurement is easy for small cells and circles but, when people start making big complicated shapes it gets hard to keep everything from becoming a sort of thick pancake.

It’s very uncommon for games to have perspective cameras for any kind of 2D stage or camera angle. Spore actually uses a Orthogonic Camera for the Cell Stage and changes it when you reach the creature editor.

The current cell membrane texture is 100% useless yes. It will be replaced with a Material and a Fresnel shader which detects the edge and creates a gradient towards the center.

Good example of Fresnel

2 Likes