Today was mostly about ironing out the kinks in the new crafting system. Many of the new recipes were showing some odd behavior, so it was a matter of fixing typos in the data, or edge cases that I hadn't considered. Things like adjusting the size property of rags from medium to small, in order to distinguish rags from clothes. Or fixing recipes with zero restrictions, which were being interpreted as having the restriction ID 0.
Most of the work was slow, but steady. But then I ran into the latest snag: recipe prioritization.
I continued work on the crafting upgrade today, and yanked out a bunch of the "clever" crafting stuff I was trying Friday. As mentioned last week, the "clever" stuff I tried turned out to be a can of worms, and created problems without actually solving the issue it was designed for.
So after cleaning out the "clever," I was left with an upgraded crafting system that had the following features:
A while back, you might remember me mentioning that my hard drive was on its way out. The clicking is unfortunately coming from my C: drive, where Windows is installed, so replacing it is a bit tricky. I've been putting off moving into a new C: drive for a while, since the clicking is only intermittent.
I spent a few hours this morning pruning some spambot stuff from the website, updating plugins, and generally weeding the garden. Then, it was back to crafting, and getting some of the more complicated recipes to work. Specifically, the scoped, strapped rifle.
Most of the day was spent ticking property checkboxes on the 270-odd items in the game. The tool I built yesterday was definitely useful in speeding this process up.
One thing I noticed, at around item 136, was that I really needed to go back and redefine how things burn. Previously, I had two properties that controlled burning: "fireproof" and "easily ignited." My thinking was that "non-fireproof" was good enough to indicate that it burned, and "easily ignited" was meant for things like kindling.
I managed to get the new crafting stuff working today. After a couple hours of bug fixing, I successfully crafted a rough splint from a branch and two plastic bags. It was a limited test, since those items were the only two in the game with any properties set on them, but it proves that the crafting system can work using properties instead of specific item names.
I took a detour today to go back and check out some bugs that players have been reporting in 0.968. It turns out that there is some weird behavior happening when creatures die, causing the ground to be empty after they do.
After looking into it a bit, it looks like it might have been a few bugs going on.
I returned my attention to the crafting/item overhaul today, and I think I've made some progress. When I last talked about crafting/items, it was in the context of revamping the crafting system to use properties. I'm hoping that the use of properties buys me a few things:
I just uploaded new beta build 0.968b for the flash version, to see if it's an improvement over 0.967b's memory and instability issues. Provided there are no immediate issues, I'll be following-up with updated demo and downloadable versions tomorrow.
Updates included in the 0.968b flash update include:
Yesterday, I read about some tools for memory management. Adobe has one, of course. And folks say it's quite good for this sort of thing. It's a full IDE, though, and it has typical Adobe pricing (e.g. $700).
I'm still trying to track down sources of memory leaks in the game. Each day I make a little progress, but it the game still gets too memory-heavy to call it "fixed" just yet. Right now, it seems that the game can become sluggish and memory heavy within 15-20 minutes of active playing, and I'd like to increase that at least to something like an hour. It doesn't have to be perfect, just acceptable.
So yesterday's download fix didn't change much. Slow downloads were still timing out. After an evening and morning of more research, though, I think I've found a method that works, even for slow connections. I learned way too much about file serving in the past 72 hours, and it's left me exhausted.
However, if this latest iteration works, then that's great! "Back to work," as they say.
This weekend, some users identified problems downloading NEO Scavenger from the site, so I ended up working over the weekend to try and find a fix. It appears that slow download speeds can cause the downloaded file to be incomplete when finished.
Took a bit of a detour today to look into a memory leak.
A few players have noticed that the game consumes more memory the longer it runs, and eventually that amount of memory can get quite large. After a few tests, I was able to see this happen in the debugger. It starts out using more and more memory, then releases a bit, rises again, drops again...the graph looks somewhat like a sawtooth function. And the teeth get shallower over time until the game allocates more memory.
Today was largely spent on PR-related and other back-end stuff. I finally updated the screenshots for NEO Scavenger on this and other sites, since the old ones reflected the game before the resolution upgrade and other UI changes. I also put together a Press Kit, since that is often handy for folks who need an official logo to use in their blogs, articles, etc.