I failed

I was hyper-focused on releasing CarCoder for a while, but after a work sponsored hackweek where my team built a mobile app that does real time video object detection using Tensorflow, I had another idea that I could not ignore.

In between rocket league binges, I’ve been playing another game called “7 Days To Die” which is a first person/base building/survival/open world/crafting/tower defense/post zombie apocalypse game that I think is cool because of the following reasons:

  • It uses marching cubes instead of basic cube rendering for voxel map data
  • The game world is randomly generated using a neat blend of actual random landscapes/biomes with these prefab buildings/structures called Points Of Interest (POIs)

Marching cubes is established now but it’s a way of rendering a voxel based environment in a more realistic manner than just rendering a bunch of cubes (think Minecraft)

The prefab POIs are cool because they add these playable miniquests to the random world so there’s not just the typical sandbox experience like minecraft where you don’t have any real incentive to do much until nightfall. The only problem is once you’ve played one, if you see it again somewhere else, you already know everything about it, they are static elements that are always the same no matter how many times they get regenerated into a new world.

One of the games randomly generated cities. Each building/sign is a separate prefab which is then arranged by the world generator as shown above.

The idea I had was to change this, so that we could randomly generate POIs using machine learning so the player has an almost infinite amount of content. It’s a bold strategy and it will fail short of the goal but there’s so much that can be done easily with tools that exist right now I can’t think of a good reason not to pursue this project. I’m also using this to build my overall software engineering design/architecture skills so I can at least claim the work done here won’t be a complete waste ;).

Feedback: Part 1

I’ve already gotten some feedback that mirrors what I believe the game needs and that is the ability to remove single instructions. I also need to add a confirmation before you delete the entire program. Removing the instruction is weird, but my plan is to change the red X to a trash can icon, and then if you drag the instruction to it, it deletes it. I had to work this way in the past, I just got caught up trying to change it to remove the instruction if you move it completely off the coding GUI strip.

Breaking Sad

I was considering taking a break from coding on CarCoder and pursuing some other hobby projects I have been meaning to work on, but the main reason for working on CarCoder was to see the project through from concept to a truly finished project. I read that you should start marketing a game as soon as you have something to show people so that by the time of the actual release you already have an audience.

Now, I need to research ways of marketing indie games and start getting some real feedback. When I start seeing themes in the feedback I get (like graphics are terrible, I don’t like the editor, etc) I need to develop plans to fix those issues now before it gets too difficult to change.

Another feature I just realized I need to implement is the ability for the community to add content to the game. This will start with an extremely basic way to import your own levels by creating the JSON files already used for the game’s levels and/or stages and could develop into importing actual assets (security?)

It’s alive!

The cones are spawning in the middle of the road and then being tossed up as if they’ve collided with the ground, but other than that it’s great! Here’s the link:


I’ll add that to the side-bar as well. There are about a hundred things left to do, but I really need some feedback at this point in case there’s something I didn’t think of or something I want to change that will be too hard to change later.

Beta Release

Welp, let ‘er rip! The game is ready for beta, I just need to figure out how to upload it to this site. I don’t even remember how I set this up. Bother!

I will go work on that and update this post when it’s ready.

UPDATE: WebGL build failed to load the level files because WebGL doesn’t support os level functions.

That should have been obvious, and I seem to remember thinking that, but then immediately thinking I’ll deal with that later. Well, it is now later, so I have to deal with it.

I have to configure a static assets folder and feed them to Unity that way. So, the beta release has been rescheduled for next week! Stay tuned!

Player Progress Working

CarCoder can save the player’s progress finally. I worked on the single instruction deletion/removal code but it proved to be harder than I thought, so I switched tasks, and now you don’t have to start over every time you restart the game. I had already made the level progress object serializable in anticipation of eventually doing this and after some research discovered the PlayerPrefs class which works nicely for persisting string or int values between executions. The nice thing is it will work on any platform I build the game for, and although the WebGL build can only store up to 1MB that’s actually more than enough for what the game needs to store a basic object like this.

I have to get back on the single instruction removal stuff now, and, of course, some new bugs have cropped up after I fixed most of these. Now, for whatever reason, you automatically beat the level as soon as you start which is great for testing the level progress is being saved but horrible from the gameplay perspective. Unity’s UI support is great, but for me, it’s a slow learning curve, and what seems simple at first can quickly become complex.

Angular Velocity Listener Working

The game can tell how much your car is turning now and you can set a threshold on that amount to trigger an event. It’s used in level 14 where the goal is to have your car spin out of control. Only two things left now, deleting single instructions and saving progress. Not sure how saving progress will work in the web build. Localstorage maybe? dunno.. we’ll see!

Fixed Level 5

Cross that off the beta test punch out list. Now it’s on to the angular velocity listener for level 14. I’ve worked out a good schedule that allows me to work on the game and play rocket league (well.. let’s not forget work, school, and family as well.)

Progress Not Perfection

I have decided to clean the game up as it is now and begin beta testing. I wanted sixteen levels but I only have fourteen done which is fine. I started riding the train into work now that the kids are in kindergarten and we no longer have to drop them off at daycare, so that gives me time before work that I can use here.

Here is an off the top of my head punch-out list of the remaining critical bugs in no particular order:

  • Level four (or three, not sure) has another car heading towards the player’s car but the controls got mixed up so any instructions meant for the player’s car end up controlling the other one. I worked on this the other day and decided to use a new model for this car as well which is not working because the wheel colliders are messed up. This prevents the player from completing level four.
  • The angular velocity listener is half done. This component observes the car’s rotational velocity and accepts an expression like, “angular velocity is greater than 10,” which would mean the car is rotating very quickly. It needs to report back to the level manager when the listening expression evaluates to true. It’s used on level fourteen to determine if the player has spun the car around enough (has done enough doughnuts.) This prevents the player from completing level fourteen.
  • There’s no way to delete a single instruction. You can move instructions around using drag and drop, but you can only remove a single instruction by deleting the entire list. This makes the game too frustrating to play.
  • The game needs to save your progress. If you start the game over, you have to start back at level one. Another frustrating issue that will stop people from playing.

From now on, I will only work on issues that are truly blocking the game from its first beta release. The first two are total show stoppers, but the last two will also cause people to stop playing. There are some other features I would like to have, but will not stop anyone from beta testing:

  • Bronze/Silver/Gold awards when completing levels. In this case, they’re shown as different color traffic lights (red/yellow/green of course.) I need to develop a way to determine how well the player solved the level and reward curiosity and ingenuity somehow. This is actually a lot more difficult than I first thought because each level has its own criteria for determining progress. One level might be measured by raw speed while another will be measured by the number of injuries caused.
  • I would like to offer better coding controls somehow to people who want to get technical. The current structure of the coder is very simple and allows anyone to use it, but what if you want to accelerate and turn at the same time? My idea was to offer simple, intermediate, and advanced coding interfaces which all break down instructions into a new programming language just for the game, but that’s a lot more work than I want to admit.
  • I still want sixteen levels because sixteen is 2^4 (nibble), and, just as a general value, it often occurs in computer science e.g. hexadecimal notation.

Also, this is the model I want for the car (but I can not justify the cost without a product at least in beta):

Wish me luck!