Mobile responsiveness work

So the thing about making things mobile responsive is that it’s a user interface and user experience issue. It’s not a game issue. It’s not something I can fix by tweaking the PHP function, it’s not something I can fix by rewriting some logic.

What is it? It’s finicky, that’s what it is.

Obviously, I should have done a mobile-first design. I always tell myself I’ll just throw the website together right quick and then if I feel like it, I’ll go back and make the site mobile responsive. And basically I never do that. Although I did follow that idea when I put together the latest version of juliemartin.org, but that was yonks ago and it’s also not a slick-looking site. Look, website design has never been my forte. I can do it, I can do all the things, but it’s a bit tedious and it’s a bit boring for me.

It’s funny how I’ve changed over the years. Literally 20 years ago, there was nothing I loved more than playing with website design and using CSS and little snippets of JavaScript to change the look of my websites. And now it’s like… that’s not challenging enough. It’s just finicky enough to annoy me to mean I don’t really have mastery over it and that it’s not easy, but it’s not like it’s difficult to get things to look the way I want them to. (Note: it is still challenging to get things to look pretty, but that’s a whole other failing of mine.)

I’ve set next Saturday as the tentative date when I’ll launch patch 0.3.0a, which would include mobile responsiveness. I started tinkering with it around 3:30am this morning, like 12 hours ago, gave it an hour and was relatively satisfied with what I’d accomplished. But I’m not looking forward to the rest of the work. The <div>s related to the questions being correct or incorrect, or getting a fish or not, or finding food or not, all of those are annoyingly tricky as it is, so I do not relish the thought of trying to make them responsive. I guess we’ll see how finicky it is, eh?

Following up on my previous entry, I also started trying to code a 1% chance of a fun and random thing that happens, but I’m stuck, which is infuriating. Errors crop up everywhere! But why? I may have to shelve that ’till 0.3.1a, along with another 100 questions or so.

Finally, I wrote up an article at DEV about my experiences while writing the game and how you should just do the thing. I didn’t have everything planned out when I started and I still don’t know a ton of things and yet… here I am. Doing the thing. Writing the game. Learning things.

And on that note, I should probably go back to my CSS…

Patch 0.2.0a is out!

My dudes, I did it. I merged and deployed Patch 0.2.0a of River of Kurn exactly when I intended to! I am very psyched.

Patch notes are here at the forum: https://forum.riverofkurn.com/discussion/13/river-of-kurn-patch-notes-patch-0-2-0a#latest

Essentially, I rocked it. I:

  • built my question importer tool which works beautifully
  • fixed expiring sessions by modifying my php.ini to add session.gc_maxlifetime = 3600 and then adding some stuff to my pages that set the original lifetime of the session to 3600 seconds (1 hour) and then some math on each other page to determine if it’s been more than an hour since the session was last active. If so, it redirects you to a logged out page where it explains what happened. Very proud of this one!
  • refactored my change password function so that I could then implement a forgot password function. Which, you know, I had forgotten to implement in the first place! Whoopsiedoodle.

I did a couple of other things, which also included adding 100 Star Wars questions (no spoilers for The Rise of Skywalker, I promise!) and 100 questions on Human Biology.

I also posted to the RiverOfKurn Twitter account:

@RiverOfKurn

And I sent out the first issue of ROK News, the River of Kurn newsletter! You can see it on the web here.

Whew. I need a nap. (It, uh, may be 5:22am and I may not have slept yet…)

Anyway, another thing I’m doing, because I have no experience whatsoever in game design, is taking Will Wright’s Game Design and Theory course at Masterclass. Check out the preview here:

https://www.masterclass.com/classes/will-wright-teaches-game-design-and-theory

Will Wright, in case you’re unaware, is responsible for the Sim-type games. SimCity, SimAnt, SimCity 2000, The Sims, Spore. The list goes on. I have, legitimately, spent hours, perhaps weeks or months of my life playing this man’s games. Certainly, he knows stuff that I don’t.

I decided to go with the “all-access” pricing, because $120 CAD for a single class versus $240 CAD for a year of access to every single class was just a no-brainer. They have Shonda Rhimes, Aaron Sorkin, Garry Kasparov, Malcolm Gladwell, David Sedaris, Neil Gaiman, Margaret Atwood and so many more that I’d love to learn from, particularly when it comes to writing. But it was Will Wright teaching a class that got me to pony up the cash.

