• ### Blog Entries

• entries
12
27
• views
11917

This is the journal of an as of yet untitled game.

## Decaffeinated Passion

Coffee is my fuel. I drink straight espresso, a lot of it, about 12-16 shots a day, if not more. This morning I realised that I had run out of caffeinated beans. Rather than get some from WinCo, I decided to drink the decaf and tough it out until I had a chance to make a store run. I understand how dependent I am now. I spent a good hour trying to save a few variables with little success. Simple little things would trip me up, or I would blank out in the middle of typing a line. It was a nightmare. I kept at it anyway, plugging along until a midday appointment, which turned into a mission to get my sister's license reinstated. After her recent wreck, the police informed her that her license had been suspended due to a mailing mix-up, and she would have to pay a good deal of fines to reinstate it. Anyway, long story short, thanks to a makeup shipment she got her license back. (Don't ask).

This really has nothing to do with the game, I just thought I'd tell you all how my day went.

The sheep have new models, but I'm not quite happy with them. Perhaps I need to animate them to get a feel for the way they look in motion. Here's a pic:

[sharedmedia=gallery:images:7805]

Speaking of animation, I've been avoiding it for some time. The entire reason I make space games is that they require very little animation, at first, anyway. But now that I'm making something with character models and animals, I really need to learn. It's not that I think it's going to be hard, though I know it will be; it's that once I become entrenched in rigging, animating, and blending, I won't get out until I have a good grasp of it, which could take a while.

In the less interesting news, I made all of the sheep rigidbodies kinematic. I don't know if that's a universal term, but in Unity it means that you can manipulate the rigidbody in every way except for force and torque, but it is not affected by gravity or external forces. The reason it's different from a Unity Transform is that it can detect collisions, due to the fact that it's still a rigidbody. I had been putting the change off for a while, since I knew I would have to rework the uber-simple movement system, but it was much easier than I expected. I simply had to change this:rb.AddForce(transform.forward * moveSpeed);
to this: RaycastHit hit; if (Physics.Raycast(transform.position, transform.up * -1, out hit, 999999)) { if (hit.transform.gameObject.tag == "Terrain") { rb.position = hit.point + transform.up * distanceFromGround; } } rb.position = Vector3.Lerp(rb.position, rb.position + transform.forward * moveSpeed, 0.1f);
Since this is Unity C#, the programmers among you, and probably everyone else too, can see what I'm doing. Essentially, the sheep shoots a ray straight down, and if the ray collides with the terrain, the sheep's position is set to exactly the position of the point where the ray hits the terrain, plus distanceFromGround on the vertical. The last line simply moves the sheep forward at a rate of moveSpeed lerped by 0.1f.

That's all for now, so have a nice day!

## Sheep are Dumb, Even When They're Smart

This new project is extremely relaxing, I quite enjoy watching sheep graze, grow, and multiply. The basics of a herd simulator are rather simple, I'll outline them here:

