This morning, I felt like the stereotypical business owner I always pictured as a kid: spreadsheets opened left and right, IRS tax forms and manuals, and word processor open to write marketing copy. It was a morning of paperwork, and it was as boring as it sounds, so I'll leave it at that :)
This afternoon, I spent a bit more time working on the Windows target, and as usual, I made small but solid steps forward.
First of all, I realized that the main menu was getting stuck on the loading of data. However, the way it was loading data was a bit outdated, since it was based on Flash limitations. Since we're in a Windows native client now, why not load some files?
A handful of tweaks and bugs later, I had the game opening an XML file and reading item properties when it loads. For those astute readers, yes, this might mean it's possible for the desktop versions to be moddable. If all goes well, I might be able to ship the downloadable versions with folders for game assets, including a text file with game data. Let's not jinx it, though. No celebrating until everything else works out!
After that, it was off to figure out why the main menu was just a white screen. It worked in Flash, so it was something about the Windows implementation that didn't work. A few hours of tracing and debugging later, I found a tiny statement that was tripping things up. Basically, the camera was being replaced by a blank image when the resolution got set. Removing that caused the main menu to load in all its glory: animating background, button rollovers, and the spinning sparkle in the BBG logo. Even the resolution switching seemed to work!
Well, at least 800x450 and 1360x768 did. Both 1600x900 and 2400x1350 sort of worked, but were slightly off-screen. It looks like the camera adjustments might need tweaking on Windows, possibly due to some differences in screen alignment.
Anyway, things are looking promising. I should still see if I can get this to appear on a Mac and Linux box before I decide if it's worth porting the rest of the gameplay code. But it's at least a qualified success.
Work continued today on getting the HaxeFlixel test running on Windows.
It was a bit of a slow day, today. I wasn't able to get Visual Studio to directly debug the C++ files generated by the project. I tried several approaches, from attaching the debugger directly to the running process, to creating a blank project and importing all the cpp and header files.
The former approach gave me little more to work with, though the latter approach at least started to compile. The trouble is that there are a very large number of dependencies and compiler constants that Visual Studio needs to know about to proceed, but that I didn't find in my searches.
However, after backpedaling a bit, I was able to at least get some debug output using FlashDevelop. I'm still not sure if it was a new version of the HXCPP libraries I installed or not, but I eventually started getting stack traces in the debug output. With that working, I could at least see where yesterday's Null Pointer was coming from.
As it turns out, the issue was that the Windows version loads things in a different order (basically no need to have a preloader, unlike web apps). Once I restructured the load order a bit, I was able to reach a point where the app loaded without error.
However, it was only displaying a blank screen, and was frozen (i.e. "not responding"). I had to do some trace debugging to figure out why, and was able to narrow down the issue to loading game data. Not surprising, since the Windows version isn't loaded the same way.
Tomorrow, I'll take a look at that code, to see if I can get the game data to load from an XML file. Hopefully, there are some built-in XML parsing libraries in OpenFL or Haxe!
On Friday, a tanker truck was delivering jet fuel to fire fighters up north. Sadly, it fell off the road, emptying it's 35,000 gallon payload into the river. And as a result, the entire valley had to be evacuated. The fire department showed up at our door at 4:30am, and told us it was time to go. Like, "grab your things, any pets you have, and leave."
We scrambled to get dressed, rounded up animals, and packed some last minute things. And for the next 10 hours, we were refugees in a Red Cross center!
Thankfully, we were given the all clear that afternoon, and there appears to have been no fire. I'm not sure how long the river will be polluted, but with any luck, the light density fuel will dissipate rather than linger.
Needless to say, the weekend was a bit less relaxing than hoped :)
After catching up on some messages this morning, it was back into HaxeFlixel for me. With the main menu both compiling to Flash SWF and running, I decided to start looking into other platforms. My first thought was to give Mac a try.
There was a moderate list of things needed to get up and running, since the Mac isn't a dev machine for me as much as a build machine. I had to download the Haxe libraries, OpenFL, Git (in order to get the latest dev copy of HaxeFlixel), and get those all setup. And as it turns out, Xcode, too. It took a few hours, but soon it was time to compile.
Unfortunately, FlashDevelop isn't available on OSX, so compiling the game will require something else. I'm sure there's a way to do it via the command line, but I decided to look around a bit to see what others were using. It turns out there is also an xcross library for Haxe which allows one to cross-compile Haxe app binaries for any OS from any OS. Handy!
That's when I realize, "hey, I should probably make sure the Windows native version compiles." I had successfully compiled the Flash version via Haxe last week, but not a Windows exe.
So I fired up FlashDevelop, switched the target to "Windows," and crossed my fingers...and out pop a few dozen compiler errors. Worse yet, some appear to be within the HaxeFlixel code. I'll admit I was a bit discouraged at this point, and was tempted to write off the experiment as "not quite ready for prime time."
However, it turns out that after a second look, these errors are actually related to some custom things I'm doing for Flash. E.g. assuming there's a stage.root, trying to manipulate a camera buffer that's only available in Flash targets, etc. With a little tweaking, and some compiler conditionals, I was able to get my code to compile after all!
Unfortunately (again!), the Windows app crashed before displaying anything. I switched to a debug binary, launched again, and the error was a helpful "Null pointer exception." And no stack trace.
That's about where I am right now. You see, the down side to Haxe is that compiling for Windows means the code is first compiled into intermediate cpp files, and those are then compiled into an exe. There isn't yet a way for FlashDevelop to debug cpp files, so I'll need to look into other ways.
I've had a chance to look into it a bit, and it might just be a matter of swapping some values in the project files he shared. I think they were using a different version of MSVC than my free Express edition, though, so that might require some additional file changes. However, there appears to be a way.
And if nothing else, it should at least be possible to get some debug output.
But that's work for tomorrow. Right now, it's time to call it a day. Have a good one, all!
With the PR surge settling a bit, I had some more time to investigate the HaxeFlixel port today.
At the end of the day yesterday, the main menu was compiling. It wasn't running, though. Trying to launch it would throw errors before the window even opened. It was an important first step, but just a step.
By the time lunch rolled around today, I actually got it running. The trouble was, it was only a black screen. So even if there were no errors popping up, something was wrong. Not even my "missing image" image was showing! It took a bit of finagling, but I eventually figured out what was happening. Some tweaks and fixes later, and behold!
Well, at least I could see again. And it looks like things are in the right places, with working text, to boot. So I set about working on bringing over the old preloader, to make sure required images are loaded and ready before trying to display the menu. A few things have changed, so I had to hack quite a bit to get the preloader working. Fortunately, though, I had already figured most of it out when I built the encounter editor for NEO Scavenger in Haxe. So it was mainly a matter of copying the stuff I did there to make this menu and preloader work.
By the end of the day, this is what I had:
This was a pretty big step. I was hoping to get at least this far by the end of the week, and it was a close call. But being able to achieve this in 3 days (partial days, if one counts the PR interruptions) is an encouraging sign. Not only am I able to get the menu screen to display, but the preloader is showing correctly, images being loaded and stored, and even basic data on items and encounters.
One last thing remains before I decide to follow through with the rest of the game: multi-platform testing. I wanted to get this far so I could see how easy/hard it is to create Flash, Windows, Mac, and Linux builds from this one source file. I'm hoping that it's easier than the old way, and bypasses some of the version limitations on Linux.
If those tests go well, I think we may have a winner. It'll take time to finish porting stuff, but the result will let me build native versions for each platform, instead of through a Flash virtual machine. Performance should be better, feature support should be more consistent, and I may even be able to look into changing where save games are stored. It could be pretty exciting stuff.
It could all go downhill, too. There's always the possibility of a major stumbling block I haven't seen yet. But I've tackled some of the heavier lifting in this test, so I'm fairly confident I can do the rest.
It's probably a good thing the weekend is here, too. It'll give me a couple days to sleep on it, and see if I'm insane :)
Oh! And it appears someone logged into the Yogscast account I created yesterday, so perhaps someone in their crew decided to give NEO Scavenger a try. I hope they enjoy it!
That's all for this week. Have a good weekend, all. And see you Monday!
One thing about doing PR, it's a task which gets harder the more you work on it :)
After yesterday's work spreading the word about NEO Scavenger, there were quite a few messages and comments to catch up on. Emails, reddit, Greenlight, this site, and a few other places each had things going on. This is a good thing, of course. It means folks are talking about the game more. But it does spread my attention out a bit. So if I seem like a bad host, I apologize!
Today, I also decided to try contacting the folks at Yogscast, to see if they might be interested in giving NEO Scavenger a shot. I've seen a few of their videos for Minecraft, Civ, and Don't Starve, and I'm hoping that NEO Scavenger overlaps games like those enough that they might be willing to take a look.
I've also been catching up on a few of the discussions about recent NEO Scavenger changes here. I saw some of the suggestions for primitive missile ammo recovery during battle, and I think they're good ones.
I also saw a growing discussion on skill balancing. I agree that skills are going to need culling, buffing, and reshaping over time. I have a few ideas in mind for improving some of the technical skills, and your feedback on the others is helpful, too. I may also have to do a better job of advertising some of the skill benefits that are currently hidden (such as melee and hiding).
Another change I'm saving for later is to give skills different sizes based on their usefulness. Some traits can allow more space, and some skills could be larger or smaller, depending on how popular they are. However, this is something best saved for the end of development, after skills stop changing.
On the technical side, I also got some more work done on a HaxeFlixel port. So far, I've got the main menu compiling. It may not sound like much, but the main menu is also where a lot of the data and game setup stuff happens. Some of the trickier stuff to port is actually in this section, since it involves loading files, URL stuff, parsing data, and handling resolution, mouse, and other non-gameplay things.
The good news is that it's still steady progress, but it's still not a done deal. I'm somewhat optimistic, but guarded :)
That's all for now. Hope everyone has a good night!
I decided to take care of a few non-development things this morning, mostly involving PR. NEO Scavenger is still fairly unknown, so it helps to do a little promotion from time-to-time. And with the last few builds adding new content and stability, now seems like a good time to increase awareness. With that in mind, I decided to ramp-up my efforts on reddit.
I'm pretty new to reddit. I've been there a few times when folks directed me to interesting links. I've seen the traffic surges it can create if someone mentions NEO Scavenger there. And eljefe76 even setup a subreddit for NEO Scavenger a while back, inviting me to be a mod. I was pretty clueless about it, though, and was afraid I'd be biting off more than I could chew.
Fast forward a few months, and I'm finally starting to get my reddit legs. I'm starting to see how other indies make good use of it as a way to communicate with fans. I contacted eljefe76, and he graciously added me as a mod. And a few hours of tweaking later, /r/NEOScavenger is the official NEO Scavenger channel on reddit!
For good measure, I also posted an introduction to the game and subreddit on /r/IndieGaming. I figure there may be some folks there looking for a game like NEO Scavenger, so hopefully a few fresh faces can learn about the game.
For the rest of the day, I decided to take a look at HaxeFlixel. As many of you know, NEO Scavenger uses Flixel as a game engine, which is based in Flash ActionScript 3. HaxeFlixel is a port of Flixel running on the Haxe codebase.
Flash imposes a few limits on what I can do. And since Adobe seems to be pulling the rug from under Flash developers, I want to see what my options are. Using something like HaxeFlixel should allow me to continue supporting both browser and cross-platform downloadable versions of NEO Scavenger, plus give me access to some features Flash lacks. (e.g. better file access/save games, improved full screen support, improved Linux support, ability to run on iOS/Android, etc.)
So far, the transition seems doable, but it also might be a major task. I'm giving myself a day or two to see how it feels porting a small section of NEO Scavenger. If that's smooth, maybe it'll be worth doing the whole thing. If not, I can continue the ActionScript 3 version and save the port for a post-release project.
Whatever the case, it'll be useful to know if Haxe is a viable option, even if only for future projects.
I've just finished uploading new beta (0.974b) and demo (0.974d) builds. This update is largely a collection of bug fixes, optimizations, and balancing.
Updates to both the Beta and Demo
Both the beta and demo versions have quite a few changes and fixes, including:
Added version info to loading screen.
Added code to make Stretch mode fill screen while in 800x450 mode.
Added code to make recipes prefer cheaper ingredients first when manually executing, instead of just during quick recipes.
Added small chance of random ammo to scavenge locations that had weapons but no ammo.
Added code to make game restore resolution prefs on launch if using downloaded version or 1360 or lower.
Added code to make encounters discharge items when used and appropriate.
Added code to restrict encounter options from being chosen if required item is uncharged.
Changed lure maneuver to be more useful and reliable.
Changed create obstacle maneuver to be more useful and reliable.
Changed crowbar attack to be more effective.
Changed all scavenge encounter to accommodate night vision and light source ingredients, instead of items.
Changed Allegan encounter to use ingredients where possible.
Changed Isotope mine to use ingredients for dark cistern where appropriate.
Changed Radiation Bob heal to use medkit-only with charges, rather than multiple items.
Changed some code to improve performance and memory usage.
Changed items to not be flagged as degradable if their degrade per use is 1.0 (e.g. water).
Changed crafting to always produce 100% condition items if those items shouldn't normally degrade (e.g. ashes).
Changed recipes and degraded versions of items with chance of ammo to be empty.
Changed battle screen to use identified weapon names if appropriate for player, instead of always using unidentified names.
Changed forest shack loot to always have at least one tool, instead of forest junk.
Changed chances of scavenge accident in forest with botany to be lower.
Fixed several recipes that were reversing into subcomponents instead of the items used to make them.
Fixed a bug that caused camp items to leave conditions stuck on player after saving/loading.
Fixed a bug that caused battles resulting from scavenges to only show one creature at first, even if more are there.
Fixed a bug that would cause scavenge encounter to end without delivering any results.
Fixed a bug that caused quick recipes to break.
Fixed a bug that caused camp stats to update incorrectly when any camp had items added/removed.
Fixed bug that caused fullscreen to exit when starting or continuing a game from the title screen.
Fixed a bug that caused boots to appear on wrong feet when switching resolutions.
Fixed bug that allowed shopping cart basket to be stored inside backpacks and other items.
Fixed a bug that caused take/drop of camps to fade out unsocketed camp.
Fixed a bug in the way AI switches attack modes, causing item to be in two slots simultaneously.
Fixed a typo in the forest shack that caused giant piles of ammo to show up sometimes.
Fixed inventory screen to hide inaccessible storage areas (e.g. hoodie pocket under tunic).
Fixed a bug that caused reverse noise trap to sometimes contain soup.
Updates to the Beta
In addition to the above shared changes, the beta has the following updates:
Added paper scrap item to game.
Added recipe for paper scraps from newspaper.
Added guaranteed random ammo item to store each day.
Added light source option in hidden lake basement.
Added penalty for using cart basket as vehicle.
Changed spear and arrow recipes to require springy/flexible properties, so wrenches and crowbars won't work.
Changed forest resource loot to only have 1 large branch, instead of 3.
Changed box cart and shopping cart items to fit inside crafting window.
Changed shopping cart basket to only fit in vehicle slot (was causing UI overlap in hands).
Changed sharpened and hardened spear recipes to be non-reversible.
Changed all firearms to use strap wording instead of sling, to avoid ID exploit and confusion.
Fixed boxcart degrade loot to use small strings instead of medium, to match recipe.
Fixed greenwood bow recipe to produce greenwood bow instead of compound bow.
Fixed a bug that caused quick recipes to be randomized after a save/load.
Fixed a bug that produced soup outside of container in encounter reward.
Fixed broken compound bow w/strap recipe.
Fixed a bug that caused hiding and friendly greeting to abort isotope mine prematurely.
Fixed typo in shotgun with sling recipe title.
Fixed a bug that caused thrown weapons to report wrong attack mode when used.
Fixed a bug that caused attack mode to change when weapon is thrown, but charges are still left.
Overall, the above changes (to both beta and demo) should make things quite a bit more reliable. We should see less crashes, fewer weird behaviors, and with any luck, even some performance improvements! Plus, quite a few content bugs should be fixed now, making recipes and encounters a bit better.
As always, I look forward to hearing any feedback you might have on the latest build. Enjoy!
I managed to fix another handful of bugs today, including (I think) the quick recipe bug!
I decided to try out a longer playtest this afternoon, to see if I could spot any of the harder to track bugs, and to test general balance. And wouldn't you know it, at the last possible minute, I triggered the quick recipe bug! It looks like it was caused by stacked items inside a container.
The crafting screen tries to get a list of all known items on the player, and flattens that list for sorting (e.g. no stacks nor nested items in containers). However, that process causes a few of the stacked items in the list to be missing slot info. And when the sorting algorithm kicked in, it tried to access slot info, throwing an error. This null pointer issue should be fixed now.
Quick recipes were also getting randomized due to a load/save ID mismatch, so that should be fixed, too. I fixed a bug involving camp stats looking wrong whenever a new camp was awarded and/or items added to a new camp. And a random encounter's treasure should no longer appear illogically outside its container.
I also think I figured out what was causing the fullscreen mode to exit when starting or loading a game. So far, testing seems to be pretty smooth, so hopefully the next build is more graceful in honoring resolution preferences.
I made a few recipe changes, particularly to arrows so that they couldn't be made using wrenches nor crowbars. In the process, I also noticed a way to make recipes prefer cheaper ingredients first from ingredients selected by the player, not just those selected by quick recipes. And I've added the ability to rip newspapers into paper scraps, for easier sourcing of arrow fins. This involved adding a new junk item to the game, much like recipe scraps, except with no useful info on them.
Finally, I made some balance tweaks of the course of the day. Both lure and create obstacle are now more effective and reliable. In practice, they were neat ideas before, but usually not worth the risk. They often missed or had little effect Now, lure automatically moves the player one space away, and has better chances for knockdown, recovery, and wounds on the target. Similarly, create obstacle has higher chances for damaging or incapacitating the target. Since they're not available all the time, these improved outcomes seem fair.
I also slightly increased the crowbar's wounding potential. Previously, it was more of a mid-range lethality, while the wrench was higher, and stick lower. Now, crowbar is more in the higher range (which seems more logical).
So things are looking up for the new build. I was close to creating it today, but felt there were some outstanding issues worth waiting for. However, with that late quick recipe fix, maybe it's worth doing a new build as early as tomorrow. We'll see how things look then. Have a good night!
Today was a day of fixing a wide range of bugs. Some pretty hard-to-find ones, too.
First of all, I think I finally figured out what causes scavenge encounters to end suddenly with no outcome screen. It looks like it was a bug in the accident code, which randomly chooses which accident to apply if the safety meter is low. Several of the player choices had an empty accident encounter specified, instead of just having no value specified. I.e. instead of loading nothing, it was loading an encounter with nothing in it. After a bit of poking around and testing, I think I sorted out all those cases.
I also finally figured out the bug that caused creatures to magically appear in battle. After scavenging, the battle screen would often open with only one creature listed, and on the next turn, 2 or more creatures were listed. This was a bug in the UI, which wasn't correctly displaying any creatures beyond the first when a battle followed scavenging. I was able to fix this, and now folks should hopefully be able to better gauge their opposition.
The compound bow with strap recipe was broken, requiring (and consuming) the botany skill instead of a bow. That should be fixed next build.
I made a few changes to loot tables, so that there was a slight chance of ammo in a few more logical places. Previously, only creatures and forest shack would carry any, unless some was found inside a weapon. Now, the store should always have at least some, and a few of the buildings have small chances as well. Plus, forests now produce 1 large branch when crafted, instead of 3 (to avoid clutter).
I decided to add version info to the loading screen, to help troubleshooting caching issues. There have been one or two times when the title screen won't load, and it's helpful to know if the version is out-of-date, or if it's something else.
I also spent some time working on resolution quirks. I changed the "stretch" button to work a bit differently on 800x450 mode. Previously, it would just stretch the 800x450 plus black bars to fit the screen, which doesn't make much of a difference. In the next build, stretch plus 800x450 will try to minimize black bars without changing the aspect ratio. For folks with a resolution below 1360x768, but greater than 800x450, this might be a slight improvement.
Finally, I figured out the problem with the boots overlapping/showing on the wrong foot. It was due to resolution-switching. They worked fine if one was only in an 800x450 mode (or a multiple of it). However, as soon as the game touched 1360x768, the boot graphics got mixed up. And even switching back to 800x450 won't fix it after that. I've added some code to make sure all resolutions work now.
Sort of a strange collection of bugs today, but there were some good ones in there. That's all for me this week. Have a good weekend, all, and see you Monday!
Continuing yesterday's work on using charged items during encounters, I switched over to the encounter editor today. I needed a way to specify, per encounter option, how many charges to use. And since I use the encounter editor to make sense of the spider web of interconnected nodes, I needed to add that field there as well.
Unfortunately, when I installed Windows 8, I lost access to some installed tools that I used to build the editor on my old Windows 7 HDD. Namely, Haxe 2 and NME. As I was about to reinstall them, I noticed that Haxe has been updated to v3, and now NME has become OpenFL. Ostensibly, these are improvements to both platforms. However, as most software developers are aware, a platform upgrade can mean headaches.
I spent about an hour looking into the transition, and it looked like a lot of the work in OpenFL was aimed at smoothly transitioning into OpenFL from NME. I decided to give it a shot, and it actually went pretty smoothly. There were a few hang-ups along the way, such as needing to download the latest dev build of FlashDevelop for OpenFL support. However, it only took about 1.5 hours to upgrade the editor to OpenFL. And that included downloading and installing Haxe 3, OpenFL, FlashDevelop 4.4.3, and the requisite libraries and apps (such as MS VC++). Not bad!
A few hours later, I had the new charge fields added to the editor's UI, and reading from and saving to my development database. And from there, I started making changes to old encounters to support charged items (mainly night vision and the new flashlight item). I also found some encounters that needed to be updated to support ingredients rather than specific items, like the crowbar w/strap vs. the regular crowbar.
Not terribly exciting work, but necessary work. Keeping the editor up-to-date is a crucial step in future plot work, and ironing-out the ways players choose options makes future encounter design a bit more diverse.
Towards the end of the day, I tried playtesting for about 45 minutes, to see how balance felt, and also to see if I could catch any of the more difficult to reproduce bugs you guys have been reporting. It seems like a few folks have still run into quick recipe failures, boots not showing correctly when worn, andeven a crash or two. I wasn't able to catch any of those yet, but I'll keep trying. If there are any triggers that cause them to happen, let me know!
Yesterday's work on improving performance continued this morning. There were a few other places where code was creating lots of objects per-frame unnecessarily. After cleaning a bunch of this up, I think the game is a bit less wasteful, and there is a slight improvement in performance.
Bug fixes continued today as well. I've made some changes which should improve crafting with ingredients that shouldn't degrade (e.g. water, ashes). After this change, those items should always be 100%, and recipes shouldn't be penalized for them anymore.
The shopping cart and box cart needed some art adjustments so they could fit in the crafting windows. This bug prevents them from being craftable right now, but should be fixed in the next build.
I also started work on a change in the encounter system involving charged items. Some encounters use items which require charges to be useful. An example is using night vision goggles in scavenging encounters.
Currently, one can use these items even if they are empty of charges. The change I'm making will first ensure the item has the necessary charges to execute the encounter, so players won't have the option if the item is empty. Second, the encounter will discharge the item if used.
This turned out to be fairly tricky, as items use different amounts of charge depending on whether it's per-use, per-hour, or per-hex. So the encounter has to specify how many hours, uses, and hexes to discharge for the item. Complicating things further, scavenging is a special encounter type that allows multiple inputs and outcomes, each outcome accumulating to a total value for loot %, accident %, and creature %. In this case, I needed to make sure each used item deducted the appropriate charges.
Needless to say, this is a somewhat delicate system. It's almost working, but I need a bit more time tomorrow.
Hope everyone has a good night, and see you tomorrow!
It appears 0.973 is fairly stable, by most accounts. Still bugs to fix, but quite a lot of the issues from 0.972 seem to have improved.
Camp conditions getting stuck has reared its head again. It appears that last time, I didn't fully kill it. There was a problem that would leave default starting conditions on the player even after loading a save game. And worse, if the player saved in the cryo facility, there were a few situations that would cause camp items to appear where they shouldn't. That seems to be working now, after some tweaking.
There were a few bugs in the Isotope Mine that caused it to abort prematurely. Those were pretty easy to fix, and mostly the result of a branch not supporting players with certain conditions applied.
Quite a few recipes still needed tweaking, with some inaccessible, others producing the wrong outputs, and some reversing to produce weird outputs. I've made quite a few changes based on feedback here, and hopefully these will make more sense in the next build.
I finally dealt with the hoodie pocket under the fur coat. For a short while, I started working on making it accessible. However, after almost getting it to work, I hit a major roadblock. Basically, I discovered that I'd have to rewrite a lot of the inventory system to make that work.
So instead, I hid storage areas that get covered by another object. Now, when the fur is donned over a hoodie, the pocket will disappear. It's more inconvenient, but also avoids changing the most complicated system in the game. I'm going to let this sleeping dog lie.
Forest shacks have a bug that occasionally produces a giant pile of ammo. Oops! That's a typo. Enjoy it while you can!
Finally, I started some performance optimization work. Malacodor pointed out some hitching/stalling that occurs on the crafting screen, and that reminded me that performance is overdue for a look. I spent an hour or two at the end of the day cleaning up wasteful code, and have seen some improvements. I'll be continuing this tomorrow.
Thanks to everyone for the feedback on the new build! There's more to be done, but it's already improving just a day later. Have a good night, and see you tomorrow!
I've just finished uploading new beta (0.973b) and demo (0.973d) builds. This update is a formal version of the changes seen in the recent test (0.972t) build. Namely, new items, recipes, combat moves, loot tables, and lots of bug fixes.
Updates to both the Beta and Demo
Both the beta and demo versions have had dozens of (probably over a hundred) individual changes and fixes since 0.971 in early June, so there's too much to list in a detailed way. Some of the more significant changes include the following:
Added Corpses - Most creatures leave corpses now, and can be butchered for fur and meat with proper tools and skills.
Added Items - New meats and pelts from said corpses.
Changed Loot Tables - Loot tables for scavenging, creatures, and other sources of items have been redesigned to be better balanced and have more variety.
Added Recipes - New recipes for butchering animals and starting fires.
Added Creature - Deer now roam the map like other creatures do.
Added Battle Moves - It is now possible to surrender or demand surrender, as well as loot unconscious enemies.
Added crippling wounds to arms and legs for cut damage (in addition to existing blunt crippling)
Changed AI - Some AI will now prefer to loot unconscious victims instead of killing them.
Changed Tripping - All creatures and player should trip less in combat now.
Added Batteries - Night vision goggles now use batteries.
Changed Crafting - Quick recipes should now prefer cheaper ingredients, and those already in place, over those that are worth more and/or in the left panel. Also, ingredients are left in place instead of being auto-cleared each time.
Changed Battle Ranges - Battles have much different range bands now. Open fields will begin battle dozens of spaces apart, making ranged weapons dangerous. And rough terrain means starting closer together. Melee weapons and certain melee moves have ranges of 0, 1, 2, or 3, instead of just 0.
Changed encounters that deliver loot to drop loot directly on ground, and show player an "Items" button below the "Confirm" button, instead of sticking loot to the cursor.
Fixed Recipes - Several fixes for recipes that ignored or allowed ingredients they shouldn't, or produced wrong output.
Fixed Encounters - Fixes for some encounter choices that were broken or confusing.
Fixed AI - AI should use surrender more sparingly now.
Fixed crafting bug that caused quick recipes to stop working after a while.
Fixed item value bug when items were identifiable and in stacks/containers.
Fixed some stability issues caused by bugs in combat.
Updates to the Beta
In addition to the above shared changes, the beta has an extensive batch of new content. That content includes:
Added new primitive ranged weapons and missiles, like bows, spears, stones, and slings.
Added new primitive melee weapons, such as shivs, spears, broken bottles, and glass shards.
Added new firearms, such as revolvers, shotguns, and semi-auto pistols.
Added new vehicles including sleds, travois, and homemade box carts.
Added new flashlight item as an alternative to torches. Uses new battery system.
Added new versions of some old items with straps for easier carrying/storage, like crowbars and binoculars.
Added new recipes for creating and modifying many of these new items.
Fixed some encounters that were broken or confusing, such as Zom Zom's.
As you can see, there's quite a bit going on in these new builds. As we move forward, the gulf between demo and beta will look a lot like this build, where new mechanics are shared between the two (when they make sense), but the beta gets the lion's share of the new content and updates. In the end, the demo should still offer hours of fun, but the beta will be a fuller, longer, and more replayable experience. In theory, anyway. I reserve the right to screw up :)
Enjoy the new builds! And let me know if any issues arise!
Still lots of bugs being found. I managed to get quite a few more fixed today.
I think I found the bug that was causing the "left boot" loot. As it turns out, there was a calculation error that caused lists of possible items to favor those at the beginning of the list. So in some lists, that meant inordinate amounts of left boots. In others, lots of sleds/carts. I think I've got that sorted now, and things should be more evenly distributed.
Items were also being identified poorly, often only IDing the top of a stack, or showing the wrong prices/values. This took a bit of wrangling, as it touched a few different areas. But I think that'll be working better in the next build.
Crafting recipes were still a source of problems for players, and this was a lot of typo-related stuff (e.g. items missing a necessary property). I think all of the reported recipe bugs have been fixed as of this afternoon, and the next build should behave better in this respect.
I'm still struggling with the scavenge encounters, though. Getting them to honor strapped crowbars was supposed to be simple, but it's acting weirdly. Basically, I want the game to recognize any crowbar-like object in the encounter (like recipes do with item properties). But when I try it, the encounter bugs out and no tools can be used at all. I'm stumped, but I've only just started checking into it.
And on a broader scale, I'll need to revisit most of the encounters to make sure they accept substitute items where logical. This is a big part of the reason I've been putting off more plot encounters: adding new items makes old encounters obsolete, requiring rework. It's not really worth doing that rework just yet, as there are some more items on the way. However, I'll try to spot fix a few of the more important areas as I discover them (e.g. the strapped crowbar in scavenging).
That's about all for this week. Quite a flurry of activity! Hope everyone has a good weekend, and I'll catch you Monday!
Work on the test build continues, and I managed to knock off quite a few bugs today. Your bug reports are a huge help in stabilizing the wide range of new items, recipes, and features that went into the new build. Thanks for all your help so far!
Crafting had several bugs which were revealed in the latest build. For one thing, there was a problem with stacked ingredients when used as tools. Also, tools at 0% could be exploited over and over if cleverly used in crafting. Another bug caused problems if the ingredients produced more than 10 possible yield pages (the current limit), and might have been the cause of the quick recipes failing to work after a while.
I think I've got fixes for all of those issues, plus several recipe-specific issues, such as arrow crafting being broken, medium threads making a medium thread, and using a campfire to make a shiv. I also decided to switch the spear recipes from the trapping skill to ranged. Both make sense, but trapping is becoming a bit too overpowered in this build, so I may do some tweaking to reduce the scope of trapping.
I also spent some time working on the AI's behavior in battle. The frequency of surrender was way too high, so I've toned that down quite a bit. I may have slightly overcorrected, but AI makes up the difference by running away, so I think it's a safe move. I also tweaked the code that assessed target threat based on range, which I think was causing the behavior where AI would charge for a long distance, then retreat at the last moment.
Ammo is now an item in the "random carried junk" category, similar to raw materials, batteries, and iSlabs. This should slightly increase the number of bullets in circulation, which were basically at 0 except in found/purchased weapons. I like rare ammo, but this was a bit ridiculous :)
Boots now have mirrored images for right vs. left. A lot of folks were reporting that only left boots were appearing in loot. But then, an equal number of folks were reporting only right ones. When I tested it, I was getting roughly equal distribution of both, regardless of whether from scavenging or looting bodies. I think the confusion came from all boots using the same image (pointing left), even though the text descriptions had (right) or (left) in them. So each is a mirror image of the other now, which I'm hoping will clear up the confusion.
I reverted the change where sleeping/unconscious would drop any held items. This had some interesting uses, but failed in cases where players got ambushed during sleep. Bandits were scooping up the dropped weapons before the battle started, even though their range was far away.
Finally, I decided to add crippling effects to major cutting damage on each of the arms and legs. Previously, only severe blunt damage would cripple a limb. Now, if the arm or leg is damaged enough by bladed/piercing attacks, it too can become crippled, causing the held weapon to drop.
So, pretty busy day in all! Plenty more to do, though. Lots of bugs yet to fix. Have a good night, and see you tomorrow!
Several of you have tried out the test build, and things are looking pretty good so far. I've seen some really encouraging feedback, so I think we may have made some worthwhile improvements.
There are still bugs, of course. Kaaven has set up a handy thread in tech support to start tracking issues as they are found. The list is getting quite long, but I think many of them are smaller fixes.
I've started working on some already, and have found a few errors in recipes and ingredients. There were also quite a few bugs in the Zom Zom's encounter, preventing certain paths from occurring.
Tomorrow, I plan to continue fixing the bugs revealed in 0.972t. Once that build becomes stable enough, I'll do a full beta build based on it, and propagate it to the usual download places (regular beta slots here and on Desura).
Thanks for all the feedback so far, and see you tomorrow!
It's been a long while since the last build, and I'd still like to do some testing and bug fixing before doing the whole BBG/Desura/Flash collection. I did get a chance to playtest a bit today, though, and it was surprisingly stable. Therefore, I've put together a test build for beta users to try out.
New Test Build
All beta users can get access to a special "Test" build that I've uploaded today, v0.972t. It includes everything I've been talking about since 0.971b months ago, so there's quite a bit in there that should be new (especially content). However, it's highly experimental at this stage. It's functional, and I got an hour or two of play without any bugs, but I can't guarantee it'll be balanced or bug-free :)
The main updates in the "Test" build are:
New Items - All the new weapons, vehicles, junk, meats, pelts, and other items I've been yammering about.
New Recipes - The corresponding recipes for said items, plus a few new recipes for old things.
New Loot Tables - Items found in scavenging, on creatures, in hexes, and in the junk store are all redone.
New Creature - Deer now roam the map like other creatures do.
Corpses - Some creatures leave corpses now, and can be butchered for fur and meat with proper tools and skills.
New Battle Moves - It is now possible to surrender or demand surrender, as well as loot unconscious enemies.
AI Changes - Some AI will now prefer to loot unconscious victims instead of killing them.
Less Tripping - All creatures and player should trip less in combat now.
Batteries - Night vision goggles now use batteries. If all goes well here, I'd like to add batteries to other electronics, too.
Crafting Update - Quick recipes should now prefer cheaper ingredients, and those already in place, over those that are worth or and/or in the left panel. Also, ingredients are left in place instead of being auto-cleared each time.
Battle Ranges - Battles have much different range bands now, corresponding to the new ranged weapons. Open fields will begin battle dozens of spaces apart, making ranged weapons dangerous. And rough terrain means starting closer together. Melee weapons and certain melee moves have ranges of 0, 1, 2, or 3, instead of just 0.
Bug Fixes - Lots and lots of bug fixes.
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.971b beta build, just in case the Test version turns out too unstable to play. Hopefully, this gives everyone the best of both worlds!
Again, the test build is "use at own risk." It was playable in my tests, but I could've missed something. If you try it, though, definitely let me know what you think of the updates. There are some pretty drastic changes in there, and I'm hoping they're improvements!
Hope everyone had a good weekend. This one was my first one since returning from my trip, and was the first time I got to sleep in since mid-June. It was a welcome respite :)
This morning, I put together the next postcard design, and sent the order to the printer. I've exhausted my last postcard in the "Scenic Main Street" batch, so I've got a few orders I need to catch up on once the new cards are ready. So if you're still awaiting your postcard, hang in there, and I apologize for the delay!
The rest of the day was spent on the item tables in the game. I updated all the scavenging locales to use the new treasure system, and did a bit of rebalancing since I had them all in front of me at once. One notable change is that forest shacks should be a little less reliable for good loot. I also made a few of the other building types a bit more complementary. Residential places have more tools, drugs, and clothes, while offices have more snacks and drinks, and medical kits. Also, damaged buildings will have a greater proportion of rubble and junk as compared to their undamaged counterparts.
I also finished updating the new creature loadouts, hex treasures, and bonus loot for certain skills in scavenging. Each of those should be improved now, since some hadn't been updated with new items in a while.
Tomorrow, I should be able to start playtesting the new values, to see how they feel in practice. They'll need tweaking, no doubt, but the new data should mean the new items are in circulation now. I'm looking forward to seeing them in action.
First of all, say hello to Kaaven and Scavenger, who both became mods today! There are now 5 mods on the site: Nickboom, Markofbear, Minister Max, Kaaven, and Scavenger. They're mostly on the lookout for spambots and misplaced threads, but they're friendly chaps besides, and have been helpful haunts in the forums. Thanks for making the forums such an inviting place, guys!
On the dev side, today didn't turn out as exciting as I was expecting.
I thought it'd be a quick job of adding a few new items to the loot tables, and firing up the game to see how the new item frequencies felt. However, updating the loot tables is a bit more complex than a quick job. Before I could do too much, I needed to setup a few new loot entries for things like "random shirt," "random carried tool," "random rubble junk," etc.
Previously, each location and creature just specifically listed the items they might have. I.e. I'd have to list every possible item and their chances per creature, hex, store, scavenge locale, etc. Doing that for all the new items would be pretty unsustainable, so I used the recent upgrade to the treasure system to create random pools of items, so I could just say "the bandit has 0-2 random shirt items, 80% chance of a random weapon, etc."
Most of the random item pools are done, and the bandit, plains, urban, ruins, and store tables have been updated. I still have the other creatures and hexes to do, though. Plus, scavenging results will need to be updated.
So I haven't been able to test things fully yet. I did get to see a few interesting items show up in my early tests. Finding stones and pebbles in the wild was new, bandits were carrying things like bows, spears, and one had a pistol. I even found a city tile with some broken glass, empty drink bottles, and pieces of a shopping cart. So things are looking promising.
Monday, I think I should have most of these loot tables updated, and hopefully I can start testing then. Until then, hope everyone has a good weekend!
Happy Independence Day, folks! For those Americans out there, hope the grill is hot, the beverages cold, and the fireworks flashy! For the rest, pop open a tasty refreshment and enjoy your evening, just because. Can't let those yanks have all the fun, right? :)
As mentioned yesterday, I've been working on corpses, meats, and hides. And after some discussion with players, it seemed like a good idea to add a new creature specifically for meat and hide, so dogmen don't become the only source (which makes for tough hunting).
So I decided on deer, since they're in rather good supply around Michigan, and can offer both meat and hide/fur. And since we now have a few hide/fur sources, I figured I'd adjust the patchwork tunic to reflect the mixed sourcing. Here's a preview of the new stuff from today:
As you can see, the deer has no horns. I wasn't ready to start making separate buck/doe/fawn art, so I figured I'd go with small/missing horns. That way, it could pass for a doe, a malnourished/young buck, or a large fawn.
I also created separate fur/hide scraps for dogmen/deer, respectively. The dogman scraps will come from unskilled butchering of dogmen, while deer hide comes from either skilled or unskilled butchering. However, having trapping when butchering a deer corpse means greater yield of meat and hide.
And the patchwork tunic had a slight rework, so it doesn't look like 100% squirrel pelts. Since all three furs are interchangeable in that recipe, it seemed like a quick tweak to avoid breaking immersion.
I created some spawn locations further north for the deer, away from human activity, so they're more common up there right now. Based on my brief testing, though, raider/bandit spawns are still feeling too common near the cryo facility. So maybe I'll add a third deer region around cryo, both as a way to add variety, and also give starting players something to hunt.
Before I do that, though, I think I'm going to start plugging in the new items I've created to the loot tables. I have a pretty long list of melee weapons, firearms, missile weapons, some new tools, junk items, and primitive vehicles from the past two months. I want to add more, but maybe I should see how the game feels with this batch.
So I've started rounding up all the items, listing them for quick reference, and tomorrow, I'll start hooking them up to loot tables. I'd like to see how it feels with these new items in circulation, and look for any gotchas I might've missed. I can try fighting the newly equipped raiders and such, hunt some deer, and try my hand at crafting a sled or slinging a crowbar with a strap.
Tomorrow should be interesting! Have a good night, all. And stay safe if you're partying/driving!