Thursday, November 28, 2024

Devlog 11 - Systems!

Well, I've rebuilt my systems, I tried to design a gentle onboarding process, and I have given myself the day tomorrow to add some fun stuff into a build that has been almost entirely focused on being non-frustrating and robust, and then it's testing time again. Let's go through what I have tried to address!

Feedback 

After my first round of wider testing I highlighted three comments that really spoke to me about where I could improve the game, so here's how I've tried to address them:

"A lot of vectors to "do" things and I fear it's confusing." Firstly, the number of vectors have been reduced. Some of the things that were being handled with two separate vectors are now handled with a single one, and some of the things that the player had to do manually are now being handled automatically by the game. Secondly, I have built a small section of game that is designed to introduce the player to the various vectors one at a time, so that they are not immediately confronted with a whole slew of confusing options. I suspect this may feel a little too pandering, that's okay, it's hard for me to tell from my position and so I can only design it the best I can and wait for feedback.

"I wouldn't want the game to feel like it has a systemic core underneath it, but in fact the solutions be very linear." I have made a point of introducing the player to the idea that there are multiple ways of solving puzzles within this small onboarding section. When the player solves a small obstacle with one method, the game checks which method they used and another character points out the other method that could have worked. This is a small thing, but I am hoping to convey to players that this game will have mechanical non-linearity. There may be "consequences"* to your actions - maybe you will use a resource that you would have not used otherwise with a different solution - but I want players to understand that they have options. Such is the entire point of building a systemic foundation.

"[ability] felt really good because it had absolutely no gameplay system connected to it. I did it just to feel good." Some of the stuff in this build (and some of the things I hope I have time to add tomorrow) will absolutely be "just for fun" stuff. I want players to feel satisfied by overcoming challenges, but I also want them to have some joy in just poking at this world and seeing what happens outside of those challenges. This is the thing that led me to enjoying adventure games as a kid, the satisfaction of solving puzzles didn't kick in for me until much later.

Coding

So obviously I have been doing lots of this the past few weeks, and I keep talking about "systems" and so I want to show roughly what I mean here with a simple example:

Rarely have I regretted anything as much as the space between words in the property "Max Energy", a sin I pay for every day and keep meaning to change.
Here's an example of one of the player's abilities, which is "Flux" - giving and taking power from devices in the world. It's the most straightforward of your abilities, offers the least amount of fun, creative design, but when used in combination with your other abilities it offers some interesting gameplay options. In the process of using this ability on a device I have to do a number of checks to see which party has how much power, how much power each party can hold, and trigger a variety of different animations and responses based on the outcomes of these checks. I also know that every time I use this ability the player will have to walk up to the device and touch it, and different devices will require that the player walks to different locations, faces different directions, and plays different animations. Some of these animations will require the player to reach below the bottom of their feet, meaning we have to account for an offset (I have done enough animation work with AGS to believe that I won't need an X offset, but I can add this easily enough if it does become necessary).

As you can see from the code above, I've automated this whole process via a series of extender function calls and custom properties. I have to make sure that I populate each new hotspot with information that will drive these functions, but this is very quick and simple to accomplish. Then, when I want to add this ability to the hotspot I simply use:


With this single function call all of my animations, calculations and fiddly little things are handled for me, keeping my room scripts nice and neat and saving me from having to remember coordinates and sprite numbers/animation loop numbers, and meaning that I only have to write each function once. It's been a little intense getting these various systems built after my years of being away from coding, but it's coming together nicely. We'll see if this is smooth enough in the upcoming test!

Design

Most of my design lately has been focused on being gentle and informative, to help guide players into the experience, but I have still been thinking about systems based design a fair bit in the background, and playing a wide variety of different games to see how designers think about challenges outside of the very discrete world of point & click adventure games. It's really interesting to break games down into their core systems and see the various factors involved, and sometimes see the challenges that present themselves. Here's an interesting problem I noticed this week, playing "Inventioneers", a very well made clone of The Incredible Machine for iPad. Here's a viable solution to a level, in which your goal is to put the snowman's head onto his body:


