Game
Home Grown: Beta

8 days ago

Beta Devlog 1.0-Pre7: Entities & Buildings


Previous Devlog: GameJolt, Itch

Support Development on Ko-fi!


Core Framework: 46% Complete
Beta 1 Content: 5% Complete


Welcome to the long-overdue Home Grown devlog! I never intended these to take so long, I was originally planning to have a new devlog every 2-3 months, but it's actually been about 6 months between each one.

My only real excuse is that Home Grown is an ambitious project and I am still a solo developer. And one of the big reasons I started from scratch for the Beta is that I do plan on working with a team in the future and I didn't want to put anyone I work with through the terrible code of the Alpha—that would've been a form of torture. But the game is finally at a point though where it has a stable development cycle, I'm actually finishing major features and systems and working on real content now.

For example, in this devlog I've finished the previously mentioned Tile Layer System and added a functioning test enemy! I believe this pre-release has added the most amount of "content", it somewhat feels like a game with a win/lose state, the win state being surviving enemies and the lose state is dying. But there's still only fighting, the most basic enemy type, and no reason to explore, which is why I'll be working on limb farming, open-world exploration, and more in-depth fighting in the near future.

For now, though, let's talk about what's changed and what's been added in this pre-release...


– — GAMEPLAY — – -

For this pre-release, I spent lots of time finishing the core framework. But the first significant change was the Player, and the first major addition was the Entity...

Entity Class and Fighting

Nerdy Factor: 2/5 [■■___]

So, I finally added the Entity class and, along with it, the first enemy, which is pretty much just the Player character with enemy pathing. Eventually it will be very different with unique textures and full set of animations.

But I have also added simple fighting.

Originally, I was planning to make a unique fighting system. Left-Click and Right-Click would be bound to left-handed attack and right-handed attack, and this would change depending on your direction (i.e: when looking to the right, LMB swings the back arm, and while looking left it makes LMB swing the front arm), and enemies would attack the same way and you'd have to block by swinging the same hand after they begin swinging and attacking by swinging before they have a chance to. However, when testing it with only the animations set up, it felt off.

So, over the course of a week, I changed the core of the fighting entirely, now having only left-click swing both arms. Right-click is now for blocking, but I have plans to make it change its action depending on your equipped weapon(s).

Because the fighting will be a major part of the gameplay in the full release, it's planned to have a dedicated beta update after the first beta release. I've been playing a lot of games the involve complex fighting systems and I want to do research them to create my own advanced fighting system, while also keeping it simple and intuitive for players.

Tile System and World Generation

Nerdy Factor: 3/5 [■■■__]

In Devlog 1.0-Pre6 I mentioned the Tile Layer System. This gives far more exploration potential as it separates the buildings and the open world; you must actively enter a building to see its interior and leave it to see its exterior and the open world again.

It's also all in the same scene, meaning it's a seamless transition whether you're leaving or exiting a building, and it'll allow the player to decide whether or not they want to enter a building as they can just walk past it.

This system is (mostly) finished!

Yes, it's a placeholder building and the transition isn't satisfying, but it's incredibly simple to change out with the textures I'll be adding in the future, and I will also make the camera zoom in and have a square vignette black out the area around the building.

Not only that, but the world now generates the buildings! They're pretty simple at the moment, but a system to generate decoration for the inside will bring them to life, along with highly dynamic building generation! This will use a dynamic randomization separate from noise, i.e. it's independent from the world seed. And, just for clarification, anything to do with the placement of World Tiles is 'seed-dependent' while World Entities, Items, and Objects are 'seed-independent'.

Lastly, the next big implementation is biomes.

There is only one playable biome right now, but I have set up a test environment with a system that generates biomes properly.

How it'll work is pretty unique. It's inspired by Minecraft and Terraria's world generation, with the world being easily expandable and progression-based, with specific biomes you can spawn in and with areas you must venture out towards to find the more challenging and rarer biomes. Because there will only be 2 or 3 biomes with the release of Beta 1.0, this system won't be very noticeable as it won't be fully utilized (yet).