• Wander until food is found
• Note food's location
• When hungry, return to food and eat
• Grow in proportion to health and calorie count
• Once mature, if female, become pregnant (I could program some sheep humping, but that would be childish, for now it's magic)
• Have babies
• Rinse and repeat

It's funny how I ascribe meaning to simple little meaningless things. For instance, I programmed the sheep to eat a certain type of grass. The combination of the distance they were instructed to be from the grass and the speed and force of their movement caused them to shove other sheep out of the way in order to eat. I found this hilarious, and spent a few minutes watching them fight over food. Once I had a good laugh, I tripled the minimum eating distance, and the problem was fixed.

The problem with speed development is that I often don't have the time to observe how the game develops in the long-term. This can cause issues, but is easily fixed by setting aside a few hours to just play the game. This also brings up what is often a nightmare in my projects: saving.

Initially saving is not hard, in fact it is very easy. Saving becomes difficult, or more tiresome, when the number of variables you need to save gets out of hand. For instance, in my first dev-log, I mentioned a ship-building module for MLR. That module used arrays of floats to record the position, type, and rotation of blocks, once the arrays were saved, they could be loaded again. Unity would dutifully follow what was essentially a construction manual, placing every block with it's correct type, position, and rotation in a fraction of a second. It may seem as though that system is complex, but really, it was three variables. Just three. Yes, each variable was an array sized at 9,999, but it was still only three variables.

Now, saving in this new game will be slightly less complex. I will need to save approximately four variables: age, gender, health, pregnancy state, pregnancy development. The reason it's less complex is that two of those are bools, and the arrays are going to be at a size smaller than 149, rather than 9,999.

Once I have some actual gameplay, I'll throw a build onto itch.io, and you peeps can check it out. That's all for now, so have a nice day!

## Aimless Times

*Sigh...*

What on Earth am I doing?

In the past week I have created six game frameworks. I wouldn't call most of them games, but each is at least the beginning of a game.

I'll go through them here:

6DOF Space Mining

• Fully newtonian flight model
• Asteroids to mine
• Physics based firing system
• Raycast based firing system

Javelin Throwing

• Physics based javelin throwing
• First-person character controller
• Targets to hone your skill
• Terrain and grass for looks

"Ant" Simulation

• Survival of the random simulation
• Ants have calories, if they have more calories, they go faster, and the inverse is true as well
• Each ant is colour coded, red being dead, blue being fast and healthy, and all colours in between
• Food appears on the map randomly, ants who collide with it by chance are rewarded with calories

Top-Down Map Generator

• Blocks are placed down and a trigger zone deletes a path through them
• That's it

Platforming Battle Arena

• Two player local multiplayer
• Ranged weapon
• 2D character controller
• One map

Shepherding Wizard

• Wizard with procedural animations
• Third-person character controller
• Dynamic camera
• Essential peaked wizard hat
• Sheep which run away
• Sheep return home after being guided by the staff
• Trees of various colours between orange and green
• Grass and terrain for looks

This is not intended to be impressive, because it isn't. Some people get creative block and stop creating, other people get it and spin wildly in random directions with immense speed. I am of the latter group. I was working on MLR for a little while, but really, I couldn't keep it up, it's just not a one-man project. The mini-game I might keep working on is the shepherding wizard project. It has promise, it's rather fun, and it's simple enough that I could work on it alone. I know it must seem odd for me to go from making a game with murder in the title to creating a gentle wizard herding sheep, but maybe my brain needs a break from all the blood, violence, and darkness.

Here are a couple of screenshots of the shepherd game

[sharedmedia=gallery:images:7790]
[sharedmedia=gallery:images:7789]

If anyone has experience in this sort of aimless behaviour, please lend your advice in the comments. That's all for now, so have a nice day!

## A Discovery Unnoticed

Holy shoes in a bucket, I've realised something! While working on the planet-side generation, I off-handedly used a bit of trickery to place walls only at the edges of the map, which you can see below.

[sharedmedia=gallery:images:7751]

This didn't strike me as being very important, because I was out of the context of bulkheads and corridors, I didn't see the contrast. When I went back to the space section, something was off. I couldn't quite place it, the feeling was almost claustrophobic. I soon realised that the entire atmosphere of the game could be changed with a few lines of code, and fewer walls. I am now working on mixing these two methods, having big open areas combined with corridors and bulkheads.

I've given some thought to forming a team, but I really can't think of a way to give members a return on their investment. I could have people log their hours with a simple online tool, or perhaps return a royalty by code or assets contributed, but I don't want to make any promises. I personally am not in this for money. I don't think indie devs can survive off of releasing games on their own, so I'm not banking on making my fortune off of MLR. I would actually be surprised if I made more than a hundred dollars, if even that.

[SOME TIME PASSES]

I've given it some more thought, and I think I will form a team, on one condition. This game will become free, completely free. That way, there's no royalties or payments to be concerned with, just devs and the game. I'll write up some documents and post an ad in the Hobby section. See you all there!

## In the Heat of the Moment, I Lied

I just needed a day or so to recover, I'm still working on MLR.

I've added a little popup when the player mouses over an unequipped weapon. It tells you all of the information about that gun, and disappears when your mouse moves away. I've also half-implemented rockets, they just need weapon sprites and procedural stats.

I've added a functional, albeit barebones, shopkeeper. It currently sells four weapons, each slightly better than the free weapons near it. For now, the cost is simply the distance from Vector3.zero. I'll modify that to take the weapon values into account soon.

I plan to add ranged enemies soon, more than just RocketBots and the Rocket Boss. I'm thinking there should be elite enemies, almost like other players, with proc-gen weapons just like you. They would tie into the storyline and missions.

Speaking of storyline, I plan to do some writing soon, perhaps you find documents scattered throughout the game, telling you a little bit about the world this game is in.

[SOME TIME PASSES]

I had a conversation with another developer, in which they mentioned having planets. At first I thought it to be ridiculous; this is a space game, not like No Man's Sky, this is a proper space game, in space! But I thought about it some more, and the idea has grown on me. I could make assets for planets, it takes more creativity and skill than making cold, dead hallways and bulkheads, but I could do it. It really opens things up, in more than one way. In the space section of the game, everything is essentially made of corridors. Some are wide, some are narrow, but it's essentially all corridors. On planets, however, I can open things up, rolling plains and open grasslands, boundless tundra or constricting jungle. As a developer, my limitations become almost non-existent. Now, I know I can't do everything, I do have limitations, but this makes things that much cooler.

[sharedmedia=gallery:images:7750]

Yes, it looks janky right now, but it's the product of a few hours' work. Once I implement lighting and a day/night cycle, things will get cool.

## Accelerated Development

It is just past four in the morning, and here I am working. Some things have happened, and I can't tell you all for the sake of others' privacy, but I'm down a team member. It's difficult to keep going when you lose the reason you started. I mean, I had been making games long before I met this guy, I'll call him Joseph, but this project was a team effort, something we were both invested in. But anyway, enough of my personal life. I've made a title screen, and I'm doing a few master studies of Hans Zimmer for the music. As an indie dev, it's necessary to be a jack-of-all-trades, I do everything from level design to music composition, and I like it that way.

I've put the game up for a dry run on itch.io, but it's restricted until there's more of a game to play.

Also, I've named the game, Murder, Loot, Repeat.

[sharedmedia=gallery:images:7742]

Even as I'm writing this, I know I can't do it alone. I'm a code cowboy, I'm a mad 'genius', yes, but I'm no lone wolf. If I don't find another team member, this project will flounder. I have a few people in mind, but Joseph was entrenched in this game, it was a big part of his life, and that kind of dedication is hard to come by.

I'm coming back to this draft after some thinking. I can't keep developing this game, not right now, not for a little while. I'm going to keep posting my discoveries and progress on other projects, but this one needs to sit for a while. I'm sorry if this is a disappointment to anyone, but circumstances aren't favorable right now. If anyone wants the game's source, I can post it, but I'm hanging up my axe for Murder Loot Repeat.

## Take a Break, Man

I usually don't take breaks, but after working full time on this game for three weeks, I sorely needed one. Coming back to the game with a fresh view on things was great, and while my momentum was broken, I soon got back up to speed.

Map design is tricky in a game with generated areas, and since I've gone for the infinite approach, curating or pre-making maps really isn't an option. Now before you scream: "make chunks!", I thought about it, creating pre-made miniature maps that fit together in every configuration like an eternal puzzle. It's something I'm considering for the future, but for now, I've got gameplay to worry about, and the generated maps will do as a test platform.

In other news: I've quadrupled the room size, and added two new room types. There are hallways, normal rooms, and multi-rooms, as you can see below.

[sharedmedia=gallery:images:7737]

They are all a precise 56 units wide, are perfectly square, and can be placed in any configuration without creating inaccessible areas. Yes, there will often be the odd hallway that leads to empty space, but I'm working on solving that. The game now has a short "tutorial" which informs you of the controls, and can be skipped by pressing escape.

On another note, I've added soft faux shadows to everything, as an unnecessary layer of polish. I find it nice to work on something that looks somewhat good, rather than the ugly, lightingless mess which I started with. While I would rather not show you the latter, you can see what I have now below.

[sharedmedia=gallery:images:7738]

As always, the game is attached below, or just follow this link: https://solokeh.itch.io/the-void-2d to the web build. (I know the textures are bugged, it's something I'm working on). To anyone who's about to comment that the player should move forward locally when W is pressed, thanks, I know you're trying to help, but this is a twin-stick style shooter, and the controls are designed to be the way they are for a reason. That's all folks!

## Bosses and Fear

As I slowly flesh out the basic enemy logic, I realise how much we ascribe meaning to very simple behaviours. For instance, when an enemy's health drops below thirty percent, it will run away. Simple, right? But I can't tell you how many times in testing the glee I felt when chasing the little guy down and executing it as it scrabbled against a wall. It felt like I was dominating, turning the tables, becoming the aggressor, and all because of a few lines of code. To feel like an enemy is scared of you is something I haven't encountered much in games. Half-Life 2 really nailed that balance. The Combine would react like real enemies, running away while frantically radioing for backup, only for you to plant a bullet in the back of their head. I hope I can design enough of these behaviours to give the illusion of complexity.

The first boss I've made for the game is rather lacklustre, for good reason. It fires bursts of rockets after it sees you, doing so until either you or it dies. I need players to have a sense of progression, and if I put all of my effort into the first few bosses, the rest will seem boring. I desperately need to figure out animation for telegraphing purposes, but I just haven't put in the time to learn Mecanim.

In other news, I've doubled the room size and made the lights four times brighter. This has helped the trapped feeling you get from tiny, dim rooms. The textures are still bugged in the web build, but it's completely playable and smoother than ever: https://solokeh.itch.io/the-void-2d

The downloadable version is also available if you prefer, it's attached to this post.

That's all for now, please tell me what you think if you play the game.

## Rooms Upon Rooms (And Clutter!)

Things I have accomplished/tried to accomplish recently:

• Fine tuned enemy speed and starter weapon stats
• Completely rebuilt the rooms, now they run much more smoothly and fit together nicely
• Tried to spawn big rooms, and failed massively due to how the generation algorithm checks for existing rooms
• Drank a metric ton of espresso
• Made clutter! The game now has broken tables, rusty crates, pipes, and the odd lamp

If you're wondering how the game is looking, here's a GIF:

The code below is a snippet from the generation algorithm. It's mindbogglingly simple. This is one of four if statements, each moving up, down, left, and right, respectively. The code randomly selects a direction and if it is not on top of another room, it spawns one. This leads to the generation of what looks like a continent, thanks to Unity's random number generator. if (which == 0) { transform.position = transform.position + transform.right * 27.18f; RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.forward); if (hit.collider == null) { i++; Instantiate(room, transform.position, Quaternion.identity); } }
This is what it looks like at 1500 rooms using the above algorithm:

