Posted on 07/24/2014 - 17:01
I managed to get a good chunk of the new encounter hooked-up today. I estimate I'm now close to 2/3 finished with it. It was mostly smooth sailing today, hence the progress. Just creating treasure groups, conditions, and assigning items to encounter choices. Pretty straightforward.
I also figured out a decent way to solve the issue I identified yesterday with the logical gap. It turns out a slight detour in the text nodes helped make sense of it for the player path I was worried about. I just had to introduce a character in a different way, and hide some outcomes from that path.
One thing I ran into today, towards the end, was how to handle player items in a place where those items were confiscated. In the past, I've skirted this issue by either avoiding choices that allow item use (e.g. Zom Zom's, ATN) or simply ignoring it altogether (e.g. DMC unrealistically allows all items inside, which can sometimes be used in DMC encounters)
Today, there was yet another place where this issue popped up. The player was allegedly stripped of all items if they followed one path, but still had them if they chose another.
So I finally decided to look into a way of confiscating items in these cases:
New lockbox, and minimap.
On the left, in the image above, you can see the new lockbox item. When an encounter confiscates items, they go into this lockbox, which is hidden from view. Later, when the encounter is done, the items can be "unconfiscated," which will place this box on the ground.
This lockbox is a normal container, for the most part. It can be emptied-out, held in hands, etc., for the player to grab their items. However, it weighs 1 ton, so it cannot be moved. And if the player leaves anything inside it, those items can be lost later (if the encounter removes the lockbox, or uses it again).
I'll be making use of it in this new encounter. And perhaps if there's time, I'll see about adding it to the DMC and Zom Zom's.
Also new to the game is a minimap upgrade (above, right). I finally took some time to make it a bit clearer by adding crosshairs at the current player location, as well as dimming the hexes that are currently dimmed on the map. This should make it a bit more useful for determining the player's actual location.
Still plenty more work to do on this new encounter, but it is turning out to have many new surprises!
Posted on 07/23/2014 - 16:48
I was interviewed by No Crisis Yet!
A couple weeks ago, Jon Lynch discovered NEO Scavenger by accident, and was dumbfounded by how many hours he found himself sinking into the game. So he and Ben decided to make their show's first guest the dev behind this crazy "wasteland shoe peddler" game, yours truly :)
It's about 30 minutes of talking to me, followed by a discussion of Divinity: Original Sin and Yogventure. In it, I talk a bit about my choices, background, and mistakes. If you have some spare time, give it a listen!
Development continues on the new encounter, as I spent most of the day hooking up the spider web of nodes to game variables. I've finally got my AI doing his thing on the map and triggering game events, so it's back to making other encounter branches active.
During the process, I discovered a logical gap that I must've missed when mapping it out earlier. There were two similar events planned, but I think I only mapped one out and assumed it covered both cases. As such, I need to ad-lib some outcomes for the missing branch.
It's a bit daunting, as this missing branch could easily become a string of encounters on its own. That would be good for players in that they would have more content, but bad because it would delay things by many more weeks. Instead, I'm going to see if I can find a way to fill the gap efficiently for now, and if there's time later, I can expand on it.
Tomorrow promises more of the same encounter work. It's slow and tedious stuff, but it's definitely something players like consuming, so it's worth it.
Have a good night, all!
Posted on 07/22/2014 - 16:54
Work continued today on the AI mission code. I made a few changes to my previous system so it would be more reliable, and now the AI can have a list of waypoints and encounters to process in order. E.g. go to hex x,y, do encounters 1->2->3, then go to next hex, and next encounter, etc.
This way, I can get the AI to move around the map, and perform different actions in each location (setting variables on the player, adding/removing items, spawning creatures, etc.)
As a result, I now have my AI going to a special hex, and different things will happen if the player gets there first or not. As well as if the player intercepts the AI and then goes there. Pretty cool!
An interesting side-effect is that AI can also be derailed by other AI, so it's possible some NPCs could thwart an AI's mission. In theory, this could make the game a bit more dynamic, but we'll see if that's a good thing or not :) Could be chaotic.
Now that this is hooked up and the skeleton is working, I can continue hooking up the rest of the new encounter. And I'll still need to flesh-out this skeletal side-quest/consquences.
Should be some interesting stuff when done!
Posted on 07/21/2014 - 17:08
Hope everyone had a good weekend! My parents dropped by on their cross-country drive, so it was good to chill with them. We discovered our street has Saskatoon and Thimble berries! (And Rochelle at the latter, despite my warnings about red berries being 50% poisonous).
Today, I resumed work on the new encounter. The focus was on making the AI do appropriate things in the right order, so the player can interact with world evens in real time. I've got my AI going to a waypoint, spawning and collecting an item, and then continuing. However, there was a problem with dropping that item later.
It turns out that I need to carefully handle the way AI triggers encounters. In this case, I was accidentally triggering an encounter within another one, and it confused the game (and make the item disappear). As such, I've changed the AI encounter code to process them serially, instead of instantly. I'll be testing that tomorrow.
This new location and AI mission also involves new items, and here's a sneak peek:
Good luck carrying the latter!
I still have a few details to sort out with the big barrel, and also how the other two work. But hopefully, they'll be nice discoveries for those who make the right decisions.
Plus, after all the above is finished, there are some interesting game choices I want to give the player at the end of this encounter. I'll be continuing my experiment with not hand-holding the player, and letting players figure out what to do next. Hopefully, more clever players can be rewarded for their ingenuity!
That's all for today. Have a good night, all!
Posted on 07/18/2014 - 16:42
Earlier today, some of you may have noticed the site being offline for maintenance. There were some security updates for software that needed installing, so I had to take the site offline and apply those. Fortunately, that seems to have gone smoothly, and it was only down for about half an hour or so.
Once that was done, I returned to work on the AI waypoint and encounter stuff mentioned yesterday.
The AI waypoints seem to be working now, and I was able to spawn an NPC that went to the desired hex. Once there, they resumed normal operations. I could queue waypoints by adding conditions to creatures in a certain order, but I also want to make them do things once they reach their destination. (e.g. pick up or drop items, add new waypoints, or set game flags)
So, I also added a new function to AI that lets them trigger encounters of their own. AI won't see the usual text or images, nor make decisions. However, this allows them to benefit from the encounter system's logic tools for triggering encounters when certain conditions are met. (e.g. don't trigger this encounter unless these other conditions exist)
This way, I could have an AI approach a hex, and have something there trigger an encounter which gives items and sets new waypoints. Hopefully, this will make some more encounter tricks possible.
Finally, with those systems working, I resumed work on the encounter. Most of this work revolved around creating new quest items, and figuring out how those would work and be distributed. I'll likely be continuing on that Monday, after which I'll hook them up to the encounter.
That about does it for this week. Hope everyone has a good weekend, and see you Monday!
Posted on 07/17/2014 - 17:05
After yesterday's work fleshing-out some new ways to use the new factions' equipment, it was back to encounter integration for me.
A good chunk of today involved going through the new encounter I added a few weeks ago, node-by-node, and hooking up game variables. The usual encounter stuff applies here, such as treasure IDs, items for each of the choices, conditions, fatalities, etc.
After going through several of those, I reached a point where I needed to add some more "hooks" for the game to use.
One such "hook" was to let encounters pass time in-game. Previously, encounters happened instantaneously, and no passage of time occurred regardless of what the text said in the encounter. Since one of the new encounter branches involves the passage of time, I added a new method to creatures called "PassTime." This can be called inside a condition, which will simulate the creature's metabolism for the specified time.
Another "hook" involved adding waypoints to AI. Currently, AI does it's usual foraging/hunting/fleeing/sleeping, but that's it. This new encounter involves a branch where a creature is spawned that has a destination. Harald and I wanted it to be such that the player could intercept this AI and affect the story outcome a bit.
As such, there is now a "SetWaypoint" method on AI, also set by conditions. AI will head towards this waypoint as long as no threats are in sight. Otherwise, they act normally.
Finally, I also needed to add some code to make certain things happen when the AI reaches their waypoints. Things like picking items up, dropping them, or applying conditions to the player. This is my current task, and I almost have the function done. I'll be testing it out tomorrow.
Assuming this all works as planned, this should open up some cool possibilities not only for the story, but also modders. I look forward to seeing how queueing AI behavior changes the game.
That's all for tonight. See you tomorrow!
Posted on 07/16/2014 - 16:46
Hey Folks! Hope everyone had a good week. Our wedding was an unqualified success, and we had a great time seeing friends and family. It was a pretty crazy week, as you'd probably guess!
Now that I'm back, dev continues. And I decided to share a sneak peek to whet your appetite for the upcoming build:
A little bit of shiny, and a little bit of ominous.
These are some bits of content I was working on today to make things more interesting. As mentioned last week, the Great Black Swamp now has a new scavenge locale to make it worth exploring. That was a good start, but I decided there should probably be more. A sort of "unicorn" that one rarely sees, but is worth seeking out.
The image on the right is one such "unicorn," and finding it may turn out to be a big payday. Not only that, but it also may contain a hint of history and lore, too!
And on the left? Let's just say that it's a relic of days long passed...
In addition to the new content above, I also decided to take players' feedback to heart regarding the combination of surrendering and Merga Wraiths.
Players who surrender in battle are often killed immediately by the wraith when it appears. This is especially true if the player is surrendering because they are crippled or otherwise weak. Basically, surrender is an invalid option in many cases when it should be viable, and this is mainly due to the talisman disappearing.
Instead, I decided to take their suggestion to make the talisman ignored by the surrender code. It's a bit unrealistic, but it plugs a huge hole in the game design with very little effort. A worthy trade, if you ask me.
Also, while I was in there, I tweaked the wraith to prefer advancing to charging. Wraiths are supposed to be a bit more reserved and confident, and it betrays that image when they run. Making them prefer advance fixes this image problem, and also gives players a bit more of a chance to postpone their death by escaping combat more often.
We'll see if it was enough of a change, or too much. Hopefully, it's just the right balance!
That's all for today. More to come tomorrow!
Posted on 07/07/2014 - 17:17
Hey folks! Hope everyone had a good weekend. Ours was actually a bit hectic, as we're planning a trip back home to get married this week. Exciting, but also frenetic!
As such, starting tomorrow, I'll be on vacation and will have limited internet access. I should be back on Wednesday (16th) next week. As usual, I'll try to check messages and such for any major issues. Fortunately, we have a pretty stable build up there (v0.9922b), so I think we should be free of any fires until I get back.
As for what I did today, a lot of it focused on the Great Black Swamp. Now that we have gas masks, diseases, and toxic chemical support, I started adding these things to creatures and the Swamp. Infected creatures may now infect other creatures when at close range in combat. And visiting contaminated areas may cause side-effects.
To balance this danger, I've added a new scavenge location to the swamp. It's pretty rare, but is also fairly rewarding since few people venture there due to toxicity. I may work on an additional one, but at least we now have a proper risk/reward to balance the area (subject to tweaking after testing).
Additionally, I decided to add a new hazard to existing scavenge areas which can affect players without breathing or eye protection.
Finally, I've been watching some discussions about surrender and the wraith appearing due to talisman loss, as this is causing both issues and confusion with new players. (and vets alike!) I've made a note to look into this when I'm back, and perhaps tweak either the surrender and/or wraith to make this less jarring.
Have a good week, all. And I'll see you on the 16th!
Posted on 07/04/2014 - 17:02
Work continued today on a mix of new features and bug fixes.
After adding the gas mask yesterday, I decided to add a new hazard to the Great Black Swamp. Namely, the defoliant used there can still be dangerous to those who pass through the area. I added a new condition chain, similar to other diseases, which represents overexposure to the defoliant. It has a variety of minor to moderate symptoms, and is a chronic condition (comes back periodically). The gas mask will protect against it, if charged.
I also decided to add eye irritation symptoms separately, in case I want to use that elsewhere as scavenge outcomes, or in combat. This way, there can also be goggles, combat moves, and other stuff supported by the game (time-permitting).
I still need to add a reason to visit the swamp, now that it has a tangible hazard. This will probably take the form of corpses and scavenge locales with higher loot chances, but also higher risk.
Similarly, I'd like to add one or two new scavenge hazards for the map in general. Things like black mold or other volatiles in the air, to make gas masks and other items more useful.
Finally, the reason for all this needs to be added, too: new factions and diseases. I started working on some code to make conditions transfer to other creatures when within a certain range in combat, and this will take the form of a new field in condition definitions. This seems to be working, and the next step will be to hook up appropriate conditions, including airborne and contact-vector diseases.
Apart from all the above, I also fixed a bug that allowed players to sleep during encounters (e.g. ATN market). And the ATN map label should be fixed in the next build.
And since we finally figured out the endless turn bug, I reenabled the combat auto-turn-advance code, for when the player is unconscious for 2 or more turns in a row. This should help with tedious turn-ending when unconscious, and should also make it a bit more immersive. I'll keep an eye on it for misbehavior, though.
Lastly, happy freedom day, Americans! Hope you enjoy the long weekend, and get a chance to chill out. See y'all Monday!
Posted on 07/03/2014 - 17:06
As work continues on the new encounter and faction, I've been working on related items and features.
I've already mentioned gas masks, and I finally got those working today. One of the trickier things about gas masks is that they don't take electricity or other discrete items as charges. Rather, they slowly wear down a charge over time and use. I.e. their filters get worn out, and eventually need replacing.
This required a change to the discharge system, so I added a new charge profile field called "bDegrade." Items using a charge profile with this set to true will deduct item durability from the charges, rather than whole charges. Hence, the air filters in the gas mask will gradually approach 0%, and once they do, the gas mask stops providing benefit.
Related to this feature is the concept of immunity. For the gas mask to be useful, it needs to stop certain conditions from being applied. This is pretty easy to simulate in encounters, but almost impossible in regular gameplay. Since exploring hostile environments can be done on the map, and combat may include disease or toxins, I needed to add a special way to block conditions.
This turned out to be pretty easy, fortunately. I just added a new creature field called "SetImmunity," and conditions can add/remove IDs to the list the creature should be immune to. For example, the nanorobotic medkit not only removes gastroenteritis, but it can prevent the virus from incubating while the dosage is still active.
I also started working on another hazard which ties together the new gas mask with the existing Great Black Swamp area. Since the swamp is meant to be doused in toxic exfoliant, it makes sense that areas of that region should have dangerous atmospheric conditions. I'm hoping to make the gas mask useful in these cases, as well as in protecting against airborne diseases (which some creatures may be carrying in the future).
I think I've got the toxic fume effects figured out, and I've started codifying them. As part of this change, I separated the abdominal pains from poisoning so that other conditions could share the symptom. And as a result, poison is now a hidden condition. Players can still see the visible symptoms (abdominal pains, diarrhea), but it won't say "you have poison stage 2" anymore. Similarly, this new airborne toxin is likely to cause variable symptoms, but won't warn the player "you have exfoliant poisoning." The player will have to recognize that the headaches, vomiting, and other symptoms are an issue.
Finally, I took inventory of the remaining sound effects that were missing on items today, and organized that for Paul. He recently sent a new batch of sounds for some plastic items, berries, mushrooms, and such, and I hope to have those hooked up soon.
Overall, a pretty productive day! Have a good night, all. And see you tomorrow!