Hey Folks! Hope everyone had a good weekend. A bit anxious here, but otherwise uneventful.
I put the new UI candy on hold for a bit after reviewing the list of current issues in the game. Some higher priority bugs have surfaced, so I'm tackling those first.
So far, the bulk of them are in battle mode. It seems some 4:3 UI stuff needed adjusting, unseen creature sprites needed special handling, and main menu button hitboxes were off a bit.
Then, I started digging into some weird battle behavior type bugs. For one thing, range wasn't being updated when moving. Some investigation revealed that the conditions applied to creatures in the game were being reused over and over. So instead of a creature having "Advance" applied 3 times in a charge, it would be applied the first time, then ignored. It'd even be shared across all creatures in the game! This was, as usual, easy to fix after a difficult time searching. A NEO Scavenger specialty.
The next issue involves creatures springing to life again while in shock from pain. They'll go unconscious like normal, and hitting them will startle them awake, while still in shock. Since shock applies an fSleepQuality of 3, (with 2 being high enough to sleep through anything), something's not right. I believe I'm narrowing down the cause here, and it might be due to the lowercase "f." We made some changes to the way conditions get applied that assume properties have a capital first letter, and that could be true of all properties except sleep quality.
Hopefully, another easy fix to a difficult problem? We'll see tomorrow.
Until then, watch out for wandering dogmen and melonheads!
Hey Folks! Been working on the new action buttons for mobile today. Trying to find a way to make the buttons bigger for those tiny screens, in a GUI that has basically no extra space left.
The current thinking is that we'll have a slide-out tray/panel on the side of the screen that the user can open to get at all the buttons. When it's closed, only the most commonly-used buttons are there, as well as running/hiding indicators. Here's a mockup in Small UI mode:
So where the old, slim candy buttons were, we now have scavenge and end turn buttons, and running/hiding LED indicators. Then, if the user wants to do any of the other actions, they slide out the tray (probably via tap or touch and drag) tap the command, and close it again.
This manages to make each of the buttons easier to target with touch, without having to rearrange the whole UI. I did have to do a little tweaking to make sure it didn't obscure the cursor mode button which appears in inventory screens.
What about 4:3 UI mode? It'll be a bit different. Remember that blank UI space we had in the lower right corner?
Turns out, that's the perfect size for this same cluster of buttons!
Lastly, we have the Big UI to contend with. In this mode, all action and inventory buttons are down the left side of the screen, so it's pretty tight.
However, I realized I could overlap the minimap and encounter screen buttons, since they never appear at the same time. That saves me 40px. Combined with the space the action buttons already use, I can then fit this slide tray in there. It peeks out a bit into the map area and items screens, but I have just enough spare room on those to nudge things out of the way.
It'll be tight, but doable.
Also, as it turns out, Big UI mode doesn't appear on mobile. So this is sort of a moot point for now. But I wanted to make sure I at least had a solution in mind.
There still could be some gotchas out there, but I think this is a net improvement for the UI. It adds some extra work to get at less-used action buttons. But in exchange, we get easier to touch buttons, and more clear running and hiding indicators. Plus, the 4:3 mode is a huge improvement with its new ever-present buttons.
Implementation starts Monday! Have a Happy Halloween weekend, all!
Today was better, in terms of progress. Most of the day was dedicated to mobile, including some art, testing, and dev.
The testing was roughly 1.5 hours in the demo in iPad, and she's really shaping up. The few issues I did encounter with UI were almost all solved by zooming in, panning, and zooming out. Basically, really precise placement of small items was made easier by zooming into a UI region, taking care of business, and out again. And the 1.5 hours means it's getting pretty stable, too. While it did crash at the end when exiting combat, that could very well be the same bug that happens in the Flash engine :)
Next up, I started tackling some new action buttons for mobile. The Scavenge, End Turn, Hide, Run, etc. buttons are faily small, and can be tricky to hit on mobile. Worse, many of them consume moves or even turns if accidentally hit. While Tiago and I have managed to hit them accurately with consistency so far, it always feels like a gamble.
Cue the new action slide-out menu. I'm working on a new tab that mobile users can tap (or slide) to expose these buttons at more reasonable sizes. Most of the time, this slider will hide lesser-used buttons off-screen. But we're hoping this approach will make it easier to use these when the need arises.
And while some of the buttons are off-screen, there is still room on-screen, even when the slide-out is docked. And in that room, I have to decide what to display. Probably more important buttons like End Turn, and maybe some indicators for running/hiding, so the user knows if they're active at a glance.
Finally, I also briefly looked into upgrading the message log to scroll more slowly when new messages arrive. When watching my mom test the game, she hardly noticed new messages appearing because they did so instantly while other things were happening (e.g. pressing a button, ending a turn, etc.)
The hope is that I can get them to animate/slide upward instead of jumping, so the movement draws the eye a bit more. It should be fast enough not to hinder experienced users, but slow enough to catch the eye for new users, and hint at the fact that it's a running log.
Hey Folks! Sorry for the late update today. I had a bank appointment this afternoon, and then it was time for dinner, and then the baby's bath, and...it's now quarter after nine and I'm finally back.
Unsurprisingly, today wasn't the most productive. I managed to do a little work this morning, working on busy icon/UI, and a little iPad testing. But nothing I can really feel proud of.
And unfortunately, that makes for the third partially productive day this week. Not off to a good start! I'm hoping to be able to get back on track tomorrow, and at least make a bit more headway on some outstanding tasks.
This is one time I'm thankful for having outsourced a bunch of work. Because even if my day was shot, Tiago is still full steam ahead on mobile, Josh is conjuring up some new soundtrack magic, and the web developers are busy implementing the designs we agreed to. Stuff is actually getting done, thankfully!
It turned out I had a few more last-minute changes to make to the title screen marquee. Tiago has a new way of loading URLs that seems more reliable than what I was using, so I updated that. And while I was there, I decided to make the default hard-coded messages disappear if the game finds new ones on the web. Never know how often updates will happen, so this lets me overwrite out-of-date messages from afar.
I also decided on what that default message will be. For now, just a simple "Mobile edition released!" yadda yadda one would expect from a new launch.
Once those changes were done, I spent a bit more time than planned sending some feedback to Josh about the next track. I wanted to give Josh enough info to work with so he felt he had adequate direction, and I think we've got several categories and specs we can work with for now.
Finally, I squeezed in a few minor usability enhancement work at the end of the day.
First, I added sounds to the button presses in NEO Scavenger mobile. This was something Steve added in his version, and I think it added a satisfying feedback mechanism to UI interaction. And since a few buttons can trigger some loading in the background that pauses the game, this helps the user know that the button registered their input when it does.
Second, I started working on a busy/loading icon the game can display if it is nonresponsive. Tiago's worked pretty hard at getting the game to "lazy load" data as it's needed, rather than all at the beginning. The result is that the game doesn't blow memory limits on older hardware, and loads faster initially. The drawback is that certain actions will trigger additional loading from the data, and this can cause the game to pause for a few seconds.
Ideally, we'll work out these pauses, but in the meantime, the icon will let the user know the game is actually doing something, and that's why it is unresponsive to input.
Hey Folks! Hope everyone enjoyed their weekend. Pretty quiet here. Mostly family stuff. I've been itching to get back into gaming for a while, but inevitably find myself unable to choose anything. And before long, I'm just reading twitter/reddit. I desperately need a) free time, b) something with which to obsess during that time. Been a while since I was gonzo for a game...
I managed to finish the title screen news marquee today. I even got it to load headlines from my website dynamically! This way, I can keep player abreast of interesting stuff whenever they fire up the game, and if they want to, they can click on the text to learn more.
The one problem I'm encountering is that getURL seems to be broken right now. It can retrieve the text from my site, but clicking it doesn't launch the browser. Could be a bug on my end, or in the API. Ah, the joys of open source.
Also, Josh sent the final version of his second track over to me, and it's pretty awesome. At 5 and a half minutes, it rivals some of the longest tracks in NEO Scavenger, but every second of it is a joy. It builds and twists, and should make more than a few players nervous as it fades in during play :)
Hey Folks! Still trudging through mobile UI here. Finally fixed the scrolling title screen silhouettes, and started work on a message window.
The scrolling background silhouettes turned out to be really tricky to figure out, but not too hard to fix once I did. Sort of the story of my (and Tiago's) life on this project. Ultimately, it was a series of small typos and wrong assumptions which were making it really hard to understand the output I was seeing based on the input I was writing. Eventually, I found the width that should've been a height, the sprite origin setting, and a few other "small" things that helped me correct the scrollers. Now, correct scrolling backgrounds on multiple title screen resolutions!
Once that was done, I turned my attention to the title screen footer, which will now include a news message area. This is where I'll have messages such as "new update available" and "important news at bluebottlegames.com," etc. Also, the hard-coded "Try Project Zomboid" will probably get rolled into this, and I might start expanding the list of recommendations to other games that NEO Scavenger fans have enjoyed.
Unfortunately, my first idea for a scrolling marquee was hobbled by uncooperative FlxCameras. After hours of trying to get the camera to appear in the correct place/size, I still wasn't seeing the thing I wanted inside the camera. I realized I could be facing even more hours of fixing this simple thing, when I could really get the same point across with a fixed-size text area and fade-in/out.
You know, like I'm already doing with the save/load messages on the title screen.
So I've ditched the camera approach, and I'm starting a fade-in/out message for the footer. Probably an improvement anyway, as scrolling marquees usually aren't very fun to read. They force the reader to pay attention and read at a certain pace, instead of showing all text at once in a more self-serve kind of way.
Anyway, that'll be next.
Tiago, meanwhile, is still nailing those bugs. And he's got a working prototype of the map-scrolling via touch+slide on mobile. We're trying to figure out how map panning works when already zoomed-in in the game, as the screen can also pan the full UI when zoomed. We have some ideas and theories on how it should work, but it'll ultimately depend on how it feels.
More on that next week. For now, have a good weekend, all!
Still plowing through mobile UI changes. I managed to fix the confirm "family" of buttons on both widescreen and 4:3 UI modes. And while I was in there, I decided to fix up a few UI placement things to make it look nicer and be easier to use. I also noticed a few minor bugs that were introduced in the engine port, such as fonts being the wrong size.
Once that was done, I turned my attention to the title screen. There's been a bug in the scrolling swamp silhouette for a while now, and I decided to finally look into it. I think it's down to position being messed up by sprite scaling, since we now have a different engine. Flash used to have a weird offscreen repositioning hack that I used, while Haxe is cleaner. And as a result, the positioning of certain things needs adjusting. In this case, I think I'll need to dynamically offset certain sprites depending on screen size.
It's not the most important feature. But then, it's the first thing a player will see when the game loads, so it should at least not look bad :)
Hey Folks! Today was another full-on mobile dev day. Mostly bug fixing, with a bit of new UI work.
The bug was a problem with encounter triggers always failing if they relied on a date range. As it turned out, Haxe's Date() class seems to be bizarrely broken in almost every way. When trying to initialize the date, it seemed I had something like a 5-10% success rate. In almost every other case, the Date defaulted to 1900/00/00 00:00:00. Basically a non-existent zero date/time in the year 1900. (Seriously, the documentation says that the day/date is 1-based, so the 00th day should not even be possible according to the class's specifications.)
After trying (and failing) to massage the input values to avoid this error, I eventually gave up and just changed the EncounterTrigger's dates to simple arrays. Since the trigger only checks greater/less than against the various date fields, this is all I needed anyway. Still, frustrating!
After that, I resumed work on the larger buttons for mobile UI. Namely, the Confirm "family" of buttons that includes "Clear," "Random" (skills), and arrows (prev/next crafting output). I have new versions of the button art done, and I'm in the process of updating the UI positions. I'll probably keep these for the PC version in future updates, as it doesn't hurt anything and makes them easier to target/see.
Tiago nailed several bugs today, as well, so it was a productive day. Here's hoping that momentum continues!
Still digging into bugs on mobile today. Been spending most of my time tracking down a weird demo bug which spawned feral dogs and King Elias in the demo, instead of the player.
As it turns out, this was a tiny bug in the code with big implications. A missed closing quote caused all creaturesources (i.e. spawn rules) to be added to the list of creatures (i.e. actual creature stats), so we ended up having our creature list IDs mixed up. Adding that quote into the code seems to have fixed the issue, and I'm checking for any others.
I'm also trying to figure out why the hypothermic car/sleeping bag encounter doesn't trigger in the Haxe version. And so far, signs point to a limitation in the Date() class on Haxe. Flash supported years up to 9999, which was my default "Max date" for encounter triggers. In Haxe, however, that gets changed to 1900, probably due to some overflow causing a default value. As a result, almost all date-based encounter triggers are failing.
Again, simple fix, but tricky to find. A NEO Scavenger specialty!
More like this to come, I suspect!
Finally, I've been chatting with Josh on his latest track. As usual, it sounds awesome. I'm checking with him to see if we can make it shorter, as it's closer to 7 minutes, and that might feel a bit long in-game. But it sounds quite good, so I don't want to break it by being picky. We'll see what he says about the difficulty of shortening it.
Hey Folks! Hope everyone enjoyed their weekend. Our family trip was a success, and we also survived the "Stormpocalypse" that was being predicted. So I call that a win! Interestingly, the biggest storm we received over the weekend was a spam forum poster that was pretty prolific across the net, but not hard to remove. Hopefully, they've moved on to greener pastures.
I spent most of today getting caught up on the recent mobile updates, as well as emails and other business stuff. I played NEO Scavenger on my smartphone for about 45 minutes before lunch, and it's actually pretty playable, even on the small screen. Certainly a bit trickier to place tiny objects, but with the zoom feature, I was able to overcome that issue without trouble. We may be able to play on handsets after all!
I've also collected a slew of smaller bugs to add to our polish list, so I've been adding those to our project tracker. And once that's done, I'll probably be resuming the UI improvements and fixes that I can manage while Tiago works on Demo mode fixes.
Anxious to get back into the groove after being away for four whole days away :)
Hey Folks! Been plugging away at the new mobile title screen. I have all the new UI assets made, and just finished the 3 UI mode layouts this afternoon. I think it's looking much nicer, and cleaner.
I still haven't finished the scrolling marquee/message box at the bottom, so that'll be the next step. The pieces are in place, but I need to make it fetch and display the text, and probably load an optional URL for some messages. (E.g. click here for the contest, or try the demo at this link, etc.)
I've also finished updating the "Confirm" button to be a little wider, and over twice as tall, so it's basically a big square now. This is the first step towards making it easier to use on mobile, since it's such a commonly used UI button. We're adjusting the layout in many places, too, so it should be reachable with the thumb for easier encounter/scavenging/crafting.
All of these changes may get carried over to PC if the build works well enough there. But first things first!
Also, just a heads-up that I'll be OOO tomorrow and Friday. I'll be wrangling the baby for a few days to free up Rochelle for her test, and to visit with family before they leave. I'll still check-in periodically, but I'll likely be slow to respond.
Also also, the mother of all storms is coming to Seattle. So I'm rather hoping our house isn't blown away :)
Anyway, have a good week/end, and I'll see you all Monday!
Do you want to win a free Steam copy of NEO Scavenger? Well, you're in luck! Until October 21st, Herblin is hosting a giveaway of 5 Steam keys on his YouTube channel, and it includes a chance for you to leave your mark on the upcoming space prototype!
Check out the video for complete rules and explanation:
Good luck, and I can't wait to see some of your entries!
Hey Folks! Bit of a slower day today. Most of it was spent on administrative tasks. Unfortunate, as I was hoping to get cracking on some mobile UI improvements :)
Even so, I had a chance to review one of Josh's new tracks for the space prototype, and it's good as usual. Strong ambient piece for use during the main game loop (interplanetary transit). He still has some work he wants to do on it, but I think it's off to a strong start!
I also spent some time reading up on marketing strategies, as a discussion on one of my gamedev forums had some really useful chatter this morning. Logged a few of those tips for when it comes time to do early access and/or release next time.
Finally, I've been trying to help Tiago with some demo-related bugs he's seeing, but I'm not having much luck. King Elias is spawning instead of a Player in the demo, which is all kinds of wrong. (And also eerily familiar to a bug I've never been able to solve with random creature spawns in the full version.) Still looking into that!
Anyway, I'll be pretty quiet on the internet this weekend in order to give Rochelle a chance to study for her board exams. Gotta wrangle the little one for a few days. Hope to see y'all Monday!
Hey folks! Took the day to plug away at mobile stuff today, and Tiago and I are really on a roll.
One of the major improvements Tiago recently added was pinch zoom and panning. And on top of that, a better placement algorithm that makes placing items in inventory spaces more forgiving. It basically tried a bunch of spots around where the user touched and fits the item if it can. Saves a lot of trial and error and guesswork!
As a result, I was able to play it a lot more than endure it. it's really starting to come together.
We're also starting to discuss some other UI improvements. Things like better placement of "Confirm" button, and making it bigger so it's easier to tap. As well as enlarging or somehow expanding the colored action buttons on the main UI so fat fingers can still use them.
The title screen is getting a mini overhaul, too. New links at the bottom, and I'm going to move forward on the dynamic message at the bottom for news.
Hey Folks! Hope everyone had a good Tuesday. Family trip for me yesterday. It was fun watching the little one gawk at fish and other kids. We gotta let her out more :)
Back at the office, I had a few administrative things to do in the morning, then it was straight into NEO Scavenger mobile.
First, Tiago had a new build with pinch zoom panning fixed, so we're now able to zoom into an area, pick up an item, pan the screen to the destination, then place the item. This feels pretty good, and I might have to try it on a few guinea pigs to see how normal people feel. Hmm, my parents are visiting...
I also fixed a pretty big null-pointer bug Tiago found, which is unfortunately also in the current Flash v1.14 build. I'm still holding out hope the Haxe version will supplant it soon, though, so I only made the fix to the new codebase for now.
Furthermore, Tiago found a bug in the demo that I introduced a few weeks ago. Turns out I missed some treasure data. That was causing some null pointer bugs in the new mobile demo, so I had to fix that.
Once that was done, I decided to turn my attention to the aging title screen. I'd like to rework the footer of the screen to have better links to the website, a full/demo toggle button users can click to unlock the demo, and possibly a message area to alert users to relevant news. (E.g. new build available, contests, etc.) I worry a bit that some users won't like the game "phoning home" to get this message, but maybe since it's just a text message and not DRM that'll be fine. I think it should be a non-intrusive feature that benefits users. But we'll see.
Anyway, the title screen could use a few things spruced-up. Hopefully, I can make it both more useful and interesting!
Hey Folks! Hope everyone had a good weekend. As mentioned Friday, my folks are in town, so we spent most of our time catching-up with them. And tomorrow, I'll be out of the office to visit with them. Should be back on Wednesday, though.
After taking care of some local tax stuff and other government filings, I set about working on orbital plotting in the space prototype. With the ellipse-plotter UI working, the trick now is to get it showing legitimate orbits for things.
The good news is that I've already worked out a lot of the logic for this last year when I was testing ideas out in Haxe. The bad news is, it's written in HaxeFlixel, and the prototype is in Unity C#. A lot of the syntax is the same, but a lot of the API is different. From the way lines are drawn on-screen, to coordinate systems, to even the architecture of the prototype vs. the old test code, I have some rewriting to do. But I think I'm on the right track here.
Tiago also sent me his most recent work on the mobile port, and this features a new zoom-UI. Namely, the user can pinch/spread to zoom out/in, and swipe to pan while zoomed-in. So far, this feels much more intuitive than the zoom lens we were (unfortunately) slaving away at. Even when on a 5" handset, I was able to access a glass shard by pinch-zooming into it and tapping the double-sized sprite, then swipe to pan towards where I want to drop it.
There are still a few issues to sort out with it, but it feels better. Maybe I'll get my parents to try it out since they're captive here :)
Hope everyone has a good Tuesday, and see you Wednesday!