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

... i don't hate it? 🤔

yeah i'm happy with these terrain outlines for now

#GameDev #IndieDev #ProcGen

another few shots of the new outline tech

#GameDev #IndieDev #ProcGen

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

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 >_>

On the other hand I guess it would be fair to say these graphics are looking a little...... muddy

Eh? Eh? Eh? :D

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)

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 :D

#GameDev #IndieDev #ProcGen

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

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

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

hell yeah, grassy voxels

#GameDev #IndieDev #PixelArt #ProcGen

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

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

here's another close up i really enjoyed of the terrain in my block game

#GameDev #IndieDev #PixelArt #ProcGen

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

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

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

who's got two thumbs and infinitely spawning terrain? this girl 👈👈

#GameDev #IndieDev #ProcGen

holy shit this is already spawning some sick caves, look at the awesome ravine i found at the end of this clip!

#GameDev #IndieDev #ProcGen #PixelArt

decided to add some simple caverns so it's not noodle caves all the way down

babe wake up, new block type just dropped

#GameDev #IndieDev #ProcGen #PixelArt

can i just say its interesting what happens to a block game aesthetic when you're not afraid of following oldschool pixel art techniques like minecraft seems to be

i added a way to toggle the bevel effect on and off and i can't stop flying around toggling it on and off and marveling at how much of a difference it makes

#GameDev #IndieDev #ProcGen #PixelArt

found another cool ravine, chat

#GameDev #IndieDev #ProcGen

i can finally hop around this world and IT'S SO GOOD 😭

#EniBlockGame #GameDev #IndieDev #ProcGen

it's such a massive difference to jump around the world and bump into walls now compared to being a disembodied camera clipping through the terrain

i uh, may or may not have spent several hours today just exploring and jumping around caves in my block game

anyway look at this cool cave i found!

#EniBlockGame #GameDev #IndieDev #ProcGen

i added placing and removing blocks, so i did what one does in such a situation and built a stone starter house

#EniBlockGame #GameDev #IndieDev #ProcGen #PixelArt

immediately stuck on implementing lighting because i can't decide whether to store lighting values per block, per face, or per vertex per face

It is pitch black. You are likely to be eaten by a grue

(grass temporarily removed for convenience while working on lighting)

#EniBlockGame #GameDev #IndieDev #ProcGen

ok, got some basic lighting going on, now to refine it

(surface flattened temporarily for convenience)

#EniBlockGame #GameDev #IndieDev #ProcGen

i mean, this *is* a bit better than standard minecraft, but... idk. i don't think it's enough better?

may have to try an entirely different approach and fall back to this if i can't work anything out

bonus cave shot with lighting

#EniBlockGame #GameDev #IndieDev #ProcGen

@eniko did you consider making light decay according to Manhattan distance? IE there would be a square-shaped fall-off instead of an octagon. It would be pretty blocky!
@fabiosantoscode that's what minecraft does and it creates the diamond shape, which is less pleasing >_>
@eniko @fabiosantoscode What algorithm did you use ? 😊
@theludovyc @fabiosantoscode i did the same thing, but also propagate light to diagonal neighbors
@eniko @fabiosantoscode How did you select the face on the block to increase light on ?
@fabiosantoscode i'm not, i handle the lighting per block, and when uploading geometry to the GPU determine the lighting for block faces from the adjacent block's lighting