i juiced up the crude carpentry table: now it drops the items you craft, and materials involved in the crafting get a little animation. also it now shows the quantities of materials when you mouse over the crafting station for convenience

next is adding more items/recipes to the table to finish it out

i'm also gonna give splitting block game development into shorter (bi)weekly threads a shot. we'll see how that goes

#EniBlockGame #GameDev #IndieDev

RE: https://mastodon.gamedev.place/@eniko/115640571595780929

you can find the previous dev post here:

small change but on-screen overlays like crafting station material quantities are now sorted properly. took a bit of work to implement

this'll be nice to have later when there's multiplayer and nameplates and such

#EniBlockGame #GameDev #IndieDev

the first crude carpentry recipe is in! time to make some crude tables. they attach to each other to form various shapes and sizes! :3

#EniBlockGame #GameDev #IndieDev

doors are complex and we ran out of budget at block game development inc so you only get half a door and it's tidally locked to a single orientation, sorry

seriously though doors went from "oh this should be pretty easy" to "omg why is this so hard" SO QUICKLY

#EniBlockGame #GameDev #IndieDev

There is one thing that's making me reconsider "door in the middle of block" and instead doing it like minecraft, and that's what effect an open door would have on mob pathing since it's halfway between blocks and blocks travel between them

But I can probably work around it

#EniBlockGame

you can collide with entities (and so the door) now. took a while to figure out how to do efficiently

at the start of each tick, for each entity that has physics, collision boxes are stored for all collidable entities nearby. this prevents ordering issues and having to calculate collision boxes multiple times, which is expensive since it requires firing an event

atm its stored per chunk but i can go more fine grained later if it becomes a performance issue

#EniBlockGame #GameDev #IndieDev

finally wrapped my head around how to make blocks with different orientations so i could have east/west facing doors

and immediately got stuck again trying to figure out the implementation for making them 2 blocks talls :|

which is frustrating since i'm so close to being done with this dang door!

#EniBlockGame #GameDev #IndieDev

@eniko

you could slap a top face on there, call it a gate or window and do something else before returning to a full door

@eniko IIRC the way minecraft does it (or used to do it) is by having separate 'upper' and 'lower' door blocks, where the interaction with one also changes the state of the other one? There were a lot of bugs that allowed you to get "half a door" at one point or another.

But also, "fence gate" is a thing too, so single-height doors still have a place (or single-height with a 1.5-high collider like MC does)

@eniko I am sure this is nothing short of infuriating to work on, BUT the feature is looking good and I very much think it will be better once you’ve figured out the quirks
@thatgalsilver yeah and it's helped me create a lot of new systems that will be important for all sorts of stuff later, so it's not wasted effort or anything
@eniko yooo almost there 

@eniko Looks fantastic.

Clearly the solution is to make the person less than one block tall and implement half height blocks instead.

@eniko no octree for collision optimization? Gosh I remember coding 2D physics without a physics engine and having to write my own space partitioner for static geometry.
@meluzzy i mean the chunk grid effectively is an octree? just. you know. single level
@meluzzy for static geometry (blocks) it only checks the blocks the entity's bounding box intersects with
@eniko that should work out for now. Until you add something that goes too fast, like arrows.
@eniko ooh I do wonder, do you consider size (and any size changes)?
@zerodime I'm not sure I follow what you mean by considering size
@eniko Your example in the video is 1 block in height. The player looks to be 2 blocks in height.
If the player were to jump, would they still be blocked, if yes by what?
@zerodime oh, yes it takes that into account. You can jump over the 1 block. Though you can't with the stone block 2 blocks above it, cause the player won't fit through the 1 block space in between
@eniko Horray collision detection! Students always look at me wierd when I say this is the most complicated thing in the game
@eniko Very cool! What happens if you try to close the door while standing in it? Minecraft deals with that by *checks notes* not dealing with it. Nothing's wrong with that approach, but I'm curious if you've got other ideas.
@piper right now it shoves you out, but that's because I haven't made a minecraft like suffocation system yet
@eniko EniBlockGame is really coming along! Congrats!
@eniko Force fields sound good yet? 😇
@eniko here me out: sliding doors
@eniko I feel like every toot the problem keeps getting more complex 
@eniko yooo progress 🎉
@eniko BlockGame Inc. (TM)
@eniko so nice seeing your progress :3
@eniko Inflation even hit the block game we're screwed
@eniko The marketing writes itself:
“Immerse yourself in tidally locked features like doors.
Also the world has tides (see above).”

@eniko Doors are a meme in gamedev for a good reason.

Also I kinda like the general idea of doors being tidally locked. Ultima VII had a book that lampshaded the fact that doors are generally only on the south or east side of houses with an in-universe rationale.

https://wiki.ultimacodex.com/wiki/Ultima_VII_books#VARGAZ'S_STORIES_OF_LEGEND

Ultima VII books - The Codex of Ultima Wisdom, a wiki for Ultima and Ultima Online

@eniko The way I did doors is they split in half and they can be open or closed, but they take up the same space either way, and the only thing that changes is whether other things can move into that block.

If a peep is inside a door block when it closes, that's fine - they can still move either direction. They don't stop the door opening or closing either.

It's not realistic, but so far, I have not found any disaster side-effects.

@TomF tbh the physics/collisions isn't even the hard part of doors in this engine. The hard part is that it's a block, but with behavior, and non-block shaped collisions. Or rather that it's an entity, but it collides like a block, and can be placed and broken like a block

Also since it is 2 blocks tall, it's the first block like thing in the engine that is more than a single block in isolation in size

@eniko Oh, right. I link mine both vertically and horizontally. So open one, and they all open, but as far as the game is concerned they're all separate little individual door objects. As I say, because nothing can stop them opening/closing, this is fine!
@eniko Half doors are cute! Very cottagey
@eniko the corner desk is so satisfying
@fen *nodding with camera* :3
@eniko  furniture!!
nice!
@eniko I am slightly disturbed by the L-shaped one having no inner corner leg
@oblomov technical limitations 🤷‍♀️ I don't wanna have to increase the number of models from 16 to 256

@eniko I like that it shows you the item to be made, shows you the items you need's icons, *and* the quantity all right there

and the physical placing of the item on the table :)

@Nia0 :D thanks for noticing
@eniko Ooo the dynamic tables are so cute ​
@eniko that's so freaking cool! Mojang could never
@eniko I really like the intricacy. That's the sort of thing that gives it an Ultima vibe. More knick-knacks and buckets and barrels and baskets and furniture! Maybe a system for things to become dirty and be cleaned! Etc!
@indigoparadox that's so nice to hear since that's the intention :D definitely gonna add all sorts of bits and bobs
@eniko I really wish I had money to just throw at you rn
@thatgalsilver I appreciate the thought 💜