It's typical fare for the genre, the balloon lifts the head, the timer wakes up the blower chap who blows the hammer which swings around and knocks the balloon into the scissors which cuts the rope, etc etc etc. However, one of the obstacles is a wall of ice, which you can handily melt by putting a flamethrower chap in place and dropping a bauble on his head to make him shoot fire. Anything in front of him with the "ice" property will melt, the snowman's head can pass through. But, in action:


See how the snowman's head happily rolls directly into the blast of the flame? It doesn't melt. That's because the snowman's head is a "goal" object, not an "ice" object. And so the logic of the game breaks just slightly because an object that I know is ice is not acting like ice. Of course, I can understand why the developers of this lovely children's game didn't want to draw a horrid animation of a lovely snowman's head melting down to a withered carrot and charred top hat, but this illustrates the sort of thing that I will have to be careful to avoid in my own project if I don't want players thinking "No, I can't send the snowman's head through there, it'll melt" and them getting stuck without trying it as a solution. Much to think on!

Summary

It's been a busy week, and I wish I'd given myself another day for adding fun stuff and polish, but tomorrow will have to be enough and there's no point polishing something that absolutely needs testing before anything else. I'm not confident that I've solved all of the problems with my first build, but I do think that I've taken steps to address the majority of the non cosmetic concerns (the fonts are still awful, there are still many missing animations and things), and I will start making plans for what's next once I have gotten some more feedback from folks and have a better idea if I have made progress or not! Thanks for following along in the journey! :)

PS: If you want to critique my code here, feel free! I'm very much an amateur, looking to improve my abilities.

*I am approaching consequences here quite differently to how I usually see it done in adventure games. I do not plan to scold players for their decisions, to change the ending based on their choices, or to present choices as 'better' or 'worse'. Instead I am interested in allowing players to solve problems in multiple ways. This is inspired by my love of RPGs and the like which allow a fairly wide variety of options to solve problems like "get into the building". I am even planning to have things designed so that if you spent a resource (say an inventory item) in solving a puzzle one way, but then think of a different solution that either doesn't spend that resource or spends a different resource, to allow the player to go back and undo their solution and do things a different way. Think of games like Eye of the Beholder, where you could hold a pressure plate down with a sword if you had nothing else, but if you then find a rock through the door you just opened, you can go back, pick up your sword, and put the rock down in its place. Or put the rock down as well as the sword. Or maybe your party is all casters & thieves and nobody uses swords, but rock throwing is great for you in combat. Options! :)

Friday, November 22, 2024

Devlog 10 - Progress, Again.

I have more than just old game scenes in my reference folder, but I'm keeping my PureRef file to these for now.

No Monday morning test this week, because while I rebuilt my UI at the end of last week, the UX still needed a fair bit of work. So a good chunk of Monday was spent doing UX refinements. It's mostly a thankless task because UX is a bit like a font. You only really notice them when they're annoying, when they're done well they are basically invisible to most users. It also seems to be the consensus that the best way to get UX right is to keep getting it slightly less wrong through each iteration until it's basically not annoying anymore. So a lot of the day was the cycle of implement, test, adjust, test, etc. By the end of that development day I had everything feeling pretty good to me (although there's a tiny bit more vector math I need to do in order to get some timings right. Later, though - it's a simple enough calculation, I just have to stay focused on productivity so I can get this new UI in the hands of testers).

I finished off the day by re-learning how to use drawing surfaces & dynamic sprites in AGS. You can't say I don't know how to have a good time.

Tuesday and Wednesday were spent building a second room designed very specifically to teach a particular idea, and on Thursday I designed another room to teach another aspect. Friday I was fixing, polishing and implementing stuff, not doing new things. Next week I plan on getting all of this gameplay working, polishing and tweaking and trying to make sure it feels good, explains itself well and if I can have it in some sort of decent shape, I plan to get testers looking at it again by the end of the week.

Where I think the project sits now:

