So Fun, So Good

I’m working on an older project now that I got excited about after taking up my new “follow the fun” approach to game development. It’s a tile based HTML5 game where I’m attempting to create procedurally generated quests that are actually interesting. Some games already do this, but I wanted to see if I could create something where the quests were nuanced enough to make the game fun. To be honest, it’s an ambitious project that I’ll probably not be able to finish because I a) won’t have enough time or b) the AI won’t be feasible to do in the browser. I may end up having to make a backend for this one (in go cuz I do go now.)

I’ll try to post what I’ve done so far (which isn’t much) but for now here’s a screen showing the opening:

Dogs, cats, snakes, rats, and bread oh my… dialogs, too!

It’s Only A Hobby Con’t

There’s two basic strategies I can think of for personal project development:

  • Heavy disciplined, all free time goeth the way of the hobby
  • If it isn’t fun, stop and do something that is fun.

Which is better? Which is more rewarding? Which is more fulfilling? Well, I guess I have to try each and see. That’s what I should do I think. Knowing this will be it’s own reward, right? So, the question now is, how long should I do each for?

Let’s look at some different durations. Some are obviously wrong, like an hour, or a year. So.. somewhere between those? Yeah I think we can keep going. One day? No. One week? Still a little too short. Nine months? Seems like too long. Six months? Still seems too long but it is in the feasible range. So, between one week and six months? What’s in the middle? Three months. After three months, would another month matter? I really don’t think so. If I am not able to come to a conclusion after three months then I probably won’t be able to at all. One month can go by fairly quickly in terms of actual time spent on a hobby project. So, three months seems like a fair amount of time to know what’s good and bad about the above two methods. 

I feel like taking the disciplined approach will yield a better end result, but I really won’t enjoy myself, and the reverse will be fun, but I won’t have anything to show after the three months. I’ll probably end up with about 20 unfinished projects.

I’ll do the fun part first, because the way my life is right now I think I need it. The rules are as such: I only work when I want, and I only work on things that are interesting. The goal is to let my interest in a project serve as the motivation to work. When I don’t feel like working I’ll do something else, or nothing at all. However, I will always document what I do. I’ll keep that discipline. Three months from today ends on November 29, 2018. I’ll write posts every 30 days as well just to track my progress and do a basic check in about my overall happiness/stress level (that’s in addition to posts when I actually work.) I already have something I want to work on so I’ll probably write a post about that as well. Maybe tomorrow.. heh.

It’s Only A Hobby

So, I’m realizing now I don’t have the time to finish this project the way I want. I tell myself to spend those five or ten minutes (that’s a joke) I spend on Reddit working on the game, but after a while of doing this I get stressed out to the point where it affects my “real” work which isn’t the point of doing this. I’m a creative person, so I believe these projects should be a sort of haven where I can let myself do what I want. Part of me things I’m not being as patient as I should be as well because my life won’t always be this busy. Being busy makes you feel important, but I hope I don’t end up having to be busy to like myself. 

Anyway, I need to dial this stuff back, and regroup I think. I don’t know if I’ve proven I can’t keep to a schedule or devote time to this project as well. Elon Musk says if you work twice as hard, you get twice as much done assuming you have the constitution he does. He doesn’t know if he has something others do not because he can’t jump in someone else’s body (hopefully) and compare their level of frustration after working for 12 hours straight to his own. I’m not giving up, but I want to know the answer to this. If I were to adhere “perfectly” to a schedule, how long should I maintain it before giving it up if it proves too stressful? Or, if I keep going, do I get stronger? More resistant to stress? Will I end up this way regardless, or do I need to put forth the effort. If someone doesn’t work out, they won’t get stronger, right? I need to answer these questions somehow.

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/