There is one thing I need to do before this though, and that's a major refactor to the terrain generation, which I actually planned before I implemented the tileset generation. I'll go more into detail in the next devlog, but to give you an idea of what this is for, the game doesn't currently save the Y position of any tiles in the world, it only saves its type and then offsets them to connect each one properly. The big issue with this is the future implementation of the ocean, but also the interconnected world will make a lot less sense if zoomed out because of how poor this system currently is.

Why didn't I just implement it before implementing Tilesets? I had actually already begun implementing the Tile Layers and also the first two entities, and I wanted to get this Devlog out sooner rather than later.

Next devlog, the world generation will definitely be the focus due to all these upcoming changes and additions, along with the addition of the Object world class, which is pretty much any non-physics object in the world, like Doors, Chairs, etc.


– — MAJOR REFACTOR — – -

Nerdy Factor: 5/5 [■■■■■]

While I originally went into working on the Beta thinking "I'm gonna have a plan this time and stick to it!" plans can easily change, and that's how the FileSystem has ended up very different from what was originally intended.

There had to be a major refactor to the FileSystem, which I'll explain below. However, it is very boring and quite nerdy, so you may skip to the Gameplay section if you wish to do so.

So, originally, it was set up with "res://assets/" "res://data/" and "res://scenes/" and each has a "../game/" and a "../hg/" folder. "game" is the core framework, and "hg" is all the game content.

However, a much better system would have been simply "res://hg/" and "res://game/" and both of those including the assets, data, and scenes folders. What this means is it'll be much more easy to distinguish the Game Core changes from HG Content changes.

filesystem_refactor.png

As you can see in the above image, I also had a lone "control_styles/" which I've moved under "game/". The content won't need one because the folder is for control styles, and there aren't any control nodes that would count as content yet. So I simply moved the control_styles folder into the game folder. Lastly, "fonts/" is now under "game/assets/".

That's not all I had to refactor, though. I also had to fix the naming convention for variables, files, nodes, etc. Essentially, I had no real rhyme or reason for when I'd name variables or nodes a certain way. Some nodes used PascalCase, some used snake_case. Some variables used snake_case, some used camalCase or CONSTANT_CASE, and so I decided on the Godot naming conventions to follow, then I noticed many of the files were in folders that didn't make sense for them, so I had to find the right folder for them, etc. etc.

To put it simply: Almost everything had to be refactored, including Nodes, Files, and Code. But now, everything looks mostly uniform.

However, on top of that, I did a lot of other refactoring unrelated to code cleanliness or file organization. This is where I don't wanna get into all the details because there is way too much to cover, but under the hood most of Home Grown has been entirely revamped with improvements and optimizations all around.


Closing Notes

Originally I wanted to do a lot more before this devlog, but I had already delayed it by I think 2 months because I kinda got distracted experiencing my first true relationship.

I'm not going to discuss much of it because I want to keep my private relations separate from my game development, but to sum it up: Last year, I had two horrible first relationships. However, since February of this year, I've been fortunate enough to spend much of my time with the most amazing person I've met in a while.

So I'm doing pretty damn good, just had a terrible dating life for a bit and now have a stable relationship.

The time between this and the next devlog shouldn't be as long as the wait between the previous devlog and this devlog. If things don't go as poorly as previously, next devlog should be about two months away.

Now, it's time I got back to work!


Support Development on Ko-fi!



0 comments

Loading...

Next up

The second track of Six Hours at Diddle's OST, "Grim Sounds", is now on the Game Page

Devlog 2: Out of GameJam Phase!

The combat system is already being implemented and there are also some advances with the environment (WIP)

#gamedev #indiedev #godot

Alpha 3.0 (changelog): The Final Alpha Update

We’re excited to announce that we’re working on a new game, a 3D metroidvania with a Low Poly Pixel Art style. Stay tuned for more updates!!!

#gamedev #indiedev #pixelart

Beta Devlog 1.0-Pre6: Reanimating Corpses

holy shit the TJOC demo is good.

Zombie in action! #GameDev #Art #PixelArt

I got my first 1st place :D