I think it feels good to use your abilities. When I was testing the game before sending it off to testers, I felt the tedium of my own systems. When the tests came back reflecting this, I wasn't surprised. I don't think the whole thing is "right" yet, though it's a lot better. Still more to do, but I think it can be refined, honed, tweaked. I even expanded how the abilities can work a little, and I expect this will keep happening the more I design around them.

I think the mechanics can be used for some clever gameplay. You only have a few abilities, but they can be combined in interesting ways, and I already have a list of puzzles that I want to build. I fully expect some will work well, others will get thrown out, but this is my first time ever designing in this way, so that won't be a surprise.

I think I still need to find the fun. "Clever" doesn't necessarily mean "fun". I worry that the limited number of elements will make for repetitive gameplay - though of course aside from the things I've been building, I have the normal avenues of inventory items and dialogues with which to craft gameplay. But I have been very, very focused on the systems and the foundation are not the gameplay. On Friday I finally started to try to put the "game" in, as opposed to working strictly with mechanics, and I'm hopeful that it'll start to come to life soon.

The systems are not the gameplay. This was the topic of some extremely sleep deprived, late night, "I have to rethink how I approach implementing these ideas a bit" emails to a friend last weekend. Yes, of course, I have been focused on getting the systems sorted out. That is crucial. But once they are, the gameplay will not be a solved problem, in fact, it will only be the beginning of the problem. Designing a system does not mean that you've designed gameplay. It means that you've designed some tools. You then still have to design what you want players to do with those tools. My game is not fun yet because my focus has not been on designing interesting gameplay, it has been on designing a foundation. It's akin to making sure that it feels good to make Mario run, jump, shoot, fly first, and then you can design your challenges around these mechanics once they're right.

I think my game will look nice. I mean you all know what to expect from what my games look like now, and in drawing my own visions it's almost comical how quickly my style throws back in time a decade or more and I'm drawing the most Ben304 looking game ever. But I've looked at art a lot since back then, and I've honed my skills. I made a big PureRef file that you can see at the top of this post with some of the influences for the project, and the two scenes I painted for the game are scenes I feel good about. Even though I am plenty experienced at doing game art, it still takes a while to find the right direction for a project. I think I'm getting there.

Summary

In general, I feel good about the progress this week. My instinct is always to push forward, move ahead, feel productive, but the outcome of my last test told me how important getting this bit right will be. I've even changed one of the abilities slightly after having done some design around it, and this is what I think of as "the game telling me what it is". I can't promise that the next test will not be miserable for everybody too, but at least I'll know I've tried!

Thursday, November 14, 2024

Devlog 9 - Taking direction

Here's a sketch that I put down randomly months ago just to capture an idea that I went back and referred to when laying out a new environment this week.


The week began with me getting a great amount of feedback from my very patient testers, and some things were made abundantly clear to me:

1. My current interface is not clear, is not intuitive, and is tedious to use. This isn't a great surprise to me because the game's design was torn in a few different directions for a while, and it's still taking shape. Getting the interface right is something that can't be finished until I know what the game is, and that takes time! But working on this has become my #1 priority now.

2. Trying to use subtext with gameplay elements is not working. That should be obvious, but it wasn't until I put the game in front of other people. There's a couple of things that I have been trying to do in a clever way, and absolutely nobody understood them. That's okay, UI and UX design are probably my biggest weaknesses, but I know this: I have to refocus everything towards clarity.

3. People seem to be more accepting of the game's tone than I expected. Somehow this was my biggest worry going into the prototype testing phase, and largely people were pretty okay with the tone, it seems. I'm still a bit too wordy, I need to give the players a bit more motivation, but I have spent very little time on any writing, and I believe I can fix those things.

4. I think the game's second area is more coherent than the first. The feedback on this was not unanimous, and I think some of this is absolutely because of UI/UX issues getting in the way, but I feel this way, and the shape of the feedback seems to imply this. The difference being: I designed the first area while I was still working out how the player's abilities work. I designed the second area once I had figured them out. Hardly a surprise that my ability to design around them has improved.