This isn’t sponsored in any way, I promise. I am just blown away with how detailed and what high quality the class is. It’s amazing. There are workbooks! Exercises! Homework! (I admit, I have not delved deeply into the homework side of it yet.) But just the lectures alone are amazing. My brain is teeming with ideas on how to refine my game just from the perspective of play. Like, what would make things more engaging for the players? What would allow them to feel more in control of their time on the river? Super exciting to be feeling so creative right now, let me tell you.

One of the things I’m thinking of adding is a daily game with your guide on the river, Dorene. If you can answer her question correctly (or win her game or something like that), you have a chance to win a reward of your choice, with one of the rewards being a surprise.

That surprise can be good or, because Dorene is a water nymph and is mischievious, it could be bad. I’ve already come up with the different options with 10% chance for two of the best things and 25% chance for the third-best thing, with a combined 55% chance for the two bad things. I actually cackled while writing it all down.

Then, thinking about random happenstances made me remember some of the Legend of the Red Dragon random events. I would love it when I came across a horse, for example, or got refreshed (max HP) or any number of little things like that, so I’m going to add in at least one of those, too — probably a 1% chance to occur when you’re foraging for food and have under a certain amount of energy.

Of course, the big question is “when”. hahaha, yeah, I have a lot of work to do already, so we’ll see where I can put in some of this more compelling gameplay stuff. Some bits would be easy to implement, some would be harder. I also deliberately wanted to be vague about how the game works, to let people figure it out for themselves, the way I had to when I was a kid playing Trade Wars 2002 and Legend of the Red Dragon and Sky Mountain. I can always add information or warnings or clarifications or notices to the game, but I can’t remove the information once they’ve taken it in, which would ruin some of the fun of discovering things.

As Will Wright puts it, it’s about finding the state of flow. If it’s too hard or unnecessarily punishing or complicated, then people will never gain interest in it. If it’s too easy or too simple or too boring, people will tire of it easily because they’ll master it quickly. (Think of tic-tac-toe — adults have no interest in playing because we’ve mastered it, but a 5yo would love it. Note to self: play tic-tac-toe with eldest nephew next you see him.)

The ideal state is the state of flow, where it’s hard enough but doesn’t punish you unnecessarily. Humour helps and so does the feedback you receive when you fail. After all, so much of playing a game is failure and learning how to do things better.

When I played World of Warcraft quite seriously, my favourite thing to do was to raid. I loved being in a group of 40 or 25 people and taking down a difficult encounter. (But honestly, I never again want to hear Sindragosa threaten me as my pathetic magic betrays me.) But I didn’t mind wiping over and over again, as long as we gained more information on the encounter. Like “oh my god why did we all just blow up???”, figure it out, fix the problem, then don’t get blown up and progress in the fight. Except then something else would occur, inevitably, hahaha.

One of my toughest learning encounters in World of Warcraft was the 25-man Heroic Blackthorn, in the Dragon Soul raid. The entire encounter takes place on an airship and the first phase is brutal. The second phase is worse. But the worst part for us was everyone dying in the first 30 seconds of the encounter. Something would be missed and we’d take damage. Or someone wouldn’t hug their buddy and the buddy would die. Or someone fell off the airship. It was maddening because we couldn’t progress far enough to figure out what the hell all the different problems were. (There were three separate issues that we had to iron out, as it happens.) We eventually got through it and the footage of us all dying constantly was pretty hilarious, in retrospect. At the time, though, that felt punishing. It felt hard for no reason. It made all of us want to give up in a way I hadn’t felt for a long time. (Did I mention the airship was on fire for the majority of the fight and the fire was buggy as all get out? Lord.)

Anyway that’s kind of where I think my game is at right now. The questions are a little hard and players don’t have quite enough agency. So on one hand, my game is a little too punishing (for no reason) and on the other, it’s kind of simple and boring.

It’s a very interesting problem to have and it’s a fascinating balance to want to strike.

All right, it’s late. I need to sleep. Back to work on Monday after 16 days off in a row. Hopefully I’ll still be able to work regularly on the game and get mobile responsiveness done for January 25…