This morning, I finished fixing that encounter bug I mentioned, and fired up the game to start a playtest session. As I sat there, trying to decide which skills I should take to simulate a normal player, I was reminded that a few folks have requested a random skill button. It'd save me some time, too, in cases where I need to start several new games in succession with random skills.
So I decided to try putting one together.
It took a bit longer than expected, mainly due to the skill/trait pairs that cannot be selected together (strong/feeble, tough/frail, myopia/eagle eye, etc.). However, I was able to get it working, selected some random skills, and off I went.
I got about 30 minutes into a play session, and only ran across two minor bugs. Then, the power went out. I decided to walk up to the mailbox and mail some NEO Scavenger postcards while I waited, and the power was back by the time I returned.
Briefly, I started shopping for UPS backup systems online again. $200 is a bit pricey on a shoestring budget, but it's getting to the point where it might be worth it. I cringe every time the capacitor whines on my monitor after an outage, and who knows what it's doing to the PC itself. I think I've edged closer to buying it now, but not quite yet.
Once everything was loaded again, I fixed the minor bugs, and started another session. This one lasted much longer. Probably closer to an hour. And best of all? No bugs!
I was pretty shocked. Usually, something comes up that halts the game, and I need to restart. But apart from a few treasures that needed tweaking, nothing went awry. Memory crept up slowly, from ~300MB at game start to a peak of ~380MB, but that's not too bad.
I may wrap up this build and upload it next week, since it seems pretty stable. There was one other thing I noticed that needs fixing (fire degrading issues again), but otherwise, it seems safe to launch.
Hope everyone has a good weekend, and see you Monday!
Sorry for the late update today. We had a couple power outages, and the latest one was just in time for my usual news post! I'm starting to think it's time to get an uninterruptible power supply. It won't help me work while the power's out, but all these sudden spikes/outages can't be good for the hardware. Being able to gracefully shut down (and save work!) will hopefully make things smoother. The joys of living in the woods!
Today's work was a continuation of yesterday's crafting system fixes/updates. I think I've got most of that squared away now. I ended up adding the ability to destroy certain ingredients upon crafting, so things like torches can't be disassembled into a handle and cloth again after being set on fire. Now, crafting the lit torch will destroy the cloth, but leave the handle.
Related to this change, I made it possible for a recipe to transfer components from an ingredient to the yielded object. Before this change, a torch would degrade back into an unlit torch, complete with cloth/kindling. After this change, a lit torch would degrade into whatever handle the unlit torch was made from, and the cloth/kindling would be gone.
These two changes should make the crafting system a bit more versatile and realistic.
I also took some players' advice, and changed the crafting item bracket overlays into solid, colored tints. I think they were right that the brackets might be hard to discern in crowded item groupings, so the solid tint/overlay should be easier to make out. I chose a caution-ish yellow color, to differentiate it from the red/blue in moving items around. I also left a 1-pixel border around each, so adjoining objects have seams between them. Hopefully, this helps!
The rest of the day was spent fixing and updating some old encounters. There were a few bugs that players had noticed, and some new ones caused by crafting changes as well.
One such bug was causing players to perpetually lose items when loading their games. A player would trip on a jagged object in an encounter, lose their shoe, and every future game load, that same foot would lose any new shoe put on it. This was actually a bug for several similar situations, so I'm glad you guys found that one.
I also made some changes to the isotope mine, in part to fix some bugs, and in other cases to make one chain of events possible to walk away from and come back to later.
And apart from the above, I also spent a good hour or so doing a bug "triage." Basically, I had notes in a few places with bug info, and I consolidated all those into my main spreadsheet, reviewed each one for validity, and re-rated their severity/risk, so I could focus on most important issues first. It's never something I look forward to, but finishing it always feels good.
Tomorrow, there's one encounter bug left that I want to fix, and then I'll probably playtest a bit to see if all the most recent fixes and changes are stable. Providing they are, that might be a good time to make 0.970t into an official 0.970b and 0.970d, so folks have a stable build to play while the next batch of content is worked on.
I spent most of the day today working on the crafting system. One thing which a number of folks have mentioned is that it would be helpful to know which items on the crafting screen are currently equipped or used as containers. So I spent some time working on a way to highlight those objects, and here's what I came up with:
Any item that's currently in a slot, or used as a container, now has red brackets on two corners. I originally had all four corners, but that actually made it hard to tell which items were bracketed when several bracketed items were next to each other. With just two corners, it's easier to tell items apart.
More importantly, it should be very clear when one is about to use an equipped item or container. The red bracketing is much more noticeable in the area above the "Confirm" button, since only a few items are there at any time.
Hopefully, this causes fewer important items to be destroyed during crafting. If it still seems too hard to tell, I can always change the bracket images to be more prominent. I just wanted to start small, so they didn't block out the item image underneath.
For the rest of the day, I worked on several reported crafting issues. Namely, the problems that arise from using or making fire.
Several illogical things were happening when fire got involved, often creating duplicate items, or not creating items at all. I had to make a few changes to the system itself to prevent some of these issues.
I also realized, late in the day, that I could probably just use the recipes and item properties themselves to fix exceptional cases. For example, I was trying to fix the case where a lit torch would create a lit torch, which prevented the game from even checking if the lit torch could be reversed (extinguished).
Rather than writing complicated code to check for that, I realized I could just say that a lit torch couldn't use a lit torch as an ingredient. And voila! Problem solved.
Tomorrow, I'll have to keep that trick in mind as I hammer out the rest of the kinks. The recipe system is fairly generic right now, using broad categories. But I shouldn't forget that I can also mark items with unique properties to solve tricky problems. Basically, solve the problem with more data, rather than more code.
Anyway, a bit of a slow day. Hopefully, though, the fixes mean that the issues we've been seeing in crafting go away, and future recipes are more reliable.
Well, vacation has come to a close. I had a great time with the fam and Rochelle, and Virginia Beach certainly delivered:
Now that I'm back, it's time to pick up where we left off.
While I didn't do any development on the road, I did keep an eye on bug reports. And I was happy to see the test build behave rather well, considering it's last-minute deployment. It had some bugs, of course, but it appears to be a marked improvement over 0.969b.
So my current plan is to nail a few of the more serious bugs found in the test build, and get that re-uploaded as an official beta version both here and at Desura. I might also see if I can update the demo with the new crafting stuff.
After that, I'll probably get started on more content. This time, I'll be looking into new items and recipes, as well as new encounters. New content should progress faster with these changes in place.
I hope everyone had a good two weeks. See you tomorrow!
Just a reminder that I'll be on vacation from the 8th until the 27th, so things will be pretty quiet here. I'll be checking email periodically, just to cover any major issues that come up, but development updates will be on hold until I get back.
However, I've put together a test build for beta users to try out while I'm away.
New Test Build
All beta users can get access to a special "Test" build that I've uploaded today, v0.970t. It represents the latest updates and improvements to the crafting system, item identification, and several other bug fixes. However, it's highly experimental at this stage, so be forewarned it may be unstable.
The main updates in the "Test" build are:
New Crafting System - The crafting system now uses item properties to determine crafting recipes, instead of specific item names. This means that many items now work as substitutes for other items. For instance, one can use t-shirts to kindle a fire, or rifle straps to make a splint, instead of just rags and a stick. Also, the crafting yield box now shows multiple output options, which you can choose from before confirming your crafting process.
Item Identification - Items requiring specialized knowledge now become automatically identified when the player has the right skills. This includes things like berries and mushrooms with botany, prescription drug names and medic, and bullets/guns with ranged. Some recipes are still required to identify items, such as boiling water.
Mouse-Scrolling on Map - It is now possible to scroll the map by clicking and holding the right mouse button, and dragging the direction you want to scroll.
To get the test version, click the text links below the download links on the beta page. The download button links still point to the 0.969b beta build, just in case the Test version turns out too unstable to play. Hopefully, this gives everyone the best of both worlds!
If it craps out, I apologize. I did my best to get something uploaded before I took off. However, I was able to play a fairly lengthy game before leaving, so I think you should be able to have a successful game with the test build. And I'm interested to see what everyone thinks of the changes.
If I don't get another chance to post before leaving, have a great couple of weeks, all!
I finished up the remaining item identification issues I mentioned last week, and I think most items are working as intended now. I decided to go through the item data this morning and update it accordingly, consolidating unidentified items with their identified counterparts into single items. With all the duplicate water, berry, and mushroom items that encompassed, I was able to reduce the game's item count by 8.
I also decided to try making prescription pills use actual generic drug names, so they should be less familiar to players (e.g. amoxicillin, hydrocodone). If players have the medic skill, they'll also see the type of drug in parentheses (e.g. antibiotics, painkillers). Non-prescription drugs will still have consumer-friendly labels.
Similarly, the .308 rifle and ammunition have skilled and unskilled names, using the ranged skill as a switch. Unskilled characters will see "hunting rifle" and "some bullets" instead of specific caliber and model info. Right now, this doesn't affect much, but once there are more firearms and ammunition types in the game, it might make things interesting.
For the rest of the day, I decided to try testing the new build out. I want to see if I can get it stable enough to upload alongside the current 0.969 beta build. If I can get it to behave, I'll have special, downloadable NEOScavenger_test versions up on the site for beta users to try out while I'm on vacation.
Nickboom mentioned that some players would probably enjoy tinkering with the new crafting system, and could use the time while I'm away to report their findings on the new system. That way, players who prefer the current beta can continue using it, but players who don't mind an unstable test build can try out some new features. Good idea!
Coincidentally, there are a couple bug fixes I made today which actually might make the experimental version more stable than 0.969. It appears there was a bug in the stacking code which caused some items to be miscounted or misplaced, in certain situations. There was also a bug which was causing item identification issues, and might also be causing the "benefits of being in camp" condition to get stuck on the player. I have a hunch that those two bugs alone may have caused a number of stability issues in 0.969. There may still be other issues afoot, though, especially with the new crafting and identification systems.
I'm going to take a break for dinner now, but I'll try to put in a bit more time afterwards to see if I can have the new build ready to upload tomorrow. Wish me luck!
I managed to get the encounters correctly using ingredients today, so it is now possible for me to specify either specific items as requirements for encounter choices, or generalized ingredients. I was able to make a "scout ahead" encounter choice offer the player any optical zoom item from their inventory as a choice, based on a single ingredient assignment.
There were two tricky bits, though. First, I had to write some special code to make sure encounters showed all possible items that fit the ingredient, rather than just the first one it finds. This is a bit different from how crafting recipes normally work, so it required some special case code within the encounter system.
The second problem had to do with encounters that remove items from the player. In cases where the player chooses an item to give away (e.g. giving the urn to Hatter), previously, I could just remove any item with a matching ID from the player. I knew what the ID was ahead of time, so it was pretty straightforward.
However, now that ingredients can be specified, I have to be careful which item I take away in those types of encounters. I have to make sure it's the same item the player chose to offer. (e.g. offering an item to pay for admission) It took a bit of time to set that up, but it appears to be working now.
The rest of the day, I worked on item identification. Since I'd like some items to be identifiable without crafting, I had to make some changes to the game data and systems.
So far, I've got two types of identification:
Knowledge/Skill-based - Players with certain skills automatically identify items as soon as they see them. This goes for things like berries and mushrooms, when the player has a botany skill.
Crafting-based - There are still some items that require crafting to identify. This might be identifying items with a manual or book, or it might be applying a special tool (such as an ATP detector to check water potability).
So far, I've got groundwork laid for both of those. But just as I was nearing the end of the day, I realized there were a few gotchas I hadn't considered. For one thing, I may also have to adjust or hide the monetary value of an item based on its identification state. Purified water isn't terribly valuable until one knows it's pure. Similarly, edible mushrooms could be anything until identified.
Another problem is that I may still need to make certain items default to identified based on where they came from. Water is a good example of that. When the player finds water in a bottle, it should be identified as pure (i.e. finding a sealed water bottle). However, finding it in a lake shouldn't be identified.
An alternate example would be buying food or drugs from a store. Even without the medic or botany skill, the store should have the items identified.
I'll have to dig into those on Monday.
Which reminds me, I'm going to be taking some time off soon. Starting Wednesday next week (the 8th), I'll be taking a break until the 27th. During this time, I'll still try to stay on top of emails and major crises (order issues, etc), but development is going to be on hold. It'll cause delays in the next build release, unfortunately, but I'm expecting the time off will really help refresh and re-motivate me. Just wanted to give everyone a heads-up! I'll be sure to post a reminder on Tuesday before I sign off.
The problem with the quick recipes turned out to be pretty simple. It was basically only checking for tools when executing the quick recipe, and skipped over any consumed ingredient requirements. Once I added some code to grab the consumed ingredients, it seemed to work as expected.
Except for one thing. As I started testing the quick recipe for a rough splint, it was grabbing some pretty unusual objects. A stick was always in there, as expected, and it started grabbing clothes, rags, and plastic bags, which was fine. But then, as I kept trying it out, it started grabbing things like whiskey droplets, mechanic skills, and other decidedly non-rag-like items. What gives?
A little bit of investigation exposed the problem: the ingredient for tying up a splint was "not rigid, not large." I originally figured that'd cover things like clothes, rags, straps, and even things like necklaces. And at the same time, I figured it'd prevent things like rifles, sleeping bags, fur tunics, and pills.
However, it turns out that skills are neither large nor rigid. The same is true of whiskey. And would be for things like water, newspaper, etc. I needed a new property: solid (i.e. a physical object that's not liquid/gas). It took a few minutes to go through all the items, hooking up that new property, but once I did, it seemed to work ok.
I then took 15 minutes to add a random feature that's been on my back burner: right-click scrolling of the map. Someone mentioned it in the comments recently, and now that the game supports right-clicking, I figured why not? A few minutes later, and one could click and hold the right mouse button to start the map moving in the direction they dragged (rubber-band/joystick style, similar to Sim City 4). We'll see how folks feel about it in the next build!
After that brief sidebar, it was back to two crafting-related systems: encounters that support ingredients as well as specific items, and item identification.
The item identification is still TBD, but I'm considering which ways would allow the player to auto-identify certain things with the right skills or items, and use crafting to identify the rest. For example, many players feel that botanists should be able to immediately spot poison vs. safe berries, which makes sense to me. On the other hand, water purity is something one would have to test with tools, so requires some crafting.
Also, if the player lacked botany, perhaps one day I could add a book or manual that allowed identification via crafting which took longer than using the skill (which is automatic). I like the idea, I just need some more time to see how it fits into the code/data.
One other thing I considered was which items would need identification, and what tools could support it. Obviously, berries, mushrooms, and water are examples. However, some other players have suggested medicine, which I think would be cool. Not everyone knows what amoxicillin is, so having the medic skill would be advantageous if one found a prescription bottle. Then, OTC drugs could be auto-identified for everyone, and medics (or a manual) would be able to identify the prescription ones.
The same could go for ammunition types and ranged, or electronic items and electrician.
Finally, I spent some time on the encounter system, to see if I could get encounters to support ingredients as well as specific items. This is the solution I hope to use so that I can create new encounters faster. Some encounters can be really tedious to setup if they use a type of item that has lots of variations in the game (such as optical zoom). Being able to specify any optical zoom as a valid input would be much nicer than having to list the 7-8 items manually.
Plus, if I ever want to add more items with optical zoom later, I won't have to go back and re-edit every encounter in the game.
As of this evening, it isn't quite functioning yet. But it's getting there. I've got the editing tool just about ready, and the encounters should be validating the ingredients. Now, I just need to make sure the player can see available ingredients when appropriate in the encounter screen.
Quite a busy day, now that I look back. Hopefully, tomorrow is just as productive!
As mentioned yesterday, I've been working on upgrading the crafting page to support more than one possible yield per set of crafting ingredients. Since some groups of ingredients could logically produce more than one output (especially now that ingredients can be substituted), it made sense to let the user choose which output they intended.
So today, I think I managed to get the yield area to support multiple pages. Here's what it looks like right now:
This screenshot is showing that the current ingredients, a stack of rags and a stick, can be used to make a rough splint. If the user were to click the left or right arrows above the yield box, they would see the yield switch to a quality torch (2x rags used) and a crude torch (1x rag used), respectively.
In theory, this could also mean that dumping a crapload of items into the ingredients box could quickly add a whole bunch of recipes to a fresh player. In fact, I just tried that now, and got 8. So, cool!
Anyway, most recipes seem to be working now, so I've started looking at the quick recipes, to get them working in the new system. So far, those are only semi-working, since they're not pulling the correct ingredients into the crafting box yet. (They just give free treasure!)