Dev Update July 30th, 2018

According to my self-imposed schedule, I was supposed to have the more advanced features of the code editor done two weeks ago. Our vacation and a coding competition took the last two weeks away from me being able to focus on this project. I’m trying hard now to schedule time to have this done by the end of week so I can get to the other things I want to do before the end of the year. It’s not the end of the world if I don’t release by the end of the year, but still, without setting the deadline it won’t get done at all. Maybe that’s the point of setting these dates up?

Level #7

So, I need to implement the first “real” trolley problem, and the idea is to mimic some of the scenes from the MIT scenarios and provide solutions they haven’t really thought of. In the example, the brakes go out on the car, and the car is forced to kill either 4 homeless people, or 4 productive members of society and of course to hell with everything else. There won’t be anyway of knowing if the brakes are going to fail, or even the possibility of honking the horn. So, some possible solutions would be gear the car’s transmission down (because brakes are out and this is actually a common way of dealing with that), honk the horn, find a way for the car to go up on two wheels (is it possible to turn left and right and left and right until the car pops up on two wheels?), or crash itself into the medium or some other kind of obstacle. There’s no one in the car at the time; it’s assumed the car is on its way to pick someone up. Also, provide ways of scoring by using the above methods to simply reduce harm (ie kill 4 homeless people or just break the leg of one of the people in the other lane.

I don’t know if this is a good idea, but I had considered a leveling up process for the car where you could get jump rockets and things like that to make the challenges more interesting.

From a development standpoint, I need to create an initial driving routine that runs before the car gives control to the programmer. Also, pedestrians will need to move.

I just thought of a more basic level that would take less time to develop: Just have somebody run out in front of the car. Yeah, I’ll save the above scenario for one of the later challenges.

And of course I just remembered that I wanted to move the code editor up to this week instead of a new level because it would just make testing easier. It’s very frustrating the way it is now, so that’s what I’ll be working on this week, and I’ll revise the milestone dates when I’m done.

Milestones Schedule

The release date is easy, the work I’ve actually been dreading is setting up all the individual milestones that get me to that day. Tomorrow is July 1st which is, give or take 24 hours, the middle point of the year meaning I have about six months of development time before the end of the year deadline.

I need to take the list I came up with in the last blog post and assign completion dates for each of those development milestones:

  1. The first release version needs at least 16 levels
    • There’s still a lot of work to be done, but I have six levels now, so, if I were to set a deadline up of one level each week for the next ten weeks, (assuming I complete each one) that would put me at the beginning of September with about three and half months remaining.
    • Each week I’ll start a blog post with the idea I have and document my progress.
    • September 15th, 2018
  2. Finish the basic car code editor
    • Polish the car code editor to the point where it’s easy (or easier) to use. It doesn’t have any real features like move/delete or even save your code between trials. I won’t be doing anything like saving or loading older code so I just need to worry about the current work. Maybe we could save the program per level so if the player loaded an older level they’d see the same program. So how long would it take to do this? First saving the code between trials would take a day, then move and delete would take another day so I week after step one is complete.
    • September 22nd, 2018
  3. Actually score the player’s progress
    • I need to wrap this step up in step one, however, the current levels need to have a better scoring system as well. So this step is here for me to go back over the first few levels and add their scores. It should be easier because there’s not a lot you can do. Let’s just add another week for this because even though it may only take a few hours it will still be difficult to find time to do it.
    • September 29th, 2018
  4. Actual Graphics
    • Everything so far has been done with free assets from the unity store (or me attempting to do something with blender).
    • Pick an actual art style (low poly, cell shaded, etc)
    • End of October, 2018.
  5. Better Physics and Car/Environment Interaction (Was Damage to Environment and Cars)
    • Make whatever improvements I can to the game’s physics to make it more realistic. I don’t like the way the car “smokes” and the handling could be better. At this point I need to look at how the instructions are interpreted and consider allowing the player to set the amount of time instructions last.
    • Middle of November, 2018
  6. Better sounds
    • Again, buy stuff or make high quality sounds.
    • End of November, 2018
  7. Final Polish Stage 
    • This time needs to be used for marketing, polishing the UI, and other improvements. I don’t need to be making anything new by the end of November. I should even consider starting my marketing earlier.
    • Release: December 31st, 2018

My guess is this will change somewhat from now until the end of the year, so every time I reach one of these milestones I’ll make a blog post and compare the actual time with what I projected here.

EDIT: I just realized I have not decided what this game will get released on. I’m thinking IOS/Android/PC. That seems like a great start to me and luckily it’s Unity and they have build libs for all those platforms.

Car Coder Release Schedule

I believe in deadlines. At their worst, you deliver the product late, but still earlier than if you had not set up a deadline. They seem to mean more than what you would call a “goal.” In this spirit, I have set a deadline up for the release of Car Coder: December 31st, 2018.

I do not feel confident about meeting this deadline, but I  don’t trust the idea of confidence. Courage makes more sense to me; you are fearful, but you work through it. I suppose confidence is something you have after you develop courage, maybe? To me, confidence equates to faith in yourself, but I won’t have much of that if I don’t witness myself having courage.

I need to develop a punch-out list. I need to itemize everything that’s left to do before I can commercially release this game. It won’t be expensive, but I’m trying to build some capital up so I can do more stuff than I’m doing now, so here goes:

  1. The first release version needs at least 16 levels
    • (20 would be better, but 16 is a great start).
  2. Determine if the game should have Intermediate/Advanced car code editors, and if so, create them.
    • This would create a better gameplay experience, and allow for more complicated interesting solutions, but would take a while to finish.
  3. Actually score player’s progress
    • Currently, you can only get the yellow light “medal” after finishing the level because there’s so actual scoring taking place.
    • Points need to be awarded for completing the goals within a certain amount of time and with the least amount of damage.
    • Need to determine how advanced this scoring system should be. I could just setup something simple for now or create programmable parameters for each level.
  4. Actual Graphics
    • Everything so far has been done with free assets from the unity store (or me attempting to do something with blender).
    • Pick an actual art style (low poly, cell shaded, etc)
  5. Damage to Environment and Cars
    • Game items need to display damage
  6. Better sounds
    • Again, buy stuff or make high quality sounds.

That seems like the complete list. If I think of anything else I’ll add it. Now I need to take those items and break them down into actual implementation.

Car Coder Update

So, I made the first level where the car starts at a certain speed and you have to figure out how to dodge a “pedestrian” (which is just a darth vader cardboard cutout at this point). I had to figure a few things out to make this possible, one being how to stop time before the player clicks the start program button otherwise the car just speeds off before anything has happened. I’m considering doing this a different way, where the car actually speeds up in a startup mode on a stretch of track, and then the controls kick in once the car has reached a certain speed. My real goal here is to hack the trolley problem to show that there are always options, so having this startup time might be important, but for now this is the way it works. The current level is impossible to win though, because no matter what you do, you make contact with the pedestrian. What I need to do is gauge the level of injury to the pedestrian as well as the driver.

Another thing I need to do is create an actual parsed/interpreted programming language for the levels, but now that I think about it, I should just defer to code modules in a helper class instead of going through the trouble of creating a parser. My goal is to have the final, polished version of the game released by the end of the year, so I need to save time wherever possible. I’m finding that the levels get more and more complex, so having a generic handler won’t work for all situations. I consider myself a YAGI enthusiast, so I probably won’t do this unless it’s absolutely necessary.

Also, I don’t like the too wordy name,  “Self Driving Car Programmer”. I do like “Car Coder,” so this will be the release name unless you or I think of something better. I don’t have the new level up yet because I’m trying to figure out an easier way to build and deploy the code to the server.

 

Self-Driving Car Programmer

So.. I had this idea a while back when people first starting talking about cars having to decide who dies and who doesn’t when an accident is inevitable. I wanted to prove that it wasn’t as cut and dry as some of the articles on the web were saying, and specifically I was looking at this:

http://moralmachine.mit.edu/ (Click Judge to Play)

It’s neat, but I wanted to show that there are more than 2 choices at any point in time, and that cars can be programmed to do things that we’re not thinking of, so, what would happen if I gave people the tools to program cars, and then placed them in these situations again with all the variables of the real-world (or a good deal of these at least) and this is what I came up with:

A view showing the programming interface. You simply press forward, left, right, etc to make your car move. It doesn’t really work as expected, which makes even simple things a challenge. I like to think of it as the QWOP of driving games.
A view from one of the test town’s cameras. You can switch between these cameras to view the track and observe your car under your program’s guidance.

The missions start out fairly basic just to get the player familiar with the interface, and then gradually add in props and obstacles like traffic cones, cardboard cutout people, and other AI controlled cars. The “world” is a test track inspired by “MCity,” a fake town built by the University of Michigan to test self driving cars.

University of Michigan’s “MCity”

There’s plenty of work to be done still, and I’m planning to have at least 16 assignments done before release, but I’ll put up the beta version here soon.

EDIT: Here’s the link to the latest version of this game –

https://newcarrots.games/games/carcoder/