May try procjam this year, mostly just to give me something else to work on when I get tired of working on my nano. Getting set up with luxe. @Nico - any good tutorials? I did the first one and got a sprite on the screen, but other than the api the documentation seems pretty sparse after that.
Probably going to make some crappy roguelike.
I've realized a slight downside to the gradiation in eavesdropping - I can't really rely on the game remembering what info the player has learned. It wouldn't be fair if you see a word like m_rd_r; and then are not given the option to inform your superior about the murder plot when it's obvious to the player what that word is. Similarly, if you only saw ___d__ and then WERE given that option, you would wonder why. That may be OK for the game I'm making, but another example of something that is really simple to build initially but increases complexity by several factors.
Being able to move around during conversation is another one of these "features". It's actually easier to allow the player to move during dialog than not. But those constraints are a standard in most games for a reason. They cut down on bugs and the possibilities for the player to attempt to do things that the designer did not factor into their creation.
Older games often had less well-defined restrictions for the player. Sometimes this made for some very cruel situations. There are many situations in the King's Quest games where the player can do something wrong, or miss something that they need and cross over to a new area they cannot escape from, and be stuck with no way to find a solution anymore. One example is in King's Quest 5, you get a pie very early on, that you are allowed to eat. But you need this pie later, so if you eat it, you cannot complete the game. Most modern games attempt to make these sorts of things impossible.
I want to allow them as much as possible - but without allowing the players early decisions to prevent the game from being completed. It just may not be the most satisfactory ending.
But in loosening constraints, even just a little, the potential for bugs, confusing situations, and players getting frustrated because they try something that SHOULD work but does not, increases. As I take a second look at this project I may want to add some constraints back in. It's a difficult balance indeed.
Oh, I should write an actual dev update... I added the fading back to dialog so that once you are outside of even eavesdropping range the text actually goes away.
I worked on the conversation system a bit. I'm not really happy with it both in concept or code - I might redesign how it works. Until then, alongside fixing some bugs where the npc ai would take over in the middle of a conversation; I've modified how eavesdropping works. Before, I was modifying the opacity of the textbox as you got further away from the center of the conversation. It worked well enough, but I felt like fading it out wasn't quite appropriate.
First, it's not always that clear whether it's fading as part of the normal animation of the textbox, or whether it's because you are too far away. Second, even if the text has faded a lot, as a player it is still possible to read the complete content of the dialog! That's not quite what I want. I would like there to be situations where either for stealth reasons, or because of the way the environment is situated, as a player you can pick up some of the dialog but not all of it.
So I've switched it to a letter replacement system. As you get further away from the conversation, more of the letters are replaced. At a certain distance, you will see no letters at all. You had better sneak a little closer if you want to pick up that important bit of information...
I've been on a cruise and focusing on other things for a bit, but came back for at least a day to poke around!
I managed to complete some small infrastructure refactoring. My map loading code is pretty crufty so I am working on cleaning that up. There was a small design flaw in that npcs had a hard coded layer on which they were rendered. I ran into the bug when I was adding some detail to the map and wanted to add a few more ground layers. With the hard coded player layer (say that three times fast!), these new layers were being displayed on top of the player instead of underneath. I'm now assigning the layer assigned in the tiled map file - whatever layer the player spawn object is on is the layer the player will be set to; and when using a map transition, the player will be set to the layer the map destination object is on.
Continued strength training, my fingers are pretty weak. Did some scales and some jamming. Will work through some pieces next week
Got back from my cruise, and then was sick for a week. I started retraining my muscles with some basic scales.
Mostly just jamming, although I went through Think of Me one time.
Got to hang out with my lovely game developer peers today - including a couple of our fellow streakers ;) It was fun until the thunderstorm trapped us in the cafe - but the extra time was productive for some of us.
I spent most of my time staring at a blank map in tiled trying to figure out what to do with the starting area and how to build the town. I think I may have reached the limits of the free tilesets I'm using. They just aren't inspiring. It's OK when creating completely canned test environments to work on code, but fall short when actually trying to build a real area. I need to force myself to just put together some of the beginning scenarios and block out the key story beats but... it's just hard to be inspired when the art is so far off.
It may be something that I just need to lock myself in a room for a while and force myself to get a handle on it. A couple of the guys were treating their projects with a game jam mentality, with strict deadlines and scope management. I started this project because I was tired of game jams... but it might be time for some of that methodology to come in again. We'll see.
Just to make SOME progress I took another one of the easy tasks off the list and implemented doors you can lock/unlock (if you have the key) and open/close (if unlocked). It will open up a few more gameplay opportunities for sure, along with some new avenues to chew on the ai code.
Added a very basic "crafting" system. You can combine items in your inventory, and if I have set up a recipe for that combo, it will create a new item. Example: poison + meat = poisoned meat.
Edit: also saved us from having 3 zero days in a row! Anyone else still in?
I have been buried in submenus lately. As a stopgap to make interactions a little faster, I made the menus return to the last option selected instead of starting on the default option each time. I think the circle menu may not actually stay in the game though, we'll see.
Hid the challenged action and action feedback ui when they are attached to npcs. May still show them for debugging. I kind of like the idea of npcs having to succeed challenge checks same as the player, Wait what am I making, a game that completes itself?
Made the fox search for food when endurance is low, and he will go pick it up and eat it. I had to add a new behavior node for interacting with items in the inventory vs the world, as trying to simply eat the meat rather than picking it up first was throwing an error. (The eat command involves deleting the item from the characters inventory, if he doesn't pick it up first it's not in there!) I could have worked around this by modifying the eat command to only attempt to remove the item from the inventory and silently continue if it's not there, but... I might as well continue my method of completely grounding the npcs in the world and not giving them special powers. Barring some ui elements, npcs are functionally equivalent to another player, which is what I want.
In a funny twist of fate, it turns out eating meat is currently modeled as a challenged action (where character skill can affect outcome). And the ui for this is not tied to the character using it but just a random ui on the screen. So you can see the interface show up when npcs try to eat, which is a bit odd. Also, you the player are informed that he has eaten poisoned meat :P
Oh hey. I also realized I can now lure the fox into my trap by putting meat down. I wonder if that will work.... hey it did! I didn't explicitly set up that interaction. Hopefully as I add more interactions this kind of emergence will start to multiply.
Practiced Game of Thrones and Lilium. After so long I was glad that I mostly remembered and kept to the fingering I had been using for Game of Thrones - though I think I need to change some of it. I also found myself using 4th position fairly naturally a couple times on Lilium which I had never attempted before, so playing with different positions is starting to sink in. Band practice didn't happen this week, which was sad.
Added a mechanism where items can be given additional sprites. Beds have a cover sprite which is 2 layers above fixing the npcs always sleeping on top of the covers problem. I implemented it generalized enough that I can add multiple sprites to other items pretty easily. In simple cases, just through the item definition in json. In more advanced cases, I could manipulate those sprites as part of an interaction. I can forsee for instance having a table with objects placed on top of it, which are then removed when interacting with the table.
Watched the first talk in this video, where Emily Short discusses her semi-failed experiments with her conversation engine versu:
Brainstormed with some scenario design.
A long time ago I had "chest" code, letting you see what is inside and take it out into your inventory, but it's been broken. I fixed it. Aren't I productive?
Didn't do much, but messed around with tiled for a little bit. I'm trying to figure out how to make progress, feels like I've hit a wall for a while.
I added some sniffing for mybacklog to set up it's attachment to the user's steam account automatically - as long as they have steam installed first and to the default directory. I also realized that I can just reuse my web api key rather than end users having to get one. You can still set your own web api key, but if you leave it blank it will default to mine. Should make it a lot easier for eventual end users to get it set up and try it out.
Some optimization of downloading the extra info from steam games: caching, threading, and some indication of progress.
Had a friend over the other day and we weren't sure what to play. Steam has no way to filter your installed games by whether or not they have local co-op. You can certainly search the store for things to buy... but you get a very long list, and surely I have some games that have that feature already. I am compulsively buying games all the time.
Sounds like a good time to add more data to the steam api component of MyBacklog. Now it will also include whether or not a game has co-op when importing games from steam. Once in mybacklog, it is easy to search for. Next time I'm in a similar situation I will be able to choose a good game much faster.