Thursday, December 12, 2024

Devlog 13 - Nobody will ever grasp exactly how much effort I have put into getting the tiniest things feeling good.

It's so nice to know what I'm making now. Having actual solid direction on what I need to do is great, although it means that my todo list has gotten both longer and more filled with stuff that takes me way too long. Sometimes I think how much simpler things would be if I would allow myself to just design a straightforward AGS game, with inventory and dialog and that's it. But I know my heart wouldn't be in the project, it would scratch my urge to experiment with gameplay, and I feel like I've made enough of those already to do something different. It's just that everything takes so long now and while I can feel my skill at working with AGS script improving literally every single day, I also spent 3 hours yesterday fighting with room overlays and I still haven't solved all my problems there and I don't know how much more time I can justify spending on learning how to use them right now while the rest of my todo list looms.

This week I want to shout out vga256's EXiGY project, which was announced last week. I've been hearing about this for around a year, and we've spent many hours talking about design ideas, development woes, and the usual things that two people working in similar fields always talk about. There's some blogging about the process going on over there, too, so if you like reading these, you will probably like reading those.

Graphics

The build I sent out had the scenes roughly painted up, but being unsure about the solidity of the gameplay I didn't spend too much time polishing them, so I've quietly been seething at myself for these half finished, amateur looking scenes while I try to remember how to make computers do what I want. Anyhow, with things working better I started painting the scenery up properly this week, and found solutions to some of the problems* with the scenes ended up being a bit simpler than I thought. 

Of course, nothing in the scenery has changed at all. In essence they're exactly the same scenes, just now I've worked three times as long on them and am less dissatisfied with them. I expect some testers will struggle to notice even one difference between the 'bad' version and the 'fixed' version. But that's the way of the illustrator, I'm used to this. See the title of this blog post.

Coding

After my efforts last week, the last thing I needed to learn was performing a modulo operation in AGS. I know this is probably considered very easy but for some reason I have a hard time visualising how this works and so my three different effects that require this took me far too long to put together. At one stage I actually had an effect indexing through an array backwards. I'm a graphics person, right, I haven't done utility maths in years, so some of these operations I had to write out with a pencil, stare at them with my head in my hands for a while and then go "Oh, it's that easy? *sigh*". At one point James Spanos gave me some information on what will make the engine run slow that helped me understand the issues with something I had written which allowed me to refactor it, which was immensely helpful. Prior to that it was one of those problems where the issue was that I didn't even know what the issue was.

I have everything working more or less how I want it to at this stage, in terms of how it feels to operate your character's abilities in the world (with the exception of every single edge case that I *know* will crop up) and so after some more tweaking and adjusting I'm going to send out another build with the clarification that there's no more gameplay, I just need feedback on what's annoying and what's fun in my UX. 

I have no doubts that some stuff that I think is really cool will be horribly annoying to some people. There's one detail that I know is inaccurate, but feels so nice to use to me that I hope nobody cares. I had thoughts on how to fix it but it involves another two modulo operations and I don't even know how well the fix would work and I need a break from maths. I also have no doubts that some of the fine details will not be noticeable at all. See the title of this blog post.

Design

There's a fun thing in illustration where you make a change to an image and you can't decide, so you turn the layer on and then off again. Slide the opacity up and down. Maybe it's somewhere in the middle, but 47% opacity feels like too much, 46% opacity feels like too little. It's a kind of ensnaring vacuum that eats hours of your time. I'm finding the same with design - I move an element to the bottom of the screen, I move it to the top. Not sure. Let's make a hardcoded element a variable now so I can experiment more. Every script in the game has an expanding list of things that were once hardcoded and are now variables while I tweak and test and repeat.

It's amazing the things that I've found myself doing in the background because a mouse mode didn't feel right, or something felt too static, or things just felt wrong. Sometimes I find the solution very quickly. Other times it's the sad understanding that all the endless tweaking isn't fixing anything, you have to throw everything out and start over. Some things that seemed like a solution to something not feeling good ended up making it feel even less good. I want the player to always know what power they're using, intuitively. I want the act of using that power to feel good, like you're dragging that power around the screen as you move your cursor. Some nights I have stayed up until 3am trying to accomplish this. See the title of this blog post.

Summary

Sorry for the long post this week folks, I was out singing and playing guitar for 3 hours tonight and so my usual editing process was skipped over. These are the ramblings of a tired man who is trying to do illustration, animation, programming, music and various other things all at once and I know everybody reading this will think "Yes, Ben, that's ALWAYS the way it is". I know. I know the person making pizza crusts has attention to details doing that I will never even conceive of, as is the person painting lines on the road, the person writing a book about moths, etc. It all takes way too much effort and time and it's not fair that making good things takes a silly amount of work. But I'm enjoying the process so much, despite all my moaning.

