Below the Stone - A Pixelart Caving Roguelike about Dwarves
Created by Strollart Studios
A hand-drawn pixel art roguelike about dwarves, mining, and resource gathering.
Latest Updates from Our Project:
We just got boosted to 86% !!!!
almost 5 years ago
– Wed, Sep 15, 2021 at 08:19:38 AM
I don't know who that was right now, or if it was multiple people.
But all of a sudden we just got a healthy boost to 86%
Thank you very much to whomever that was, or if it was multiple people.
I feel like I had to mention that ASAP because that person/people deserve this instantaneous response.
Thank you very much for the boost!
Our kingdom grows stronger! On each and every passing day!
- Andrew
Designing a System for Saving Arbitrary Data
almost 5 years ago
– Tue, Sep 07, 2021 at 10:53:29 AM
This title sounds like it belongs on a research paper! BUT NO!!!
Today I felt like doing some "code prototyping" for the game. I am writing this code outside of the project because It doesn't really depend on much from my existing code.
I want to design a system that allows for the saving (file saving) of information in an "arbitrary" fashion. Meaning, the data could consist of many different separate/unrelated pieces. But each "piece" will be saved side-by-side in a file with all the other data.
This would largely be used in things like Enemies/Mobs/NPC's but can also be used for other entities that hold "state sensitive information". There could be triggerable hazards in the level, and they may need to hold data about their triggered state. Of course, position data would also be saved as well!
The player would also have its own data that might need to be saved too. But yea, you can see where this is going.
Other games have developed their own solutions, which is why this isn't a research paper :P there's nothing new being said here. The way I will write my code will be based on how others have built their systems. So our system will have similar benefits.
(Technical Jargon Incoming)
One case example that I use WAY TOO MUCH for different game design implementations is, of course, Minecraft. They use a thing called "NBT" (Named Binary Tags). Which basically aims to combine typical binary serialization with "JSON-like" serialization. Where the data in a file is accessed through a string (text) based name, with a "type id" next to it; to tell what the data is supposed to be (float, int, string, array, etc.)
One benefit of NBT's is that the order of the data doesn't matter. Because the data can be read and stored in memory based on the 'string name'. This is very technical, but for those of you who have experience with JSON serialization, you'll know what I mean. File data is read based on its names, not the fact that it's in a certain order. And the data itself is still stored in a "binary format". Meaning the storage is more efficient. And harder to manipulate.
(Jargon Over, for now)
But there are different ways this can be achieved. So I wanted to take a second swing at making a system that is simpler (because I did write some code previously), and straightforward.
This is what I came up with today:
(note, this code is not used AT ALL in the game yet, this was written in a separate project for testing purposes. And there are no guarantees this will be used in the game)
This is essentially the "root" of the system. At which all the saving/loading can happen.
And this is pretty much it, other than there is no option to provide a filename. This system allows for saving groups of data arbitrarily. The only difference here is that there are no "type ids". So each "data element" can comprise many variables, and the order will matter in those places. Unless I decide to make this system work more closely to how NBT's work. Which will mean data ordering will matter even less.
(And people could even design programs that read the file, and gives you a nifty little tree viewer GUI to view the data)
The only other thing that needs to be mentioned here is this:
Which is a C# Interface which allows you to create classes which implement that. And these are what allow you to produce custom "serializers" for specific pieces of data.
This means that the code for serializing "some data" is completely separate from the class which holds that data.
You simply create the class and implement this code to save and load data. (which is order-dependent as you might see)
^ Those last 3 classes are "dummy classes" I made for testing this.
And this is my test code. As you can see, when it comes to saving the data, all you need is a simple dictionary. You do have to produce a list of "saver classes" which are used for saving the various pieces of data, which could be solved by making data more "arbitrary" like NBT tags. Because all data will essentially break down to a certain limited set of types. (int, float, string, etc).
But this is largely proof of concept. And what I end up using in Below the Stone might be slightly different.
But yea, if any of you would like to use this code in your own projects, go ahead. It's very basic and boilerplate. And its only dependency is C# standard libraries.
So anyways, thank you all for tuning in!
- Andrew
Game Progress - Block Break Particles
almost 5 years ago
– Fri, Sep 03, 2021 at 09:02:16 PM
Today, I decided to make some visual improvements to the game.
Right now, when you break blocks, they just disappear (as they should of course). But I think we can all agree that spicing things up the particle effects can always go a long way.
We did actually have these particles implemented a long time ago, but at some point, I had made changes that broke the effect from spawning, so I had to remove the code that spawned them. Luckily, because of Unity Engine's Prefabs, I didn't lose the effect itself. So I wrote some code to make it so the effect could spawn again. And also made some small changes to the effect as well.
Breaking blocks looks better now!
I might even make some more visual tweaks to the effect to make it look better in the future, but this is pretty good so far!
Right now we are sitting at 72% of our goal. Which is pretty good I'd say!
Thank you to all the new backers. Especially the ones who first discovered us at PAX.
It's been pretty exciting to see people playing this game we've been working on for so long.
(And the code I have been writing all these years)
And I can't wait to see what happens on day 2 of PAX!
Thank you all again, good night.
- Andrew
A Sneak Peak at the Game!
almost 5 years ago
– Thu, Sep 02, 2021 at 06:48:42 PM
Below the Stone has been in development since 2018. This is the first biggest project we have ever worked on, and the first one that we have "taken professionally"; in the sense that, we have promised ourselves to finish and sell on Steam.
Below the Stone has given many challenges to us, which I think has kept this project enjoyable and engaging for us as developers. We have made many mistakes but learned many things along the way. Like understanding "Chunk Based Levels", and loading those said chunks. And what exactly the significance is of breaking up a level into a grid of chunks in the first place.
Also, when we started this project, we had virtually ZERO experience with Unity Engine; the engine Below the Stone is built on. We made many mistakes, and this ultimately slowed us down A LOT. If we had plenty of prior experience with Unity Engine and game development in general, I believe the game would be a lot further along than it is now. But we obviously can't change that. What we can do is commit ourselves to not give up, and finish what we started. We know there are tons of people who show genuine interest in our game and want to see it be completed. That is what has driven us to this day to never stop.
The development process might be slow and clunky, and we might not always be able to deliver when we want, but when we do deliver, It'll be done the way we want it. And it'll be an enjoyable experience.
For those of you who have just discovered us through the Kickstarter launch, you might have actually seen much from the game. If you search around on YouTube, you will find clips from older versions. But I think you all deserve to see some fresh gameplay. So I decided today to record an 8-minute video of what the game looks like in our latest version. To help introduce newcomers to what there is to come, and update those who have been keeping up with us. Enjoy!
Keep in mind, there is plenty more that has yet to be seen here. Plenty more biomes, more items, more enemies, more structures. This slice of the game gives you a good idea of what it's like.
And I hope you all like it so far!
Right now we are sitting at 65% of our goal, and this is only day 2!
We hope to see a boost at PAX West as well, so be ready for that.
And thank you all who have backed, and have shared us on Twitter or wherever else! ⛏
- Andrew
10k in 10 Hours! What a rush!!!! ヽ( ▀ ͜͞ʖ▀)ノ
almost 5 years ago
– Wed, Sep 01, 2021 at 05:04:47 PM
You guys are epic. No, seriously.
You never know what's gonna happen when you click that launch button, so many uncertainties, and you want to make sure you've done everything right. And I think we have.😊
Thank you so much to those of you who have backed so far. You are the true legends of the depths.
To summarize our excitement, I want to point out we attempted a Kickstarter in late 2019. Which unfortunately did not reach its goal; Though we did succeed in finding a load of new fans! We made a promise to those who did back us that we would come back stronger, and we have! Our original goal in 2019 was only $10,000. And as you can see, we have already (metaphorically) smashed that goal in LESS THAN 24 HOURS. Our 2019 Kickstarter only reached 50% by the end, and right now. We are sitting at 50% of a higher goal, and we still have 30 days left to go. This is both mind-blowing and humbling at the same time. And we are very thankful for the community we've grown over the past years. ⛏
For those of you who don't know, we will have an exhibitors booth at PAX West this week! So if you're going to be there, come say hi! And if you see a sign that says "Apogee", you're not far ;)
So thank you all for the support so far. If any of you want to support us but can't afford it, sharing the Kickstarter with people you know is support enough! You never know who might be a fellow adventurer. We can't wait to see what has yet to come! The future is bright (even from here under the ground).