[sharedmedia=gallery:images:7729]

The new build is ready for testing, so I'll attach it here. I did get a web build running smooth, but the textures are bugged. Even so, if you can't download the game, here's the link to the web build: https://solokeh.itch.io/the-void-2d

In the .exe version, you can control lighting with keys F2-F7. Also, read the readme.txt file, it helps to know the controls.

(Also, the orange shotgun is bugged, it has no drag, so if you ditch it in space, bye-bye shottie).

## Chunk Loading and the Infinity Problem

Things I accomplished recently:

• Infinity!
• The game runs smoother than ice on a hot pan
• Massively reduced active trigger and script count
• That's it!

It's infinite, running smooth at thousands of rooms, with a sad amount of content. The problem with any infinite game is that you'll eventually get bored. The speed at which this happens is largely dependent on the amount of actual content the game offers. I'm excluding skinner boxes for the sake of this post. Right now I have three enemies and four weapons repeated endlessly with increasing semi-randomized stats and difficulty. That's not a game, that's a "you made it 20 rooms past your last record" simulator. However, this game is a week and a half old, so give me a break. I plan to implement mini-bosses this week, and perhaps events such as fungal infection zones, but just maybe.

This is an image of a thousand room dungeon from a bird's eye view. You really get to see how Unity's Random method works from that far out.

