[RELEASED] - Sim-You-Lation

Recommended Posts

People who saw my intro post might know, but if not, I'll say that I'm not exactly a super-coder. If anything, I'm more of a Jimmy Olson coder at the moment. I've been coding a few months, and I can't really do anything outside of the terminal yet. I'd like to make some GUI stuff, but I haven't really gotten the hang of it. And by the time I've learned something like PyGame, I think the Jam would pretty much be over.

But, at the saying goes... "If the mountain won't come to Mohammed Ali, he's gonna float like a butterfly and sting like a bee!" (I'm 100% positive that is how the saying goes.) So, rather than wishing I had skills to match what I want to make, I'll make the program I can with my skills.

See, there's one thing that I'm 100% sure I can code, because it seems to be the one thing all learners program at some point: a To Do list. I have, thus far, avoided making one because it was not actually useful for me.

It then becomes a very simple equation - I just have to turn "using a To Do List" into a fun game!

No, I'm serious. Please stop laughing.

Without wanting to reveal too many of my tricks yet (and definitely, definitely [I cannot stress this enough] not because I don't have them figured out yet) a lot of it is going to involve trying to replicate the "big, dumb [Moodlet] slot machine" that Julian Murdoch referred to in the episode.

Now, I suspect some of you are groaning about the idea of a "Gamification" app. But let me be very clear here - this is Simification, not Gamification. I consider that in strict definition a game requires challenges and goals which are intentional, complimentary and pre-designed. I suppose you could make a similar case for most "Gamification" apps, but I disagree - usually the idea is to reward you for completing self-imposed challenges that align with a desired result. This, however, will not do either. It's a pure player-driven Simification app.

Share this post

Link to post

Share on other sites

So, like a game of Munchkin, my program starts as a level 1 program with no class (heh, heh). Unlike Munchkin, however, my program will be done in under 2 weeks.

Started at midnight, did some code, went to bed.

This is basically what I have so far - takes some inputs, checks them all for validity. Liberty is clearly a fashionable young lady, I guess.

(Created what I think will be a pretty solid, and slightly expandable, function for that. Gonna be doing it a LOT and I don't want to violate DRY).

Sorry, I suppose I should be talking more about the game design, and less about the particulars of coding and how I'm trying to solve those challenges. But that's really all I'm thinking about at the moment. Can't rise above the trees to see the forest, yet. Tonight, I'm going to attempt to implement my first class! Not the first class of the game, the first one I've ever written. The "Sim" class, obviously enough. (I think. Unless I decide to rethink how I'm structuring it.)

I will also mention that I'm writing using PyCharm, and I really like it, so if you're wondering about the editor colors, that's what it is. It gives a lot of nice tips for me as a beginner.

Also, if it's not too much trouble, would someone mind PMing me the Slack link, please?

Reducing all of humanity down to a dozen things. Player has a few more varied choices, but this is basically what I'm use for NPC's:

Name, age, gender.

And then - Can you make friends? Can you go on dates? Can you WooHoo?

Currently, I'm thinking of using an 11 point scale: 0 - 10 for varying levels of friendship, and -1 for a hard "No". (children would be -1 romance, people the player hates could be a -1 befriendable, etc.)

I'm thinking about something similar for the player's career tracker as well.

Not sure how much I'll be able to do tomorrow - got to work all morning, and then I have a podcast to record & edit, but I'm planning in putting in a good 6+ on Sunday.

Share this post

Link to post

Share on other sites

Well, it took me significantly longer than I expected - most of today - but I can create and... well, I was gonna say reload a character, but now that I think about it, I've set it up to reload a character, but not their current state. So that might be an afternoon's worth of work on the other side of this. (Hopefully, only one afternoon.) Fortunately, that's not a problem at the moment. There's no states to save, because I haven't implemented anything other than character creation yet.

Honestly, a large chunk of my time was trying to create some .help files, so I could edit them in a text editor and then have the program call them back. I tried about a dozen different things to get it to work, finally did... then tried to save 2 help dictionaries into the same .help file, and God forbid you ask the json parser to have to recognize that there's 2 dictionaries. I spent 2 more hours trying to solve that, and finally came up with a simple solution - just make 2 files.

At some point, when I've licked the wounds, perhaps I'll venture back and figure out how to do it right, but probably not this project. The help files don't even have any actual help in them, yet. There's just lorem ipsum.

I think I'm going to have to sit down tomorrow and do some sketching of exactly how I want the rest of this to work.

I had some good plans, but I've since realized that on one hand, there's some things I've expanded since I had that plan. On the other, there's a few things I spent too much time on to want to scrap - but they don't really fit for how this thing is looking at the moment.

But this is the first time I've spent a full 8 hours programming. Considering one of the reasons I entered this was to give myself a yardstick, because I'm hoping to eventually transition careers to a programmer, this was a pretty good experience.

I think, based on this, I definitely am not changing that ambition for myself, but I've also discovered that some of the excitement of solving something is tempered a bit after spending 4 hours banging my head against it. (Also the fact that it's Sunday, and I worked 50 hours of my actual job this week as well.)

ETA: 2 hours after I stopped, and I just realized I was letting the fact it was a dictionary intimidate me. I should have used the same bloody method I was using to save and load player data and then interpret THAT.

Share this post

Link to post

Share on other sites

I finally realized that I was letting myself get too caught up in the worry that my code was going to look silly, and decided to just roll with it. I decided to stop trying to make it all look presentable, and instead just make sure it all worked the way I wanted to for now. I stepped away from the classes and help files and got back to implementing an actual program.

Now I've got about 1/3 of the game itself implemented - players can create diary entries. The player then defines a keyword he wants and a score value. Any time that keyword comes up again, it'll be given the same score value.

For instance "Today I went for a bike ride" - one might tag "bike" or "ride", and decide that biking is worth 3 points. Henceforth, biking will be worth 3 points.

I clearly still have to put some work into how it parses a diary entry - right now it'll check "bike" but not "bicycle". I'm not 100% sure I can solve that (a robust text-parser may be above my skills). For now, I'm also allowing the player to create generic tags and assign entries to those instead.

This is where something like a GUI would be helpful - I could separate entries from their tags at the time.

Also, points don't do anything, yet, but I hope they will in a day or so.

You can input things you did and give them a tag and a score. The game remembers keywords and associated scores.

I also implemented the ability to recover X # of journal entries.

My score today was 75!

The next step is going to be the Todo list & Moodlet system - I hope to spend tomorrow and Friday getting the Todo list function done, and then from there, it's not that much harder to expand that into the moodlet system. Well, it might be harder, but it's logically self-evident from how I plan to lay out the Todo system.

Once Moodlets are implemented, the game is technically "finished", but I still have some other things I'd like to try to get to - player level, relationships, etc.

Share this post

Link to post

Share on other sites

Well, I've been moving a little slower than I wanted to thanks to some health issues, so I was only able to put in a little time the last couple nights. However, I wound up learning a little bit about building SQL databases (specifically SQL Lite.)

To practice, I've now revisited the player info again - so now Sims can be added to a database. Still not sure how useful that will be yet, but it's a thing that happens.

More importantly, from what I was reading, it looks like I need something more structured like SQL to build anything like a TODO list. My attempts to shove everything into doc files worked, but it definitely seems pretty ramshackle by comparison. I was pretty happy to discover that the way I had been storing my player data leant itself nicely to simply picking up and plopping it into a SQL Database. Which I think is less because I'm an accidental genius, and more about the fact that the way a database is structured seems logical.

I'm a bit intimidated about trying to play around with SQL, but at least I'm using SQL Lite, so I'm not going to blow up anyone's website if I screw it up.

I suspect my health isn't going to improve significantly this weekend, but I'm going to do what I can - I'm not content with what I have now, but I'm not FAR from saying that I can at least accept what I've put out.

Share this post

Link to post

Share on other sites

Well, I think I was still a little intimidated by working out how I was going to set up my ToDo list, so I spent a couple hours converting all the Journal stuff to work nicely with SqlLite now. It was definitely procrastination, but honestly, it worked reasonably well. By the time I was done, I had enough of an understanding about interfacing the two that I was able to roll into the Todo list functions.

I got pretty much the majority of the internal logic working. Now I need to set it up to pull and push from SQL and to hook into the rest of the program.

I'd still like to get the slot machine part in this weekend if I'm able - ironically, the genesis of the idea for my "game" is the part that I'm not sure I'm actually going to be able to complete.

But even if I can't, I feel like I can at least say that I've completed a project of the scope I wanted to ensure was in there.

It's definitely neither as ambitious or as complex as some of the stuff I've seen people putting together - some of y'all are doing some incredible things - but for my first multi-week program, I'm reasonably satisfied.

The one aspect of my to-do list that I'm not satisfied with is the inability to cross off dates other than today. I think I know HOW fix it (just some more tinkering with the SQL stuff) but I feel like for every day I spend programming, I spend a day and a half bug-fixing, so I worry that if I do that now, it'll take up all the time I have left.

Share this post

Link to post

Share on other sites

I got a bastardized form of the Moodlets in. I think I've managed to basically get all the main features I wanted.

Still wish I could have done more, but this was kind of an enlightening experience. I'm not going to say I overestimated my speed or skill, but I definitely had some places that I thought would be easy, but were actually hard, and some things I expected to be really hard that took me like 15 mins. Finding out 1 week into it that I had actually been trying to essentially write my own version of a SQL database, rather than just using SQL, also didn't help.

Tomorrow, I mostly plan to do a lot of the basic polishing functions - spellchecks, rewriting menu text to be easier to understand, timing some things, etc.. I want to flesh out a couple helpfiles, and I really want to docstring all my functions - both for me, and because maybe if I get lucky, someone might be willing to critique my coding as much as, if not more, than my game.

Things I wish I had either the time or skill to implement:

- NPC interactions & relationships - I had an idea for this, but it turned out to be beyond my skill.

- Career & Ambition related prompts - I have the hooks in, but... ehh. If I had 3 days to implement it, I probably could. If I come back to this, that'll be the first thing I add.

- Multi-Day Scoring for Todo Items - At some point, this is just a limitation of a typing-based interface. Unfortunately, my nested menus means it's already several steps to get there. Adding 2 more to do that might start to rankle.

At the moment, I plan to finish everything and upload a .py version, and then get the .exe up in the next few days.

I finished up at just shy of 1000 lines of code (though I did leave in a couple of functions I wound up rewriting - for my own edification). My previous biggest project was about 300, so definitely increasing.

Share this post

Link to post

Share on other sites

I won too, at least for today! The game seems to correctly remember previous entries when restarted, so good job with that.

I noticed a couple of places where the wrong type of input would crash the game. One example is if you input 'today' on the prompt for which day to remember (though it does say the format is (MM/DD/YYYY), so that was probably my own fault ). I'm not very familiar with python, but if possible I'd recommend putting in some generic way to handle input errors and return to the last question.

Share this post

Link to post

Share on other sites

@Teljoor thanks for advice. I had planned for some bad inputs, but I definitely need to get better at trying to plan in advance for what errors people might cause. I honestly hadn’t even considered that one.

Now that I understand a little better how the process works, I’ll try to make sure I have all the core stuff in early next time so I can have a few days for people to test it.

@SharedControl honestly, that’s probably the best compliment I could get. Thanks.

Share this post

Link to post

Share on other sites

I think I stumbled across this as an itchio recommendation, but am not sure if its the same game. You should toss a link to the finished game in the first post of the thread

Edit:

This is a fun idea. While definitely not a traditional game, it's kind of nice to see a text adventure-style game in the jam

I did find a bug when entering the Time for my task. It says (Optional), so I pressed enter, and the program seemed to stop working. I could no longer enter any characters and pressing enter and escape didn't do anything. So I had to restart. BUT, the game remembered my character, which is awesome.

I played a few days worth of activities and got a score that I was eventually satisfied with.

Spoiler

I like that if you say you're not happy with your score, it just gives you more points