I dont know why but I couldn't stop having -Z be forward so in the end I had to flip the Z axis for any translation and I probably fucked something up somewhere but I couldn't figure it out and i ran out of patience 🙃
Ok I guess I was assuming XNA and DirectX used the same handedness but apparently XNA is right handed even though DirectX is left handed and I'd like to take this opportunity to ask *what the fuck*
So if I want +Z to be forward I have to flip the axis in the renderer? That's obnoxious. But better than -Z being forward in world space since that would confuse the shit out of players
i feel like i could soften the terrain significantly through no more than normals along the edges of blocks so i made this mockup in photoshop and i think this could actually work?
I prefer the hard look on that shower on the left which thinks it more I associate hard shadow to a rough material like soil. If the material is softer, maybe soft shadow could work better?
if i kind of artfully place the camera to cut out the cornflower blue void surrounding this tiny chunk of terrain on all sides its almost starting to look like a real game 😁
trying to add a faux edge bevel through normals and actual lighting equations is proving extremely challenging and i'm starting to give serious thought to manually baking the lighting into the textures
I dunno I'm just not feeling the actual lighting model. Its not like minecraft exactly has realistic lighting anyway: blocks are lit from two opposite sides!
But the problem with baked lighting is if you have non symmetrical blocks you have to make 4 versions of each face to get all the lighting. Not that that's super onerous
Also if I made something like a lectern that would be a lot of work to do manually for each orientation
On the other hand when I made isometric games I'd have to make two of everything to get the lighting right and I didn't mind that so much so maybe I'm overthinking it
ok i figured out a reasonable way to fudge the normals so i won't have to manually bake lighting. basically what i do is set the normals of the edges so that they point towards where the adjacent faces are pointing (90 degree bend) and then i lerp from the face's lighting factor to the neighbor's lighting factor
that gives me the result on the left. i tried just having regular, actual normals, but it creates artifacts like on the right (its accurate that it shades it like that but it looks bad)
took all day but i've optimized the vertex format for blocks *and* implemented auto-bevelled terrain. shown without textures to make the bevelling clearer
doing a side by side with my style guide i think i'm getting there. i'll probably wanna do some fancier color grading on the lighting though, and i want outlines, but the soft rounded feel of the terrain is definitely there now even though its still all cubes
i've brought back the grass, which is actually an obj model
see i made an engine before and appropriated it for this project. it could load obj models (with normal maps) so at first the blocks in my world were actually loaded from obj models
that's why i had to redo a buncha stuff to add the bevelling, since i had to generate the faces myself
I should probably start linking up chunks before I do much else so I don't wind up having to deal with a ton of "this block's neighbor is in another chunk" situations later
had a silly idea for block outlines using the bevel system. i take the dot product of the vector from the camera to the world position with the normal to determine if the bevel normal is pointing away from the camera, then add an outline based on that. there's some outlines where they don't belong but i can get easily rid of those
Not to pat myself on the back too hard but it's really nice how good this is turning out, like, aesthetically. It's not exactly trivial to make graphics look good when you only have a single 16x16 texture >_>
debating what i wanna do with grass in my engine. atm i have a block shader, and a model shader. i feel like i could efficiently implement shell textured grass by making a shell texturing shader, but i also don't want to balloon the number of different shaders i need to render all my terrain 🤔
i could just use the model shader, but it becomes a pain in the ass to implement shell textured terrain then
i could try and combine it with the block shader but they both do really different things
i'm overthinking the grass thing so i've made the textures required to make the shells for a 16-tile transition and i'll just generate the model for each of those 16 and implement them in the engine and move on so i don't wind up blocked by choice paralysis
At the moment the wild grass is actually a block on top of the dirt (like carpets in minecraft) but I'm thinking maybe I should change it so that the grass is part of the dirt block that sticks out above it as it were. That way things can occupy the same block as the grass without deleting it, like shrubs, flowers, or other non-opaque blocks
chunks connect properly now! with bonus shot of the sprawling cave systems beneath the surface
i made a staged chunk generation system where chunks can request their neighbors be generated but only up to a certain stage, which keeps the generation from going infinitely in all directions, because the requested stage must always be lower than the chunk's current stage of generation
you can see through the sides of chunks now because the chunks (correctly!) note that their underground sides faces are obscured. it's just that they're obscured by chunks you can't see because they haven't fully been generated yet
Eniko Fox
in reply to Eniko Fox • • •Oblomov
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •Khalid K-1000 🤖
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •ok one more before i head to bed just to show that it can do more interesting things than just large rectangles made up of smaller cubes
#GameDev #IndieDev #IndieGame
Eniko Fox
in reply to Eniko Fox • • •CatSalad🐈🥗 (D.Burch)
in reply to Eniko Fox • • •Eniko Fox
in reply to CatSalad🐈🥗 (D.Burch) • • •Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •so @Farbs said something about beveling the edges in my block game and that got me thinking and looking at some old 2D terrain art i did
i'm thinking i may stray from minecraft's aesthetics a bit and use this as a sort of style guide
#GameDev #IndieDev #PixelArt
Eniko Fox
in reply to Eniko Fox • • •okay so this may seem a little unorthodox but bear with me here
what if
shell texturing in block game
Ossi
in reply to Eniko Fox • • •CatSalad🐈🥗 (D.Burch)
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •Oblomov
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •Matthew
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •quick generating caves test
#GameDev #IndieDev #ProcGen
Matthew likes this.
Eniko Fox
in reply to Eniko Fox • • •Matthew likes this.
Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •after endless futzing about and tweaking i think i have something that may just be workable for this faux bevel effect i want
(note that there's a "bevel" between adjacent blocks cause i haven't made the effect dependent on the block's neighbors yet)
Eniko Fox
in reply to Eniko Fox • • •I dunno I'm just not feeling the actual lighting model. Its not like minecraft exactly has realistic lighting anyway: blocks are lit from two opposite sides!
But the problem with baked lighting is if you have non symmetrical blocks you have to make 4 versions of each face to get all the lighting. Not that that's super onerous
Also if I made something like a lectern that would be a lot of work to do manually for each orientation
Eniko Fox
in reply to Eniko Fox • • •Oblomov reshared this.
Eniko Fox
in reply to Eniko Fox • • •ok i figured out a reasonable way to fudge the normals so i won't have to manually bake lighting. basically what i do is set the normals of the edges so that they point towards where the adjacent faces are pointing (90 degree bend) and then i lerp from the face's lighting factor to the neighbor's lighting factor
that gives me the result on the left. i tried just having regular, actual normals, but it creates artifacts like on the right (its accurate that it shades it like that but it looks bad)
Ossi
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •here's a gif of the textured terrain toggling the faux bevel effect on and off to really show how it softens the terrain. i'm really pleased with this
#GameDev #IndieDev #ProcGen
Eniko Fox
in reply to Eniko Fox • • •Matthew likes this.
Eniko Fox
in reply to Eniko Fox • • •i've brought back the grass, which is actually an obj model
see i made an engine before and appropriated it for this project. it could load obj models (with normal maps) so at first the blocks in my world were actually loaded from obj models
that's why i had to redo a buncha stuff to add the bevelling, since i had to generate the faces myself
Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •had a silly idea for block outlines using the bevel system. i take the dot product of the vector from the camera to the world position with the normal to determine if the bevel normal is pointing away from the camera, then add an outline based on that. there's some outlines where they don't belong but i can get easily rid of those
... i don't hate it? 🤔
Matthew likes this.
j_bertolotti
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •yeah i'm happy with these terrain outlines for now
#GameDev #IndieDev #ProcGen
reshared this
aeva reshared this.
Eniko Fox
in reply to Eniko Fox • • •another few shots of the new outline tech
#GameDev #IndieDev #ProcGen
Eniko Fox
in reply to Eniko Fox • • •lol the outlining has more than doubled the code in my fragment shader
texturing, lighting, and bevelling: 12 lines of code
just doing outlines: 19 lines of code
Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •On the other hand I guess it would be fair to say these graphics are looking a little...... muddy
Eh? Eh? Eh? 😁
Eniko Fox
in reply to Eniko Fox • • •i'm commander shepherd and this is my favorite spot on the citadel
(seriously i cannot get enough of looking at this particular subsection of a screenshot i took of the outlines in my voxel engine)
reshared this
Oblomov reshared this.
Eniko Fox
in reply to Eniko Fox • • •captured a little fly through video for y'all. i can seriously just fly around this one chunk for 10-15 mins at a time enjoying the aesthetics 😁
#GameDev #IndieDev #ProcGen
Eniko Fox
in reply to Eniko Fox • • •debating what i wanna do with grass in my engine. atm i have a block shader, and a model shader. i feel like i could efficiently implement shell textured grass by making a shell texturing shader, but i also don't want to balloon the number of different shaders i need to render all my terrain 🤔
i could just use the model shader, but it becomes a pain in the ass to implement shell textured terrain then
i could try and combine it with the block shader but they both do really different things
Eniko Fox
in reply to Eniko Fox • • •hmm if i want to add bits to the shell texturing so it doesn't look bad viewed side-on i kinda have to go the model route
though i figured out i can get away with only 6 variations to get all the edge transitions 🤔 that could be doable if a bit annoying
Eniko Fox
in reply to Eniko Fox • • •i'm overthinking the grass thing so i've made the textures required to make the shells for a 16-tile transition and i'll just generate the model for each of those 16 and implement them in the engine and move on so i don't wind up blocked by choice paralysis
if i want i can always just change it later
Eniko Fox
in reply to Eniko Fox • • •hell yeah, grassy voxels
#GameDev #IndieDev #PixelArt #ProcGen
reshared this
Ossi, Lord Caramac the Clueless, KSC e Oblomov reshared this.
Eniko Fox
in reply to Eniko Fox • • •here it is compared to my style guide image. how did i do, chat?
i probably wanna pull the grass away from the edge a bit more because it obscures the outlines, but i'm pretty happy with this overall
reshared this
Oblomov e aeva reshared this.
Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •here's another close up i really enjoyed of the terrain in my block game
#GameDev #IndieDev #PixelArt #ProcGen
reshared this
Lord Caramac the Clueless, KSC e aeva reshared this.
Eniko Fox
in reply to Eniko Fox • • •i've got columns of chunks working, but they're not really connected at the moment so i gotta fix that next
#GameDev #IndieDev #ProcGen
Eniko Fox
in reply to Eniko Fox • • •chunks connect properly now! with bonus shot of the sprawling cave systems beneath the surface
i made a staged chunk generation system where chunks can request their neighbors be generated but only up to a certain stage, which keeps the generation from going infinitely in all directions, because the requested stage must always be lower than the chunk's current stage of generation
#GameDev #IndieDev #ProcGen
Eniko Fox
in reply to Eniko Fox • • •Eniko Fox
in reply to Eniko Fox • • •who's got two thumbs and infinitely spawning terrain? this girl 👈👈
#GameDev #IndieDev #ProcGen
reshared this
Oblomov reshared this.
j_bertolotti
in reply to Eniko Fox • • •Oblomov
in reply to j_bertolotti • • •Worms?
j_bertolotti
in reply to Oblomov • • •@eniko
Oblomov
in reply to Eniko Fox • • •Piko Starsider
in reply to Oblomov • • •arclight
in reply to Piko Starsider • • •common mnemonic for understanding orientation of axes in three-dimensional space
Contributors to Wikimedia projects (Wikimedia Foundation, Inc.)Runner 🏳️⚧️
in reply to Eniko Fox • • •Eniko Fox
in reply to Runner 🏳️⚧️ • • •Ossi
in reply to Eniko Fox • • •j_bertolotti
in reply to Eniko Fox • • •upload.wikimedia.org/wikipedia…