[sharedmedia=gallery:images:7718]

If you guys and gals have any suggestions, leave 'em here.

That's all for now, cya later!

[EDIT] I made fungus smoke!

[sharedmedia=gallery:images:7719]

## Sweet Sweet Loot

Things I accomplished today:

• I have successfully implemented four weapon types, with many, and I mean many, procedurally generated variations.
• Enemy damage and health now scale up when you get further in.
• Loot gets better the further into the dungeon you are.
• The game runs at a buttery 60FPS now that only enemies actively hunting you get non-kinematic rigidbodies
• Spiders, freaking scary space spiders that pop out at you and try to eat your face. *Shivers*
• Weapons now reload properly, with a rising tone to tell you how long the reload is.
• Ammo crates now give you the type of ammo you're using, which while unrealistic, helps the game flow dramatically
• Shoot-able main menu

I attempted to upload an online demo, but it lags massively in the HTML5 player and is sadly unplayable. Good news is, I'll attach a demo of the shooter module here, for your entertainment. I may release this module as a standalone game, it's that much fun.

System requirements (Approximation):

RAM: 4GB
VRAM: 1GB
CPU: Dual Core 1.9GHz
HDD Space: 200MB

If your machine doesn't meet these requirements, try it anyway and leave a comment on how it ran, if you don't mind.

Controls:

Movement: WASD
Aiming: Mouse
Drop weapon: V
Respawn: R
Reset Health(you cheater!): G

That's all for now, thanks for reading and be sure to check out the demo!

## The Beginning of a Perilous Journey

I make games, just like many of you. I'm not a mastermind, I'm not the next John Carmack, I'm just a guy who happens to make games. It started in freshman year of high school, in which I took a game development class, (lucky, I know). The software was Greenfoot, and the language was Java. I made my first top-down shooter by the end of the term, and I've been hooked ever since.

Now, enough backstory. Why are you here? Why did you click on a developer journal on this site? Perhaps you want to see something new, something different and artful, and if so, click away now. I make no claims of originality, I try to make games that are fun, I don't make games for art. I am making a game, a 2D top-down dungeon crawling bullet hell capship building space exploration diplomacy game. I'm two weeks in, and I have put together three modules. One is a dungeon crawler where you kill aliens with a variety of weapons and hunt for sweet loot.
[sharedmedia=gallery:images:7687]

Another is a ship building module, where you can create the ship of your dreams, save-able and fly-able.
[sharedmedia=gallery:images:7688]

The final module is fighter combat, a fast-paced zero-G arena.
[sharedmedia=gallery:images:7689]

I would love feedback once I'm ready to release a playable demo, and ask as many questions as you feel like.