I'm also still playing loads of Jagged Alliance 2 because it's the time of year I always get sentimental about long sessions in strategy & RPG games over summer holidays. It's probably how I ended up here in the first place. And Jagged Alliance 3 is really good and I enjoyed it so much, but Jagged Alliance 2 is Jagged Alliance 2, you know?

Thanks for reading :)

*the problems, in general, being variations on "this looks bad and I want it to not look bad"

Wednesday, December 4, 2024

Devlog 12 - Dynamics

This week was off to a good start, with the feedback from all testers being very positive (except when Windows Defender accused my project of being a virus and deleted it - searching the forums shows that this is a reasonably common issue and I'm guessing that until builds are distributed by something like Steam it will continue, unfortunately) and the general consensus was that with a few little tweaks, everything is in a very solid place. It's very clear to me now, looking back at the build I sent out a few weeks ago, where all of my design mistakes were but play isn't something you can taste yourself, like a soup. It's hard to know if a crossword clue is good or bad if you set the clue, because you already know the answer. And so it's thanks to the extremely valuable feedback from my testers that the game's foundation is solid, and I'm now ready to start building an actual game with it.

I'm also giving a shout out to Amberspire which was announced this week. Nic has been a great source of feedback for this project I've been blogging about (the source of the note "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 highlighted a few weeks ago), and they let me play an early build of this game and it's very frustrating to come across what is very much a "just one more turn" game when you already have lots to do, especially one with such a lovely aesthetic.

Coding

Following on from the wonderful range of suggestions given to me last week by a number of people looking at the code in my last post, I spent a good amount of this week taking my functions and cleaning things up. There were a number of very helpful suggestions that showed me how to make things more readable and aid trouble-free adjustments, and a few that solved a number of tiny issues that had been things I accepted because I didn't know of the alternatives. After the push of rapid changing and prototyping in the last few weeks I knew I would need some time to clean things up, and so had allocated this week to be time for renaming things properly, addressing new feedback, and refactoring code where necessary. I've still some work to do here but in general everything is much nicer to look at and navigate, so thanks again to everybody who gave me suggestions!

I initially suspected that this would be incredibly distracting, but actually it doesn't seem to be at all while in game. It also makes it extremely clear which ability you're using while this mode is selected, which is very helpful!

I also wanted to allocate a little bit of time this week to re-learning how to use dynamic sprites in AGS, which turned out to be reasonably nice and simple for the most part. One thing I was struggling with myself when testing the build was knowing which ability I had active, even with GUI buttons highlighted and the literal ability icons following the cursor around, so one UX thing I wanted to improve was making the currently selected ability immediately intuitive. Diving back into my poor, messy test room I made a simple dynamic sprite of a lightning arc that connects the mouse cursor to the energy meter as one of my first experiments, and while "Drawing some lines" is hardly the most impressive thing one can do with a game engine, I considered it a reasonably good "Hello world" starting point here.

Armed with that confidence, I then set out to recreate a warped glass sort of effect that I was playing around with more than a decade ago, adding in a few little extra touches to give that little 'science-fantasy' feel. You can see the result below, not too bad so far. I'm given some encouragement by this progress, and have banned myself from having any more fun with this until I've made some more of the actual game.

The first version of this I wrote this week had the FPS counter sitting around 35, which shows you that even a very low resolution game can run badly under the direction of a fool. This gif looks choppy because of the screen recording software which is missing frames (you can see by the loop counter), but it's very smooth and nice in game, even on my little laptop.

Writing

I still have only spent a tiny amount of time on writing, but in putting together a little bit of dialogue to help guide players through the build last week I arrived at an interesting thought. Often in game dialogue the player is provided with multiple ways to respond to a statement or question. A lot of the time in RPGs the choice is "Good alignment accept quest/Evil Alignment accept quest/No I don't want this quest", or Jon Ingold speaks on "Accept/Reject/Deflect". A lot of the time in adventure games we like to either just add some in for variety or comedy value. But what I found was none of these approaches quite suited the section I was writing, and yet it felt like I should have multiple options here.

Eventually after deliberating on this for a while, what I realised was that having the multiple options actually acts as a way of parallel information giving to the player. For example, let's say a character confronts you with "Why are you late for work again?"

You can give the player the following options:

-I slept in again, I had to deal with the baby half the night.

-Hey, go easy on me this month. Remember how much I covered for you in summer?

-Shouldn't you be focusing on your own work? Management says your sales are down.

Not particularly exciting examples, but the nice thing is that I might want to give all of this information to players, without having to force it out unnecessarily through linear dialogue. Even though the player only gets to pick one of these options, they are presented with all three points of information in parallel, so in addition to giving them the ability to pick a response that suits their style the best, the writer also gets to give them all of this information in a way that doesn't feel overlong. I'm sure writers think about this a lot, but to me this is a new angle to consider.

Design

One of the most interesting things to report is that I thought the prototype build would be far too obvious, be considered a little condescending, and almost be annoying to players. Not at all. In fact, some of the things that I thought were too obvious were perhaps not obvious enough. It's so interesting to be so wrong about these things. In any case, I've committed to making players as entirely aware of how the various elements work at all times so that the interface is never the challenge, only the gameplay itself. I went and played a little Commandos 2 to remember just how awful an interface can get*, and then threw myself in to making my own game as straightforward as possible. I even changed the name of one of the abilities so that all of the hotkeys are grouped together on the keyboard, which feels SO nice to use.

One thing about having things in good working order is that I need to now stop thinking about what abilities I am going to give the player and now start building a game around these abilities. It's a little like having all the furniture built, and now I have to decorate a house with it. I have more experience doing this part than I have with doing the part I have just completed, so I am expecting it to be harder, because of course I want to design gameplay that is satisfying, just the right amount of challenging, and memorable, and of course that is much harder than "I want to design some fun abilities to play with".

Summary

I am buoyed on the good response from testers, on the excellent suggestions regarding my code, on the fact that I managed to hit my goal of having an updated build out to testers before the end of November. This week was a more relaxed week after the big push of the last couple of weeks, but I'm back to designing and building new sections of the game next week, and I'm curious to see what will happen as this game gradually reveals to me what it is. Thanks for reading folks, the comments and suggestions have been a great motivating force. :)

*sorry Commandos 2 fans, but as a fan of the first game, it's incredible how much more complex the interface got for the sequel. I know many people love the game but I find the UI just about unusable. One of these days I'll learn it. Maybe. It doesn't help that there's no quick reference card, only half the hotkeys are listed in the manual and some of those are wrong.

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

Friday, October 25, 2024

Devlog 6 - Occam's Razer

My sketchbook and design/writing notebook for the game. I like to be a little fancy!

An interesting week this week, friends. Well, every week is interesting at this end of a game, where every problem is a brand new problem, you're still working everything out and you haven't hit those mid-game doldrums of "I like being creative but this week all I am doing is things I already know how to do". Don't get me wrong, I am looking forward to most of the problems being solved and the process of building my ideas not being a matter of solving 3 different problems every time, but there's also the fact that problem solving is satisfying and it feels good to walk away from a problem that you weren't sure how to solve.

Design

The first thing I did on Monday morning this week was patch up a few little issues that I knew about, and then compiled the project and asked Kelsey to take a look at it. Over the weekend I reached the conclusion that I wasn't going to be able to continue making improvements to my systems until I got an external pair of eyes on things to see how an actual player would interact with them. She's a perfect candidate for early playtesting because she is well versed in the genre, but won't approach the project like a designer, and is also both attentive to systems and not particularly interested in slogging through clunkily designed interfaces.

So, with a very limited build but with all systems working in the way I had planned them up until that point, I sat quietly and watched while she played, reminding myself that it's always awful to watch people play your projects, that it's normal for things to not be communicated well and for this to be frustrating to see, and that there were going to be bugs and that I could fix them. And... much to my delight, the systems all worked. There were a few little bugs which I could talk her through, and she asked some questions (some of which I answered, and some I remained quiet to see if she'd figure out the answer by playing), and I noticed some things that needed to be implement more clearly, but overall I was so pleased to see that everything worked more or less as expected, and that I think I have a good foundation for a game here. Oh, thank goodness. What a relief. That wonderful feeling of hey, this might be a solid idea after all. 

We had a discussion after she had accomplished both of the small goals in the build, I made some notes on things I can fix and improvements I could make and then I thought it would be fun to show her the system I liked the most, so I told her what to do and then sat back to watch my cool project at work. Of course, that immediately broke something. "Well," I thought, "it'll make for a funny end to this part of the week's blog post."

Troubleshooting

In the process of trying to get the project in a worthy state for someone else to take a look at it, I had written out a list of issues that I thought should be cleared up first at the end of last week. One of the harder to find ones was a strange bug in which sometimes my mouse handling code wasn't processing clicks. I have quite a few lines of code handling all of the mouse and interface stuff (somewhere between 500-600) and so it wasn't too surprising to me that I might have made a strange mistake, and I spent a good hour or two going through and cleaning all this up, making it nicer to read, and replacing some of the repetitive bits with for loops. No luck finding that bug. The next day I was playing some Skyrim (it makes sense, I like old RPGs, and old computers, and keyboards and mice without these glowy lights on by default - my mouse has started doing this fancy pulsing glow lately that just seems completely unnecessary) and also getting a little frustrated at some of the bugs in that game. Weird pathfinding, the mousewheel handling through menus is very strange, sometimes I'll be underwater and suddenly fall to the ground as though I'm in the air. Oh and sometimes when I go to cast a spell nothing happens.

This was particularly frustrating when I was clearing out a cave of tough bandits. Stupid game. I'm clicking the button but nothing is happening. Oh, wait a minute. I know where I've seen this issue before. Hang on, maybe there's a reason my mouse has started doing a fancy pulsing glow lately.

No, reader, I am not proud of how long it took me to make this connection. But I am pleased at the fact that unplugging my mouse and plugging it back in again seems to have fixed the issue. Occam's Razer, right? (Actually it's a Keychron but you know I had to). 

Programming

All that said, after Monday morning's playtest session I had a new feature I wanted to implement which immediately filled me with dread. I knew the logic behind doing this task, but I figured the implementation of such logic would be overwhelming in a very draining way. Reader, I'm happy to report that I got it working in about 15 minutes, and the delight I felt as I watched this feature triggering all of my test flags was so great that I let out an audible sigh of relief. It's like solving the best puzzle.

After that, I set about doing what I knew I had to do - I stripped out most of the hard coded functionality for the prototype I had sent and started rebuilding my systems to be more modular. This has been kind of a theme for this project, but it's an important one. One of my goals is to work with what I think of as "Attribute based design". Rather than each interaction being completely hand-coded, my aim is to give the player a handful of abilities, and then have the attributes of the items in that world inform how the world reacts to those abilities. Imagine if you were playing Loom, and got the draft that allows you to turn things green, and rather than only being useful in a handful of places, you can now turn basically anything green - it's just that this only has a "puzzle solved" effect in the appropriate places. This is more like the approach I'm trying to take, but I don't want to write this code individually for each individual hotspot in the world. Hence the constant refactoring.

One nice thing I learned about AGS in the process of setting this up is that extender functions can be passed with identical function names as long as the type changes. I vaguely suspected that this might be true due to the fact that we can call things like Character.Scaling(); and Object.Scaling(); despite the types being different, but I was still very suspicious on Wednesday morning when I typed my duplicate functions in and it just... worked. I had this explained to me nicely here when I posted about it, and what a wonderful feature this is. I then mentioned how wonderful this is to Dan G and he gave me a name for it - "Function overloading". That's the best thing about relearning programming by actually making a project - I immediately find an application for everything I learn. In any case, now when I put a new hotspot or object in my game, the default handling for trying to use your abilities on it is not "I can't do that" or no response. The character walks to the coordinate specified in the properties (not using the built in walk to coordinates because it won't work with my systems), faces the direction specified in the properties, and then checks the objects other properties and applies the ability or gives the response according to those properties. I think of it a little like The Incredible Machine but in an adventure game, except my machine is a lot more limited and much more credible. Or is it...?

Writing

Writing an adventure game is interesting. It takes a while to get to know the character and most of the lines require you to know your character reasonably well. So I'm not stressing too much about getting things correct just yet. I know my character's backstory and his goal, I know the setting and the plot, but the little things will take time. It's fine, I have time. It is interesting going through hotspot descriptions and interaction responses and seeing if I can give more details about the world and character through those, though. It's a little bit like setting all the design elements in place and then playing the game and allowing it to tell you what it is. 

This sounds kind of like nonsense but it's the same with any form of improvisation. Play a few chords on guitar and listen for what is good, what is bad. Make a few marks on a page and look at what looks good, what looks bad. Eventually if you keep carving all the things that aren't the head from the block of marble, the block of marble is a head. The quality of that head does depend on your actual skills to find the good and the bad, though, sorry, the first one at least will probably be a bit crap. At least I can erase my crap lines. Stone is a bit less forgiving. I once had someone try to get me to come and do tattoos for their backyard tattooing business after they saw my artwork. The ultimate form of "no undo"!

Summary

Okay, so I've proven that the system works, the interface has potential, and I've rebuilt it all to be flexible. My next steps are to build a small chunk of game and get a small group of people playing it, and seeing what they think. With all my heart I yearn to do cool animations, a detailed and animated interface and polish up the scenery, but there's no point perfecting something untested. So that's my next goal, I'm building a section of game with just a few small but diverse and reasonably intricate chunks of gameplay that will get the player to use all of their abilities (and hopefully teach them how they can work in unison) and then we'll find out if I have a worthy enough design on my hands to start building a proper game from this, or if I need to go back to the drawing board and rethink some things. I'm going to get people to do some regular playtesting - I've got another one lined up with Kelsey on Monday just to see how she interacts with the new things I added, how everything is working together. From there I need to write out a big todo list and then just get building.

Friday, October 18, 2024

Devlog 5 - Getting it Right

It's very nice to try ideas out in loose pencil before I actually start drawing on the computer.

This week has been a good week. There's always a feeling when things start working together in greater harmony where I think "This feels like an actual game now". This project has taken longer to get to this stage than normal, but I'm starting to get that feeling. It's a good one.

Writing

I've been very design focused so far, but I have finally started trying to write a few lines for the game, and here's another area where I am very rusty. But I also think, looking back at my old work, that I never had particularly high standards for my writing before. I did very little self editing, always wrote far too much, and often wouldn't think about what information I was trying to convey with each line. This time I'm trying to reduce the quantity of spoken dialogue that I create and increase the quality of what remains. After lots of tinkering I think I have the opening lines of the game in place, which seemed to take me forever - but I know some of my favourite writers rework their lines endlessly to get them right. I can also tweak background paintings forever.

It will be interesting to see if I still believe in the quality of these lines after having written more. At least I managed to name four of the characters already.

Programming

Your friendly learner programmer is slowly getting back in the swing of things. I can write a for loop now without having to reference the manual to remember the formatting. I have started using enumerated types for my functions again, the declarations of which I did have to look up in the manual but are thankfully as simple as I’d remembered. I wrote my first switch statement ever this week, what a wonderful addition to the engine since I last used it. And, best of all, when I hooked up a few different little systems that I had been building for a while and tested it - everything worked. It’s all pretty simple stuff, I am not building a ridiculously complex game, but to see things I had envisioned working properly was a delight. It means that I can build my ideas with my current knowledge. Time will tell if those ideas translate well to player experience!

One thing I am being careful about is not getting too worked up in getting a piece of code "right" at this moment. There are a lot of places where I know that I have a function working but I've done things in a very inefficient way, typing out things manually rather than handling them in loops, functions, etc. The honest truth is that my brain is still quite weak at following the logical processes of everything, so every now and then I will have something that I know I could do in a neat and compact way, and so I give myself one chance at doing it that way. If I can't get that working, I don't waste more time trying to get it working in that compact form, and just manually write it all out, which is quicker for me at this point, and leave myself a note to come back and try again when I am more fit for coding. I think it's okay to work like this for now - eventually I aim to be competent enough that following these chains of logic is trivial. But I would rather get everything working properly and try the features in game instead of wasting time trying to find the neatest way to write a function that I haven't even tested with everything else yet.

Art

I have everything in place enough now that the art tasks for this game are just my normal day to day "Here are the items on your todo list, make sure you're getting a bit done each week". This part I know how to do. It's still work, and it takes a lot of time as always, but in this case I have the confidence so that I am not really intimidated by these tasks, even the more complicated ones. Every font looks wrong, though, and I have started trying to make my own. It also looks wrong, but at least in this case I can keep fiddling with it bit by bit until it's less wrong.

Design

Here's the weird part - I can play some of my game now. Can even solve some puzzles with the player's abilities. There's no inventory or interactive dialogue in yet, but I know how to make those things, and it's the other stuff that I have been more interested in getting working. I know I'm being mysterious about this but I want to figure this stuff out more before I talk about it because while it's quite simple, the implementation means that I have to see it myself to know if it feels good, and if my ideas are strong enough to merit basing an entire game on them. It's really satisfying to be refining the things that don't quite feel right (it's amazing how much an animation playing or any kind of feedback are an essential part of design feeling wrong or right). 

On Wednesday night I was hooking in a bunch of the animations that will make the design feel better and playing around with the elements and my brain went “Wait, wouldn’t it be more interesting for the player if…” and I figured out another layer I could add - just a small one, but this sort of thing was my hope. Build a set of simple systems, make them interact, and then experiment with them and see what emerges. I’m not trying to build puzzles yet, as this start section is designed to let players figure out how to use the game’s systems in a limited, not too challenging environment, but I think this sort of approach will be a fantastic way of designing interesting gameplay once I am. I know Jonathan Blow has talked about this sort of approach in discussing how he designed puzzles for Braid & The Witness. And I think it ties in nicely with my idea that an adventure game protagonist can bring a set of abilities and tools to a situation and we can encourage them to use those in interesting ways, rather than relying on players finding the majority of their tools in their surroundings.

Of course, people might get really bored with using limited resources. But I never got bored of the simple panel puzzles in The Witness. I plan on showing a build around to a few friends once I have a bit more interactivity in place, in order to get some feedback - I’m sure they’ll have thoughts on all of this.

Summary

Overall, the results of this week's labours have left me feeling quite optimistic. I always have the feeling that things should be moving slightly faster, but also the feeling that I'm solving new problems to me, and doing so takes time. Even more time now that I am re-learning so much. That being said, I've discussed parts of the design, writing and even shown a bit of art to various people and the response has all been positive interest, and that gives me energy. Yesterday I looked at the programming task I had set myself for the day and I did not want to do it. Even the thought of making it work felt overwhelming. But I broke it into smaller pieces, rewrote it several times, and eventually got it working. It's the only thing I got done on the game in the whole day before I got to working on some end of the todo list Old Skies art. But I got it working, and the next time I need to solve that problem I know how to do it. That's a good feeling.

Thanks for reading, all. I'm off to set up my telescope to try and catch another glimpse of comet C/2023 A3 Tsuchinshan-ATLAS.

This is the second comet I've seen with this scope since I bought it.

Thursday, October 10, 2024

Devlog 4 - AGS Is My Friend Again

Cripes, a new todo list. I have been busy!


Well, readers, several weeks in to spending a little bit of time in AGS daily and it's starting to feel comfortable again. I've gotten a lot of value out of just lurking on the AGS forums, reading answers to tech discussions and seeing the insights there, and just getting hands on time with the editor and engine. I'm also still trying to get the core Old Skies stuff finished up and ticked off, but of course the list magically grew a fair bit in the last month. That's the nature of to-do lists after testing. I'll get there. I'm slightly less tired than I was this time last week, but only slightly. I have enough dark chocolate (85%, the good stuff) to get me through one blog post, at least.

Design

It's amazing how much ideas change once I try to make them work in engine. I think some of the issue is that my long gap between making things come to life has made me forget what it's like to conceptualise an idea, build it, and then tweak it just right. Another issue is that I am probably trying to do things slightly differently both to what most AGS games do and what I tried to do in AGS in the past.

For example, after implementing one idea this week and trying it I immediately knew that it felt awful, and that I had to change things. This was a rare, happy occurrence where after I went for a walk I realised how I could change it both to remove the issue I was having and improve another element I wasn't happy with, but it did caution me - things that seem like fun in my head will not always be fun in game. Every little element of an adventure game probably has nuance to it, down to how we walk around scenes.

Programming

I am sorry to say that I have found myself to be very bad at mathematics now. In trying to do some maths based operations I found myself very quickly overwhelmed by fairly basic ideas. Because of this I am re-learning maths, just a little bit every day with my morning coffee, because I seem to have forgotten the vast majority of it. Sorry, Mr. Ford, who always encouraged me to be an illustrator and didn't yell at me when I drew cartoon owls riding strange tricycles in the margins of my calculus exam. I think you might have been onto something with the illustration thing, though. Happily, my old Ti-83 graphing calculator still works after all this time. I'm doing the long division on paper with a pencil, though, because I'm trying to get my head comfortable with doing it again - in short, I'm training to get fit for maths.

In terms of standard AGS stuff, though, it's going well. Here's a quick fire effect I built in AGS before maths class one morning. It can follow objects or characters or even the mouse cursor as seen here:

Time to build Flamethrower Quest

The background is an old one I had done a couple of years ago for a nice tribute series. I have a bunch of other effects and variants I want to build, but am limiting myself to a little bit of fiddling each day, which is the only way the actual work gets done.

Art

I've painted the first scene for the game. It looks good and I am happy with it. No doubt I will be polishing it in tiny amounts for a month. I had to change a bunch of stuff once I saw it in engine, and I decided to do a bunch of parallax effects and things because why make the first scene I've implemented in an AGS project in years simple? It probably seems funny to consider drawing a single scene a nice milestone considering how many scenes I've drawn for other people's projects but it still feels like a good one. I think this game will look nice.

Summary

Probably the biggest criticism I would have of myself this week is that my goal setting habits have diminished a little bit now that I'm trying to draw, animate, implement, test and tweak all at once. I tend to find my work practices a little more scattered and less focused. I think now that I'm getting a bit more familiar with implementing in AGS, though, I can probably go back to working steadily through a checklist and making measurable progress. My biggest criticism of myself last week was that I overextended myself, tried a bit too hard to re-learn AGS and didn't get enough sleep. The gig that I mentioned that I hadn't done enough practice for went great, but I was definitely a little over-tired and made a few mistakes that were just "Didn't get enough sleep, brain forgot how this part goes". I've been better about all of that this week.

I am still finishing up Old Skies, a bit each day, and I'm very close to having the fundamental stuff done. I know I've been telling people this for weeks but I keep taking care of all the extra stuff that keeps popping up on the "important things to do" list and that list is still nearly all done. Dave has been putting the trailer together (as opposed to the "teaser trailer" which already exists) and it looks good. I'd redo so much of my work on the project if I could. That's always true. I'm proud of my work on the game, nevertheless.

Thanks for reading. Wish me luck with the mathematics study. And send more dark chocolate, it's all gone now.

Friday, October 4, 2024

Devlog 3 - Relearning How to Use the AGS Editor


The current state of my todo list. See how many more checkmarks since last week!

The process of creating this game is an act of taking a number of hypotheses I have formed about what makes a game interesting in the last decade and putting them to the test, hoping that I can visualise a player's experience of my intent. I will inevitably be wrong about many things. It will be interesting (and likely frustrating) to find out what I learn I am wrong about during development and what I realise I missed after development.

Programming

Now that I have my basic functionality working in AGS, it's been time to learn how to use the actual built in functions that the engine provides. Quite frankly, I feel like an absolute beginner. Unlike the process of setting up my own functions, storing my own data and doing my own calculations, a bunch of the built in features of AGS have changed quite a lot since I last used the engine seriously, and a lot of things that I used to know how to do are different now. It's a little frustrating to find that I don't even know how to process a mouse click or move a viewport - very basic functions that I once took for granted. The important thing I keep reminding myself is that it's okay that I'm a beginner, to break my process down into individual steps and that soon enough I will know how to do all of these things again. It's okay to be unable to do basic things, it's just a matter of learning these pieces of knowledge bit by bit. There is no shame in inexperience, only potential!

All that said, I love the latest versions of AGS. Many of the changes since I last used this engine & editor are wonderful, and will help me facilitate some of my current ideas in ways that I couldn't have hoped to accomplish before, or would have required much more convoluted methods. What fantastic work everybody is doing on this engine. There's so much good stuff that I have to caution myself not just to tinker with these things all day, which I could easily do. I allow myself little bit of tinkering, and then a good chunk of actual making a game.

It does feel satisfying to be starting to build a game, and not just working on systems, too. One thing I am noticing is that I get a very quick feedback loop on whether something feels right or wrong, because I can immediately put things into the engine and test it. It's not like that when making assets for other people to implement.

There are also a few things that I want to put into the game but cannot get working right yet. I allow myself a few attempts at getting these working, and then instruct myself to move on. As stubborn as I am, I am aware that logical thinking is a skill, and I am very poor at this skill currently. As I continue to work on this game I hope that this skill will improve, and so will my ability to accomplish my ideas. Meanwhile, my to-do list keeps me honest and stops me from spending too much time in the tinkering mode.

Design

It's also satisfying to be thinking about design again. I've been talking to a bunch of different people about design lately, everybody with quite different opinions. I don't think anybody sits exactly where I do on the current state of adventure game design, which is probably a good thing. That likely means that I have something to bring to the genre. I also think people have very different ideas on what "Innovation" means here, too. It probably runs the whole gamut from something very simple like "The player character is an elephant" to "You have to dissect your own psyche in order to deconstruct your notions of the world that you perceive in order to apply these new concepts to your surroundings and progress" or something. It's been a while since I chatted to Igor Hardy but I have no doubts it's along those wonderful lines.

On my end, I'm looking at being a bit more thorough in my examination of the very basics of the genre and seeing what else I can get out of the systems that might be overlooked by other designers these days. I think a lot of players and designers have a somewhat fixed idea of what point & click adventure games do. It would be nice to try to expand that a little. There's a few sparks from things that inspired me years ago that are still smouldering inside me, waiting to be kindled into a fire.

Art

The latest page in the project sketchbook. "Rigid vigilance" is such a bad phrase, and so annoying to say. Turns out writing short descriptions of things is a skill, too!


I always jumped right into creating 'final' visuals for game projects in the past. I'm not doing that this time! That means I'm doing placeholder sketches to build with instead of trying to nail the game's art direction down, and almost all of my actual work on the visual side of the game has been trying to improve my character animation workflow. It's been going well, I think I have myself setup to make the nicest, most solid character animations I've done yet. I've also sunk a considerable chunk of hours into doing so - but that's game development. Sometimes the research into how to do things better just takes that long.

The actual worldbuilding drawing I'm doing is in the project sketchbook. One fun little trick I found to help the process of filling these sketchbook pages was to come up with "look at" descriptions for the ideas I am sketching as I draw them. This gives a sense of direction to the activity that sketching can otherwise lack a little bit. I'll have at least one full sketchbook of these pages by the time I have all of my ideas for this project laid out, and while many of them just won't ever get used, doing things this way means that I'm less likely to forget things or rush into drawing things before I've played around with the idea a little bit first. Hopefully I'll also remember how to write after I write a few dozen more bad look at descriptions.

Summary

As I slowly piece this project together, new ideas emerge on an almost daily basis. I've heard designers and other creatives talk about the act of putting the elements in place and then seeing how they work together, and letting our experiments with those elements bring fresh layers to light. I am definitely finding that is the case here. The more I work on this idea, the more I believe in it.

I'm also behind on my drawing work because I've been doing so much prototyping (although I did finish the last 'essential' character animation for Old Skies this week), I haven't been sleeping enough because I'll wake up early to write code after staying up late to write code, I only read one book in September, I haven't done my normal amount of guitar practice for my gig this weekend... developing my own idea and re-learning to program is life consuming in ways that I haven't missed. I'll put "finding a balance between this project and everything else in my life" on my to-do list, I guess.

Thursday, September 26, 2024

Devlog 2 - Very First Steps of Writing Code & Trying to Prototype Ideas

The current state of my to-do list.

Because I'm going to be talking about a variety of disciplines in these development logs, I figure I should break them down with headings according to subject so that readers only interested in certain elements can skip the parts that won't appeal to them. 

Programming 

After months of thinking about things, sketching ideas out, aligning all the elements in my head and scribbling notes on paper, I started writing code this week. I am very unfit for programming right now due to my long break from it. My approach to countering this is to keep things very simple and work extremely incrementally. First I'll make a single piece of logic happen, then when that works perfectly, I will add a condition to that, and test until that works perfectly. Then I'll parcel that code up into a separate function that I can call with a single command from anywhere, then I'll expand the function to take multiple inputs, then add logic to check which input is the correct one if such a thing is not reliant on player input but other conditions. Breaking it down into extremely small steps like this allows me to accomplish one thing, then take a break, much like a newbie runner doing a short jog now and then just to get used to things before they try to push themselves.

The nice thing about AGS is that it's quite accommodating to debilitated programmers like me, and most of the things the game will need to do are handled in engine already. That makes the list of tasks necessary to get everything working for a basic prototype quite achievable. As long as I make a little bit of progress each day, eventually the list will be complete, and I can start designing the game. Eventually, too, my fitness for writing code should increase. That's something I'm looking forward to. This morning I finished implementing a function quite successfully and then checked it off my list, but then wanted to alter how the game responds when the player cancels this function to look better. I knew exactly the maths required to make this change occur, but had used up my energy for writing code, and so saved the project and put that simple calculation in my todo list for the next time I open the project up. Knowing the solution to a problem but not having the endurance to execute the solution is not ideal!

I was fortunate enough to be able to call on the advice of long time AGS member edmundito, who helped me overcome a few issues that were specifically related to the quirks of the AGS script language. For example, assigning an integer variable as the size of an array of floating point variables requires that you refer to the integer variable with the "float" type, despite the fact that you're calling an integer and that the array size cannot be a floating point variable, and yet AGS's rule for requiring an IntToFloat call to handle this conversion breaks the script. He pointed out that I could simply refer to the integer with the "float" type and that this would pass in this specific exception, which I had not thought to try. (Edit: this is just a misunderstanding of mine which is clarified nicely here) I consider it a fair trade for having done some quick graphics for a recent jam game he made. He ran out of time to get all of the writing and graphics in, but you can still check it out if such a thing interests you.

A little game jam entry I did the graphics for this month

Design

One thing I wrote in my previous devlog was "I also think the fact that I aspire to create gameplay that's slightly outside of the current standards of "Inventory + dialog + closeup puzzles" for the point & click adventure genre will be challenging to accomplish." On reflection I don't think this is quite clear enough. It's perfectly simple to introduce limitations or twists on the genre - force your character to not use inventory. Make them unable to speak, make them have limited mobility and have this be part of the game's challenge. I think the difficult part will be making something that adds a twist and also feels really good to play and creates a satisfying gameplay style*.

A concept I've been thinking about that might be a way of addressing this is that unlike RPGs, we often don't start out an adventure as a character with many abilities. Usually with a role playing game even a very inexperienced character has some proficiency - maybe they can cast some minor spells, can at least brandish a spear to defend themselves (and bring a spear with them rather than finding it on their way) or have a chance to hide, pick a lock and disarm a trap. And then, importantly, the majority of the game's obstacles can be overcome by using these specific abilities, as well as auxiliary additions such as potions that aren't specific to that style of character but can be used by a variety of classes. In adventure games we often get a character with few real abilities, and they're usually solving problems using items, contraptions and conversation topics they encounter along the way. I think there's a lot of potential to be found as a designer in creating a player character that isn't a blank slate, they bring abilities and expertise to the situation and it's via the application of these abilities in creative ways that the player then overcomes the game's challenges.

So that's one thing I've been prototyping this week - my protagonist's abilities and how they interact with the world. Already while just setting the functions up, establishing some rules and connecting the logic I have seen interesting gameplay possibilities emerge, and I've adjusted my philosophy about the player's abilities a fair bit based on the things that I've noticed while just playing about with the system. But one thing that has concerned me is the possibility that I might unwittingly be designing a “puzzle game”. Often when you give the player specific abilities and then present them with a series of challenges based around those abilities that’s what you end up with. There’s nothing wrong with puzzle games, I like them, but that’s not the feeling I want to go for. After deliberating over this issue for quite a while I reached the conclusion that the difference between a puzzle game and an adventure game, for the purposes of my own goals here, is that in a puzzle game your abilities are primarily means with which you can overcome obstacles, and in an adventure game your abilities are means with which you can explore the world, and in the process of doing so also find and overcome challenges (puzzles!). Think about how many of the classic verbs in text adventures are simply about examining the world. This use of our abilities to explore and learn about the world is what I’m planning to aim for - as well as interesting puzzles.

Summary

As for how I feel about the whole process of starting to develop a game again - it feels great. I've spent over a decade trying to interpret other people's visions, and have gotten used to things not being quite right, to things not working quite how I expected in the final product, misunderstanding instructions or stylistic goals and largely hoping that I had gotten things correct. Doing this work I know exactly the vision I'm working towards, and I know precisely when things look and feel right to me, and am allowed to have more of an opinion on what's correct. It doesn't push me out of my comfort zone like the other work (which is good for skill development), but it's very empowering and immensely satisfying! Of course, it also means that I have to be the one having the good ideas, and that part is definitely more pressure and more difficulty.

Thanks for checking in on my progress! Hopefully by the time I update the list will have a good deal more red checkmarks, and a healthy amount of new items to tackle.


*And then, if I really play my cards right, subverting or exploiting some of the rules I've established to create interesting situations that require players to think more creatively about the logic I've introduced. That's the good stuff, that is - I probably want to talk about exactly what I mean by this in a future post.