5. My coding is reasonably robust. After the first two lots of feedback came in, I jumped back into the project and made a number of changes to try and make the game less tedious and unclear for the third tester, and because all of my interactions are handled with pointers and functions, doing so was a matter of just an hour or so worth of tweaking. That's a good feeling! The only thing that broke was the final puzzle of the prototype, which I am probably going to cut and implement in a more clear manner.

I want to share one snippet from each of the three test reports that I got back that really helped me solidify an affirmative direction for me this week:

"A lot of vectors to "do" things and I fear it's confusing." This was an excellent way of summarising the problems very succinctly, and kind of condensed all of the feedback down to its core. I believe it's quite acceptable to give the player various vectors to do things, as long as those vectors are extremely clear, and the onboarding process is curated towards clarity also. That way players can operate with intent and make deductions and decisions and feel like they are in control, rather than trying to guess at what will happen.

"I wouldn't want the game to feel like it has a systemic core underneath it, but in fact the solutions be very linear." Perhaps the ultimate compass with which to steer this ship at all times - if you give the player a lot of options, and the game allows them to do all of those things, but the actual world interaction itself is entirely linear, then the systems have been largely squandered. I need to make sure that my gameplay design aligns with my systems design. There is some dichotomy here between the solutions based puzzle game and the exploration based adventure game that I have been trying to balance, and to have it stated this elegantly is so helpful.

"[ability] felt really good because it had absolutely no gameplay system connected to it. I did it just to feel good." This was exceptionally valuable to me because I had spent so much time trying to develop the systems that this had been my core focus, and it was wonderful to hear that and interaction I had put in just as an exploration of the world and character actually felt rewarding to a player. It reminded me that players aren't just here to "solve problems". Having systems that allow the player to interact in detail with the world is great, but some of those interactions should be just for exploration, even if it's the outcome of using an ability. Exploration is gameplay!

Summary

Okay, so let's sum all of this up. 

Nobody had fun playing the prototype. Everybody mentioned that they liked the ideas, that the core is good, but the UI got in the way, and the UX got in the way, and it was generally a frustrating, confusing mess. The UI cannot be saved, and so it's been thrown out completely and I've rebuilt it. I am okay with this, I was not attached to it at all after testing the game myself using it a number of times.

Everybody seemed into the setting. A few things to polish and tweak, but I always expect that. That means that I am building a world people want to explore, and that's always one of my biggest goals. I feel good about this. I would say that I didn't spend much time on this, but that's actually quite wrong, I have dozens of pages of sketches where I slowly developed the game's world, bit by bit, earlier in the year. That fact that it was so long ago just make it feel like it wasn't much effort - I definitely put lots of time into it.

People liked some of my cool visual effects, disliked others. I am an art man, not a design man, and so I want to put interesting visuals on everything. Sometimes that is annoying. That's okay, I can strip out most of the stuff people disliked without being too disappointed. Some of the visual things were just distracting. I don't want people getting distracted.

Having rebuilt the interface, I'm now building a gentler introduction to the mechanics. I expect that I will probably make it too hand-holdy. That's okay, I will accept feedback on that part and take it in my stride. I'm still finding out the shape of this game, and I've worked on enough games now to know that some of the best ideas take a while to emerge from a project. If everybody hated all of the mechanics and told me directly then I would accept that my ideas are bad, and scrap the project. That hasn't been the case, so I am grateful for the silver linings, and I shall do my best to address the rest!

Friday, November 8, 2024

Devlog 8 - Putting it to the Test

This guy from Eric the Unready is one of my favourite guys.


Another week down, another few things off the to-do list. My primary goal for this week was to get a prototype in a decent enough shape that I could send it to a few testers with whom I've specifically discussed gameplay design with in the past, so they could try out my systems and share their thoughts on whether they work or not, what feels confusing, what feels tedious. The writing, art, animation and audio is all still very much WIP, but I have a different set of testers that I think of as more "mood" or "overall" testers that I'll show the game to a little later, when this stuff is all more set in place. In any case, I successfully hit my goal, and have sent a little prototype off. Depending on how busy those folks are, I'll be sharing the outcome of this in upcoming devlogs!

