Well, I finished. That was… an experience. I set out to create a procedurally-generated timeline that follows the story of a lovably-dysfunctional country, and I think I achieved my original vision, sans one thing (but we’ll get to that later). For now, let’s do this post-mortem in order.
FIRST OF ALL:
WHAT WENT RIGHT:
Pretty much everything, up until the last day. I was relieved when I first found out that we could split up our 48 hours rather than enduring one stressful marathon session, and that made the experience very chill and enjoyable. I am a bit ashamed to admit that I fully embraced that legendary “feature-creep”, and while this greatly slowed progress, what I am left with is a virtually-innumerable number of possible events that can happen to your little country.
When an event is generated, it goes through a narrowing-down process. First, the overall category of the event is picked from the “event tree list”, as I have called it. The options are: (Political Affairs (20% Chance), Internal Affairs (25%), Pop Culture (50%), or Unique Occurrence (1%)) For this example, let’s say political affairs was picked. From there, an “event branch” is picked. This particular selection includes: (Change In Power (15%), Law Enacted (25%), Political Scandal (20%), and Diplomatic Relations (40%)) After that, each of these branches has many variables to make each event call unique.
This doesn’t even delve into name generation, where I basically sprinkled random.randints like salt on an extra-bland bowl of rice.
This brings me to my next “What Went Right”: Name Generation. I gathered up the top 100 baby names for both boys and girls, a list of over 2000 popular surnames in Europe (Even the rawest list I could find was still a beast to copy into a list in a way that Python could understand it.), and various spelling lists to add nouns, adjectives, and verbs. Although this probably was the most tedious step in my dev process, it was oh so worth it. Figure A:
My third of my triumphant triumphs was the way that events have a domino-like effect on the next ones. While much of what happens in a given event is throwaway fluff, Timeline (that’s my entry’s catchy abridged name) remembers quite a lot. This effect can be blatantly seen in examples like this:
It can also make for very interesting event sequences, as seen in this interesting executive solution to a problem.
Technically, the president (with a fitting nickname) did free Nate from prison.
(Sidenote: I guess I should probably mention the dates, which I think are really cool. Basically, you give Timeline a number of years to generate and it will evenly space (with some healthy standard deviation to mix things up) 50 events per year from today’s date on the calendar, including leap years and all that. Python’s calendar and datetime modules sure are nifty!)
My final and most right of the things that went right is just the sheer unpredictable nature of the game. Not a single timeline that anyone generates will ever by the same as anyone else’s. This makes each generation feel exciting and unique. (To me, at least.) This also made me feel the need to take screenshots of some of my favorite events, as I knew that no one else would likely see exactly the same ones. Here are some of my favorites:
(Not suspicious at all, right?)
WHAT WENT WRONG:
I am pleased to say that overall, on the front of what went wrong, I can honestly give an answer of “Not much.” Like I said earlier, I was pleased to be able to break up my 48 hours over the past week, but that led to one big P-word: Procrastination. As I blissfully coded away, I focused too much on my time limit (which I kept track of with a nifty little desktop timer), and not enough on the actual deadline of Sunday at midnight. I still had a comfortable 20 hours of time remaining on Sunday afternoon, but since 00:00 GMT is a significant amount of hours earlier for me, that meant that I had to quickly cut corners to put out a game on time. This led to a stressful couple hours, during which my laptop crashed, my internet decided not to work, and Py2exe, a program that I have relied on many times before for turning my Python files into executables, decided to flat-out break. I was luckily able to get Timeline submitted on time (heh), but I had to compromise on one significant feature: graphics. My original plan for Timeline was to be a navigable timeline (makes sense, right?) where the user could display and skip over color-coded events as they pleased. Instead, I finished with this:
Don’t let the gnarly-looking command window discourage you from playing, though! It’s still plenty easy to generate and skim through whichever events your little heart may desire. I just had something different in mind. (Hey, perhaps that will be the sequel!)
The second thing that I wanted to implement but didn’t have time for were starting and end-game events. I wanted to provide the reader with some sort of closure for their beloved country, but at the moment he or she is just slapped with a blunt “The End.” Maybe I can say that I wanted the reader to be creative and come up with their own ending! Yeah, let’s go with that.
Finally, I wanted to expand name generation just a smidge more to have slight differences between art, song, and video game names. Right now, all three media types use the same function to get their titles. There’s no noticeable side-effects for the most part, but every so often you’ll get something like this:
I think it’s fun to imagine how this game would be played.
Mini LD 53 was an almost-completely positive experience for me, and although I would have liked to have known about the 12-hour submission grace period before I almost threw my computer into the sun trying to finish in time, it has taught me some valuable lessons about efficiency and increased my ability to visualize what the code I type will do, without running it. I encourage all of you to download Dysfunctional Country Timeline Simulator 2014, and post what you discover! Finally, I’ll end this mammoth of a post with one of my favorite screenshots that I took while testing my game.
P.S. I used a timelapse program to document the entire 34-hour process, perhaps I’ll throw in some music and upload it somewhere!