doit

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

okay so this may seem a little unorthodox but bear with me here

what if

shell texturing in block game

Can't decide if using shell texturing is a great idea or a stupid idea
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?
corners would still look kinda pointy but ¯\_(ツ)_/¯

quick generating caves test

#GameDev #IndieDev #ProcGen

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

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)

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)

i was worried the corners would look too sharp without modification but honestly the smooth gradient does a great job without blunting the corners
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

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

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

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

@eniko all i can think of is block game + blobun and kitsune tails :3
@eniko cool!! Using XNA you said?
@fluidtoons yep! using the FNA reimplementation
@eniko fancy gave
@SRAZKVT be a shame if someone were to obliterate it by digging out an enclosure?
@eniko cursed idea: “immersive” terrain traversal in a block game.
@c0dec0dec0de @eniko That sounds like a descent idea.
@boki @eniko I think it’s probably cursed from a development standpoint
@c0dec0dec0de what like death stranding? >_>
@eniko haven’t played it. Somewhere on the spectrum from System Shock (crawl, mantle up onto ledges), that failed PvP shooter where people slid over everything, through Mirror’s Edge parkour jumping.
@eniko Ohhh the collisions are so good
@lisyarus i've had a lot of practice lmao XD
@eniko I can tell! Proper collisions with a voxel terrain are surprisingly tricky until you figure them out

@eniko @lisyarus

OK but can you buttslide your way through the cave

@oblomov @lisyarus no because that would require slopes and those are anathema in a block game
@eniko @oblomov I wonder why there are basically zero games that do voxels and support 45° slopes in all orientations. Ofc that's more complicated, but doesn't seem to be _that_ complicated?

@lisyarus @oblomov some minecraft mods add them

i think the problem is more like, if you add slopes people will expect you to generate them into the terrain to smooth it out, which adds complexity. but also, it complicates building

@eniko @oblomov Unrelated, about thread vs separate posts thing: I just opened your reply in a separate window and mastodon be like "idk here's the start of the thread 2 weeks ago, good luck"

@lisyarus @oblomov yeah it does that. usually i press back and click again and it fixes it

or i just mash the end button on my keyboard

@lisyarus @oblomov anyway i'll switch to weekly threads when quote boosts drop soon

i dont wanna switch before then because i'd have to do raw links which are not integrated well since they open on the poster's instance and not your own

@eniko @lisyarus I wonder if Hidden Path ever did a post-mortem for the cancelled in early access Windborne.

It used a voxel system that felt like an odd hybrid between Minecraft-style block voxel game and a Cube Engine game like Sauerbraten.

Something I recalling thinking at the time was that it wasn't obvious that Windborne was a block-based building game from most screenshots, and that it looked like a fairly unremarkable PS2-era RPG, so when combined with the early access skepticism, it was kind of hard to sell it to people who hadn't played it already.

It reminded me a lot of the situation described in the retrospective (Sadly, not online anymore based on my searching.) for the 1999 Wheel of Time video game, which blamed its lackluster sales on its box art (Generic brown castle wall with the title worked into an iron gate) and how it was mis-marketed.

@lisyarus @eniko @oblomov I think in many cases it's because bevels are aesthetically more "organic" than marching cubes for a game that feels like Lego
@eniko Gives me Descent vibes.
@eniko I wonder if it could be used as a environment-narrative tool, like enabled in caves etc but disabled on surface / open grasslands etc
@Wortex17 it looks too good to turn off, to be honest
@eniko @Wortex17 Could there potentially be a few specific blocks that have it disabled for effect, maybe like metal blocks or somesuch, things that wouldn't have the same natural erosion
@wizardwes @Wortex17 yeah its possible to simply not set a bevel index for a certain block but I gotta wonder if it's ever desirable
@eniko Yeah, it definitely looks best beveled, but you never know when that one thing will start telling you it should be different
@eniko so nice to follow your progress on this project ^^

@eniko nice!

Having coded some toy Minecraft rendering in LWJGL and raw 2 1/2 d approaches (skin editor and chunk viewer) i really appreciate the subtle points in your approach.

@eniko Minecraft quite honestly looks quite, boring. I know there are a billion mods etc, but I don’t want an unpaid job. I just want to play, not follow tutorial.

Said it a billion times, I think there’s more beyond what Minecraft gives us. Hoping we can get some cool games that pushes things further.

@eniko Yeah, Minecraft certainly has a... let's call it a "programmer art" aesthetic.

(Not that all programmers are poor visual artists, of course, but I'm among the multitudes who are.)

@eniko dang that is a snazzy rock texture
@Cyborus thanks! i was surprised how nice it came out 😊
@Cyborus @eniko eh it looks a little … cobbled together 
@oblomov @Cyborus i choose to call this rough stone rather than cobblestone just to be contrarian
@eniko it's really starting to look like something. imagining some ui on that and i'd believe this could be from a beta release
@0 at the rate its going it'll hit beta next month because development never slows down when you start putting in actual gameplay :'D
@eniko i don't get it. isn't flying through rad looking block caves the gameplay?
@eniko I think it's interesting how I can clearly see the grass shell layers, but that isn't a problem cause it stylistically works so well with the rest of the game
@eniko Not just the grass, to be clear. The separation between the layers
@Cyborus yeah its kinda funny how the lofi aesthetic just kinda papers over things that otherwise could've been visual flaws :D