Testing

Monday morning's playtest this week went very well. Another reason that Kelsey is an excellent candidate for playtesting, aside from what I mentioned in my earlier dev diary, is that she's quite an emotive player. She'll mention immediately if something is frustrating, or confusing, or feels broken. She also reacts quite audibly to things she thinks are funny, interesting, strange, etc. In this case, I had put her in a brand new area with familiar elements, and a puzzle that was intended to be a combination of all of the elements that I had built - effectively, showing the player how the abilities they learned how to use in the first area can now be combined together in order to overcome an actual puzzle. The player is purposefully confined to a single room while they figure this puzzle out, and I watched Kelsey examine the elements, observe what happened as a result of her actions, and after a few moments I heard an audible gasp from her as she correctly deduced the solution to the puzzle, and watched with great satisfaction as she proceeded to execute her solution.

Success. I can design a puzzle using these systems! It'll be interesting to see what the other testers think, as they won't have the bias of having tested the game earlier and having familiarity with it that Kelsey has.

Programming

Most of this week was spent getting the prototype ready for a few more folks to take a look and give me feedback, and that involved a lot of cleaning up things I had built in a rush, putting in some more feedback for when players try to do things, connecting a couple of things I had been building in isolation together. I need to build a few more testing tools for myself, because testing is going to be very tedious until I do, even with a very short little snippet of a game like this. Adding in the inventory functions made me realise that I need to adjust some of my default interaction handling in my switch functions, but it's trivial to make that change. Mostly, though, I need to make sure I'm writing down what I need to do on my todo list the moment I think of it, because the amount of times I thought "I must fix that", then got distracted with fixing something else and forgot about it is amusing and a little annoying. In any case, I have no doubt that my test feedback will contain funny bugs. I certainly found a few myself!

Design

I have been playing lots of puzzle and narrative style games lately, just to refresh my memory on what I aspire to design towards and what I hope to avoid. It's interesting to dig into really puzzle forward games like The Witness and The Talos Principle again, and also more system based things, more narrative based things, and try to work out where I want to sit. Ultimately my goal is to make a reactive world, but by that I don't necessarily means a world that will judge you based on your decisions, or remember your choices - mostly I just want players to be able to try things and for those things to work, even if it might not suit a specific puzzle. I think of it a bit like The Incredible Machine - the balls still bounce, even if they don't land on the thing that will make them bounce into the right bin.

Replaying Eric the Unready this week has been particularly fun. I never got far in it when I tried playing it years ago, although I did think it was very charming, and I love Legend games in general. What I am really enjoying on a replay of it is how the game allows you to goof off regularly and gives you fun responses for it. If Eric the Unready has a puzzle that involves showing your ass to someone, you can bet that the game will allow you to show your ass to everybody, and often give you fun consequences.*

I also have been finding out how I want to handle dialogue in the game, and it might end up just being slightly differently to how a lot of my peers do it. I don't have anything innovative or noteworthy planned, I've just been noticing a few patterns about how conversations in games leave me feeling lately, and what I think I'd like to avoid.

Summary

With the prototype build sent out, I feel a little more at ease than I did last week. It's always a little odd waiting for feedback from testers, but I am actually quite calm about it. The nice thing about testing on such a small prototype is that I know that I haven't wasted too much time on an idea if everybody hates it, and I haven't designed too much game around it if people think that it could do with a fundamental change. Of course, it's hard to foresee anything yet, so I will get back to playing Eric the Unready, and deal with all of that stuff next week. Thanks for reading!

*Yes, of course there's a puzzle in Eric the Unready that involves you showing your ass to someone.

Friday, November 1, 2024

Devlog 7 - Late to the Party

Some of the books I've read/plan to reread as part of gathering inspiration for this game

As work on the project continues, I am still probably spending a few too many hours figuring things out rather than just building, but the results of this week's Monday morning playtest were a success - the thing I thought would be annoying did, indeed, turn out to be annoying, and so I dove in and fixed that as my first task for the week, and then started working on the next room of the game. Everything is solid enough now that I believed I could get the whole next room playable and have that ready as the subject for next week's Monday morning playtest. I did accomplish this, as well as allowing myself some nice tinkering time. AGS 4.0 is proving itself most amenable to working with my ideas once again.

