exodussoftware
Game Development Blog
2 posts
Don't wanna be here? Send us removal request.
exodussoftware · 7 years ago
Text
Dev Blog 9/23/17
It’s only been a week since the last time I posted but I feel like I’ve made tons of progress since then.  Starting a new project after working on the old one for a year and a half is probably one of the most refreshing things I’ve done in a long time.  But enough about me onto the game.
My current project aims to be a mining and exploration game, gotta jump on that Minecraft hype like 8 years after the fact.  The game itself has no name, but maybe I’ll come up with some edgy/cool sounding codename soon like “Project Cyberpickaxe” except, you know, not stupid.  In a few sentences the idea is that you will be dropped into a cave that is extremely large and randomly generated.  You start with just your character and have to mine the resources around you.  As you go you’ll be able to build mining robots and set up outposts.  On top of that there will be interesting things generated throughout the map for you to explore, and enemies to kill.
Tumblr media
A very small sampling of the random generation
I have a little notepad document with the nitty gritty details on it, but I won’t bore people will tons of info.  Instead I’ll look at what has actually been done so far, which I feel like is a lot for about a week’s worth of work, not all of it will be covered in this post because I don’t want it to be too long, and its already long.
Algorithms
Here we come to the backbone of the game, everyone’s best friend the algorithm.   What I have mostly been working on this past week is the map generation which is entirely random.  Since nothing is set in stone the computer has to generate everything with whatever algorithm I come up with.  Almost makes me wish I’d paid more attention in math class.
For some explanation the game generates everything as tiles.  The game itself is from a top down perspective like your typical dwarf fortress, dungeon keeper, etc.  Every wall or piece of ore is a tile placed on a grid.  The tiles are not spawned onto the layout just like that though; I’ve experimented with this in the past and often times it leads to multiple tiles being put in the same place, something you really don’t want.
Instead all of the work is done to a 2D array, which I have cleverly named mapArray.  This array holds numeric values for every tile on the layout, and when a function is called it generates them in the correct places via some math magic.
Tumblr media
If you can read that it is the data contained in a part of the mapArray
For some perspective when I said before that the map is pretty big here is the sizing.  Each x,y coordinate in the array signifies a tile. The player is a little smaller than a tile.  The array itself is 600 wide and 338 high in size.  Doing some simple math that means the map will have 202,800 tiles.  The size could always be increased, but after walking around a bit it’s pretty large already.  If I go bigger it may start to distill the random elements and lessen how much interesting stuff you find.  My logic may be flawed but personally when it comes to random generation I’m a bigger fan of randomly generate a smaller area and chock it full of cool stuff rather than generate an infinite world where you only find something interesting once in a blue moon.
So we have a massive map, you are probably wondering what’s in it, currently, just the basics.  The game will include 5 types of ore, Judite, Tophenite, Chronite, Weilcite, and Nanite, thanks random mineral name generator. Each of these will be allocated to doing a specific thing like building materials, player upgrades, research, etc. Each mineral tile holds a randomly generated amount of that resource so how much you get from each one will vary slightly.  In case it isn’t obvious tiles will not be used up after one swing of the pickaxe, you can harvest resources from them for a little while, which hopefully will push the outpost building elements when you find an especially good spot.
Tumblr media
As you can see my programmer art skills are top notch
These ores are spawned randomly in certain percentages so some are rarer than others.  Aside from this in rare cases the game will spawn what I’m calling “chunks” for now.  Which are clusters of a certain ore to serve as a sort of jackpot if you find one.  There is also a chance for any ore that spawns to become a rich deposit which will give more resources than an average one.
On top of this there is an algorithm in place that spawns underground rivers that curve around in random directions.  The next task in terms of terrain generation is crevices which will just be large holes that serve as obstacles to get around, the generation is proving to be a bit trickier though since I want them to be sprawling and the only ideas I’ve tried thus far come out very uniform looking.  There are plenty of other things I’d like to add to the spawning algorithm like vaults of treasure, enemy bases, and underground complexes but for now the basics are in place at least.
Tumblr media
Two rivers in this picture
There are other things that I’ve done, like a lighting engine, and how the game actually spawns the tiles across the map.  Fun fact if you tell your computer that it needs to run a game and spawn 202,800 objects and then also render all of them every tick and run game code it will pretty much flip you the bird and just not do it.  But we’ll get into that later.  For now, if you made it this far thanks for reading, if you’d like little more visual updates on what’s going on I try to post to twitter at least twice a week with gifs which is below.
https://twitter.com/ExodusSoftware?lang=en
0 notes
exodussoftware · 7 years ago
Text
Reflection on Indie Dev
Game development is a very hard thing to pin down.  About a year and a half ago I started my first attempt to get into the industry as an indie dev.  A year and a half later I finished my first game, Guardian.  I started a company, comprised of only myself which makes me wonder if I should even call it that.  I put the game on Steam and so far at least, nothing much has happened.
I decided a few days after release that I needed to make a much larger effort, or more accurately any effort, to interact with the community and get my ideas seen by people.  That idea is how I came to this blog.  It's an idea that you read about in plenty of places, but I was never sure I'd have much of anything to say.  I decided that I have to try something however and so here we are.  The hope is that I will post here regularly about the development of my current projects or if I have some odd revelation relating to the industry.  I don't plan to elaborate or go into my personal life or have commentary on the sales of my games etc.  I'd like to keep this strictly about the games I am in the progress of making to hopefully generate some amount of interest in them, as well as maybe give people a, however brief, look into the world of indie game dev.  The plan is in the future to also sprinkle in some pictures or gifs because who doesn't like pictures, also game dev progress is far easier to show via photos, and let’s face it code is boring to look at.
All that said this first post will actually be dedicated not to a current project, but to the one I just finished.  It's far too late for any sort of marketing angle, but I feel that this project was a learning experience.  There are plenty of posts around the internet that warn of the dangers of being an indie dev and the pitfalls you can hit but I'd like to throw my two cents in the hopes that maybe it will save someone else a bit of trouble. If you are an indie dev and you are making your first game or just getting your feet wet I suggest you keep reading.  I blatantly ignored articles like this and I feel I'm far worse off for it.
The most important thing to remember is time, it’s at the core of everything you will do as a dev.  That’s a broad idea but to put it simply game dev takes a lot of time.  If you are just getting started get ready because it’s a long arduous task from idea to completed product.  If you are in the middle of development stick with it, you’ll be happy you did when it all comes together.
As any game takes a sizable amount of time you are likely going to hit problems. I had multiple instances while working on my game where I was just sick of it and wanted to be done.  The best advice I can give is to work consistently, but not to the point of exhaustion.  Take breaks but keep them short, a day, maybe two to decompress. If you work endless on your project you will burn out, which will lead to a long break where you tell yourself things like “I got so much done earlier, I can afford this”.  It’s far better to work at a moderate pace, if a bit slower, pace. Maybe more importantly, if you work yourself to the bone you are far more likely to make mistakes and not fully comprehend the systems you are putting in place, which leads to my next, and probably most painstaking, point.
When I look back at the creation process behind Guardian there are many things I can point to as problems, but the biggest was sweeping changes to the game’s systems.  When I started making it the game was set to be something akin to Metroid or Castlevania. A few months in I decided this would be hard to do, maybe too hard for one person, so I changed gears and decided to simplify the game down to something like Megaman X.  The games are somewhat similar in concept, but the more linear level design of a Megaman game seemed easier to create.  Several more months went by and my game took another turn as I realized a Megaman clone wasn’t really what I wanted, instead I wanted to make a modern take on the Metroidvania genre, making the combat quicker and adding dodge rolls and dashes.
All of these were terrible ideas and I should have stuck with the original.  I would get excited to add new systems and start down this new path without thinking about what the long-term effects were. As I said before it’s good to give yourself time to breathe, and really think about what you are doing.  To make an analogy game programming is like constructing a building, the foundation is the most important part.  Without it everything will topple over.  I’ve seen many devs, myself included, get very focused on an idea and it leads them to create entire systems before they even have the basics squared away.  In short, look at the big picture and have a solid plan before you get into the details, it’s probably the most important programming tip you could take from this post.
The next thing to say is something that many probably won’t consider because it’s taken more as a given.  I was the only one doing the programming behind Guardian, but I needed two others to help me, one to make art assets, and another to make music and SFX.  To do this I hired two freelancers to fill the roles. My musician was fine, but before I found the artist who is credited in the game I hired a different person.  At the time, I’d never hired anyone so I didn’t think too much about what I was signing on for.  As an indie dev, and really any dev, you have to remember that money is probably your most valuable and scarce resource.  
The first artist I hired abruptly quit after a little less than a month, claiming he didn’t have the time to continue the project.  This caused me to have to hire someone else and start entirely over since the art I already had wouldn’t match the style the new artist.  In short it was a waste because I was eager to get started and I didn’t fully look into and vet my first artist.  If I had I would have realized there was very little chance he would finish the project.  I wasted time and money doing this.  The thing to take away here is before you hire anyone, be it into your company or just a freelancer, make sure they are as dedicated to the project as you are.  In the grand scheme of things, I got off easy, a months’ worth of time and money, but imagine if he had worked with me for half a year before quitting.  The cost would have been astronomical.
I could go on but this post is already long so I’ll close with one last thing relating to time.  It’s very common for any indie dev to program first and advertise later.  After all I imagine you got into game dev to make a game not advertise it.  I hate to be the bearer of bad news, but this is the worst possible way to think.  In a sense, a game is only as good as its marketing. It is an unfortunate truth but in the world today there are countless things trying to grab your attention. Even over the course of reading this you have probably been interrupted at least once by an ad, text, snap, tweet, email, or who knows what.  In a world filled to the brim with content that is readily available you have to make an impression.
Personally, I made a twitter account and tweeted four times about my game over the course of development.  Aside from that I made the typical Steam trailer and screenshots, and my game was on the Steam store for two weeks before release, as it has to be. I sent out a tweet on release day as well as some free keys to streamers and figured it would gain traction somewhere, probably.  This might have been my biggest blunder.  The fact is no one knows you or your game exists unless you tell them, or happen to already be well known on the internet.  Even if you made a masterpiece no one will care unless you tell them about it.  Like I said you didn’t get into game dev to advertise, but you have to otherwise your game, bar a miracle, will just be lost amongst everything else.
Do anything, tweet (more often than 4 times), make a blog (but not after the fact), post on reddit, post on indie forums, whatever.  Talk about your game to the point of being obnoxious.  I think many people myself included think most people don’t care what they have to say, or they are embarrassed to show what they have been working on and afraid of criticism, my fear was the latter.  In many ways putting your creation out there is like asking out a girl (or guy) you have to put yourself out there if you want to ever have a shot.
Alright I’ve made way too long a post, if you made it this far, kudos. Assuming you have enjoyed this at all I plan to start rambling on here about the next game I am making soon.  I’d consider doing more posts like this in the future if people wanted more insight into this sort of thing but the plan is for this blog to be more dedicated to talking about the dev process and what I am doing.
The link below goes to the Store page of Guardian in case any are interested. #ShamelessSelfPlug
http://store.steampowered.com/app/676850/Guardian/
0 notes