I've recently been really interested in block style games and I'm making a game similar in visual style to some that already exist, but I feel there are some things I could change about the mechanics and gameplay, and visuals and I wanna make the game extremely moddable. The name BlockenStein came from the idea in it you could seamlessly create mods in minutes ingame no external applications besides a text editor, and not only that new items can seamlessly interact and combine with old items, for instance, made a new type of wood with a blue and red texture? make a ax with it and the crafting system uses its woodblock group tag and a custom UV map on the ax handle to be automatically retextured with the new wood on its handle. The retextured ax is the same wood ax base item with a custom itemdata tag, beautiful. if that doesn't make you excited the list of updates ill be bringing in the future including that one will.
I'm doing this by adding all the blocks and items with a parser and text file, not in the source code. I programmed it myself and it parses my own programming language called FrankenType, I made the syntax myself, and it's bafflingly easy to add a new block and give it a texture. this means every item I added will be added with the same simple readable language anyone else can use to add or overwrite an existing item. A side effect of loading game content and resources this way is mods can be stored anywhere including the downloads folder and can be loaded without restarting the game or world your in if they don't add new biomes or change world gen features. FrankenType currently has selectable preset models but I'm gonna soon add the feature to select your own with a mere line of text, but first I'm prioritizing getting the player movement working, then before I tackle adding other entities I will release an alpha build for people to test out. I will continue releasing free builds for a while but if interest in the game grows enough I may charge a one-time fee then free updates after that.
I know it looks very similar to a game that already exists but all the textures are completely made by me and I'm gonna push it in my own direction as far as possible with completely unique blocks and items. Just because one game was made to look realistic, didn't stop other people from making their own realistic games. So I'm not gonna stop myself from making a block game in my own vision.
here are some screenshots from the game and its programming language, I embedded them but google has a tendency to switch its files location on its servers up so they may disappear, here's the google drive link with the screenshots. Anything and everything can and probably will change... after is a recap of my first devlog, I made a 20 minute video with narration but need to verify my youtube account before it will upload
https://drive.google.com/drive/folders/1uhyME7pzmwAvubjFSa-gHz0AVX0ZJQPA?usp=sharingthere are a total of 6 screenshots and 1 video of the inventory which I'm going to make darker to distinguish from the well-known blockgame
(side note, you may notice the inventory crafting system is unique only having 2 slots for ingredients and a third for recipes found during exploration to encourage exploration)
And now for the devlog portion:
so its been 2 weeks approximately I've been working on this but I got the idea a month ago and began experimentation with perlin noise, first 2d, then 3d, I ended up settling on a combination of both for my terrain generation, first a few 2d perlin noise maps are generated with scales exposed in the FrankenType mod file as "biomescale" and used to sample the temperature and rainfallamount and height at each block. Those values are used to pick the biome for that block.
the next step is generating each chunk. This is done in 2 steps, first create a array of every block in that chunk, then for each item loop through and place the appropriate terrain piece, this is done in 2 steps instead of 1 for 2 reasons, first when placing each block it needs to know the blocks adjacent to it inorder to place the correct connecting mesh. Unlike most voxel based games my game doesn't generate the meshes at runtime, it just doesn't render a mesh for hidden block and renders gpu instanced meshes (60 variations for each type of connecting terrain) but I've stress tested this and it didn't have a considerable hit on performance, whats killing performance is the chunkloading since its performed in multiple steps perchunk and im not even gonna detail the math for the 3d perlin portion because after hours of fideling with it I didn't understand what I had created, its in experimental stages the deform part in the frankentype file is responsible for controlling it, it can make cool archs setting ground thickness high and max height to like 10 or 15. Anywyas all that is actually kinda fine for performance, not good just playable, the problem is when its loading chunks between biomes, because the biomes have completely different terrain in each at the same block position. To solve this I average the 8 blocks centered around each block in a 2 block radius of a biome change. this is EXTREMELY expensive, to do this the 2d height map must be calculated 9 times for each one of these biome border blocks, it's still surprisingly runnable, and the moment the chunk loading stops the game becomes super super smooth over 60 fps for sure I actually haven't checked yet, but I think I have a solution, im just scared to implement it incase I break everything, I may take advantage of the fact the project is small enough I can back it up right now. But instead of averaging 9 blocks, I could just get the 4 blocks adjacent to it and average them or the ones after instead if I want a larger blur radius, this could have weird problems where the terrain change is unpredictable on both sides of the biome but I cant know until I test it
anyways that's what has been on my mind, here are the features of implemented, and the planned ones for the next 2 weeks
Features Implemented:
- custom programming language syntax, parser, and documentation for using it
- everything from biomes to items to blocks to textures are loaded with this
- Inventory System working dragging and stacks of multiple items combine when dropped on each other if its the same itemtype
- almost working flower spawning system, currently ignoring last item because of wrongly scaled noise value
- 2d noise map terrain generation with additional 3d generation to create overhangs and unique terrain
- slow working biome border smoothing function
- 3d model for the player character and texture and animations for walking, running, idling and 2 sword attack animations
Features Currently Implementing:
- creating switchable third and first-person controller(currently flys around for debuging)
- block breaking and placing system(this should be super simple I just need to create a block update function for connecting surrounding terrain to placed terrain blocks which may not be as simple)
- biome blocktype settings in FrankenType biome items for control over what biomes are generated with
Features Planned for next two weeks:
- faster biome border smoothing
- new block setting in frankentype for emitting light
- entitys?
- a couple new biomes?
- more bug fixes... yup
PS if your interested in checking it out here's the syntax for FrankenType
https://docs.google.com/document/d/1rn-i8rc3GSWxEn3FrBypFH-uGddjqVKC6O7MVDg2sVU/edit?usp=sharing