Writing

I didn't actually do much writing this week, but I did go and gather up some of the books I've been planning to read & re-read as grist for the mill of inspiration. I'm in the rather lovely position where many of the most inspiring books I've read came into my life after the last time I wrote a game, and so I have a wealth of untapped inspiration bouncing around my mind. With the intensity of juggling a range of things I haven't made any time for reading in the last couple of months, but that's changing now, and I'm currently working my way through M. John Harrison's Viriconium series. I've loved Harrison's writing style ever since I read Light, and I knew Viriconium would have a setting that suited the world I'm building here a little more closely, so it's a delight to dig in to this. Especially after making it through The Pastel City which pretends to be a very standard Sword & Sorcery novel with a nicer vocabulary for the first 95% of the thing and then turns into a proper Harrison novel.

I still can't find my old thesaurus, and boy do I need it. I was directed to Power Thesaurus by Nic Tringali and it's lovely, but I really do like to be away from the screen sometimes.

Programming

A nice side effect of lurking the forums and reading people's technical suggestions this week was that I learned about the function late_repeatedly_execute_always which seems to have been added since I last used AGS. This is a wonderful feature and allows me to be much more specific about when things happen in the order of operations. Within two days of learning about it I had already used it to get a couple of things done that would have needed really annoying workarounds otherwise. What a great feature, that I am quite late to the party in finding out about.

Another thing on my list is to relearn how to use drawing surfaces and dynamic sprites effectively. This can be a bit of a rabbit hole, so I'm putting re-learning how to do that sort of thing on my future todo list, once the more gameplay important stuff is done. It's also quite possible that what I have in mind won't be very performant in AGS, and it would be very funny but not very wise to build a 2D point & click adventure game that runs slowly. It's a little frustrating to be so out of touch with this stuff, but I know I can learn it all again, eventually.

In implementing the game's second area I found an issue with how I designed one of my systems, and I built a workaround that makes it work correctly, but it's an annoying workaround and I hope to soon be competent enough at code logic to not need it anymore. For now, it works, and I can keep building the game, and it will probably never get in my way, but it's extremely inelegant and it would be nice to have it fixed properly.

Art

This week saw me paint a single scene up, but it was a scene based around a gameplay idea that I thought would be challenging to sell effectively in AGS with consistent visuals. It was nice to see it working properly after all the elements come together - hopefully the illusion works as well to everybody else's eyes as it does to my own. Non AGS developers will probably think it's a fun, atmospheric scene. AGS developers will probably be annoyed that I got it working once they see it. Except Ivan who will smirk and say "of course you did this :')"

I had to, Ivan. You know this.

Summary

Yes, it's taking longer than I would like. Ugh, weekly update seven and I've only just put the second proper room in the game. I only put the first inventory item in today, and there's not a single dialogue tree yet. What kind of adventure game are you even making!? Oh gods it's not edutainment is it?!?!* 

It's interesting how much longer "Making an adventure game with some slightly more complex mechanics in AGS" takes than "Making an adventure game in AGS". That said, the bulk of that time was getting the systems ready for building the game with, and it was very important to me. I am happy to be making steady progress on my todo lists, though, checking items off every single day, and I have a strong foundation† built now.

Next week I will be putting the final piece of gameplay into the opening section and then tidying some things up, adding some extra animations, worldbuilding text and things, and then I think it's time to show it to people. I'm not sure if I can get it into the state I wanted it to be before showing everybody, but it will be close enough, and there's no point trying to get it perfect before I know how well the core works. Wish me luck!

*it's not edutainment, any learning you do while playing this game will be your own fault, unless I accidentally make it a bloody allegory, please god don't let me make it a bloody allegory I respect my players intelligence too much for that surely

†"strong foundation" says the guy in the same blog post that he expressed his frustration at having to use a terrible workaround for a stupid problem he himself created, nice