You are here

February 2016

Just a Taste of Gamedev

Hey Folks! Hope everyone had a good weekend. Mostly move prep and baby time on this end, and I think that'll be par for the course in the next month. Getting excited, though!

Today's work actually involved some game dev! Just a bit. I dove into a few NEO Scavenger bugs I've been meaning to address since before the website crash. The first was a bug that caused the loading screen not to save the log to the clipboard if the XML was malformed. And the second was a bug allowing players to destroy communal campfires around the DMC in the "extinguish medium campfire" recipe.

I'm still waiting for the right time to do a new build. I'd like to collect a few more fixes and upload them all at once. Soon...

Back on the website, I finally got the Desura Connect feature up and running again! Unfortunately, their developer console won't let me update anything on that end (requires admins to change stuff, and they have no employees right now). So I had to setup some things in ways I didn't want to (old paths, mainly). However, it should be working again, for anyone still left behind over there.

And, I think I've got the FastSpring purchase flow working again. I haven't switched it on yet, as there are a few things I want to look over. But I was able to make a test order this afternoon and grant myself the game and a Steam key. So that's good!

And you know what that means? I can finally start doing game dev again! Woohoo! Now, where the heck was I...

Boy I Sure Do Miss Developing Games

Unfortunately, the string of non-gamedev days continues. Still a lot of web development today, but also some taxes and moving-house thrown in for variety!

The website is getting closer and closer to where it was, with the following fixes and features added yesterday and today:

  • Added the ability to receive notifications if your comment or post is replied-to.
  • Changed the forums to behave more like the old ones (better threading, recent activity, mark all read, etc.)
  • Added a sidebar on the homepage with the game links and news archive.
  • Changed the homepage to be full articles instead of teasers.
  • Changed the homepage to have comment count and comment links under each article.
  • Removed forum comment subject/titles (they were redundant)
  • Changed minimum comment height to be smaller, so there was less wasted space per comment.
  • Changed comment text area to be larger by default, so it was easier to see.

I've also been trying to resurrect the "Desura Connect" feature, which was decommissioned during the upgrade. A lot of the code from that no longer works due to changes in the website API, and new PHP version. I'm nearly there, I think, so hopefully that will be online again next week.

I'll eventually also need to resurrect the direct-purchase through FastSpring, but that is a lower priority since it won't hurt anyone to leave it offline (except my bank account,I guess).

I guess the good news is that we're almost back to normal now! I can actually relax a bit this weekend (as much as that's possible when planning an international household move). I may even be able to get back to some game dev next week! (Gasp!)

Anyway, have a good weekend, all!

Last Chance to Get NEO Scavenger at -67% During's Shattered World Sale!

Time's a-ticking, Folks! NEO Scavenger is on sale for the lowest price yet at!


Ominous countdown clock initiated...

As of this post, there are just under 19 hours remaining on's weekly staff pick. Those of you waiting for the $5 USD water mark, your time has come :)


Bug Fixes: Website Edition

Well, the site's been live 24 hours and hasn't exploded yet. So that's good! Though, it still has some teething issues to sort out, and thanks to everyone for their feedback so far!

One of the biggest comments is about the apparent downgrade of Forums features. This is largely due to the new site not using a special forums module I had installed before. I've started working on a local copy of the site to see how it works in this new version. It's not exactly the same, but it appears to solve many of the issues we're seeing. More on that tomorrow.

Some of you may have noticed some issues accessing your preferred version of NEO Scavenger, so fixing that was a big priority today. The Flash full-version had some file system paths that were out of date, so I started by fixing those. Also, users who had the Jar of Eyes edition were not getting it when appropriate, so I fixed that as well.

I've also started work on some stylesheet fixes to make user signatures clearer and error messages more prominent. Those will probably come with updated forum fixes later.

We're not out of the woods yet, but I'm starting to see light ahead!

New Blue Bottle Games Website

Hey Folks!

First of all, I apologize for the long delay in getting the site running again. I've been delaying a major CMS upgrade for a while because of the potential for long downtime, and figured I could wait until announcing either the mobile NEO Scavenger or new space game officially. However, reality doesn't always wait for convenience, so I was forced to just get it over with and upgrade to the new CMS.

So, we have a new site now! And as with anything, there are some pros and cons.

  • Profile Pictures - Unfortunately, I wasn't able to keep the profile pictures in the upgrade. I managed to keep user IDs intact, but the pictures were a casualty of the new system. You'll have to re-upload your if you want one.
  • URLs - All old URLs should continue to work, thankfully. It was a tricky task, but I was able to maintain old node IDs in the new site, so off-site links shouldn't break. (I.e. links to forum posts, articles, news, purchase page, etc.)
  • Private Messages - These are gone. However, each user should now have a "contact page" that allows other users to get in touch. It's basically a contact form that hides your real email address, but sends you an email behind the scenes if someone messages you. Also, you can turn this feature off in your My Account page.
  • Comment Notify - Similarly, forum thread notification emails no longer exist. I'm unsure if I can restore this feature or not. For now, you'll have to manually check-in to see if a thread has updated.
  • Search - Since it's a new website, it needs a bit of "cooking" time to get the search index back to normal. So you may find some searches unexpectedly returning no results. This will get better over time as the server chugs through the backlog of content.
  • Desura Connect - I had to disable this temporarily until I could rebuilt it for the new site.
  • NEO Scavenger Direct Buy - Similarly, I had to disable purchasing the game here until I figure out a new solution. I still have links to Steam, GOG, and Coinplay product pages, however.
  • BBCode - I managed to get some extra BBCode tags for free with the upgrade. You'll now be able to (I think) embed YouTube videos, use abbreviations and acronyms, apply table formatting, and other things.
  • CAPTCHA - I've upgraded the CAPTCHA to be a simple 4-digit code you must type in using a mouse keypad, instead of the old letter/number image recognition.

Also, there could be other things I've missed. If you notice anything broken, definitely let me know. It could be that I haven't upgraded it yet, but it may also be due to my missing it.

Hopefully, the new site will be a step forward in most ways. And more to the point, hopefully this means I can get back to what I really want to be doing: making games!

Ok! Back to GUIs

So! With that near-week-long interruption (hopefully) behind us, let's get back to data editing, shall we?

When I last left off, I was trying to get a visual editor setup for editing the game data. Specifically, the complex network of conditions, triggers, and interactions. Today, I made some more headway on that tool, resulting in this GUI:

IMAGE( Adding some variable-length widgets to bottom of UI.

Above, we see the previous text-editing UI now with some drop-downs and buttons below it. They're not active yet, but I was able to get the layout to behave as rows are added and removed dynamically. And since almost all of the data types I'm trying to edit have these "drop-down plus remove" rows, this should be reused quite a bit.

I still need to get things hooked-up since, right now, they just load dummy values (unlike the white text areas above). And after that, I'll need to start loading multiple UIs like this into a scene and connect them via arrows, according to the game data.

So there's still a way to go. But getting this UI to neatly accept an arbitrary number of "drop-down plus remove" data rows was significant progress. Hopefully, more of that tomorrow!

Site Outage Follow-up

Hey Folks!

Some of you may have dropped by in the past hour and saw the site offline. Not to worry. It was a planned outage today. I wanted to change the login and password for the database for security reasons, and the site became unavailable while I was making backups, changing stuff, then restoring.

I think we're back to normal now. But if you run across anything amiss, do let me know!

And thank you for your patience during this bumpy ride :)

Site Outage

Hey Folks!

As most of you noticed, the site was offline for an extended period of time. I apologize for the inconvenience. I usually try to give everyone a warning before it goes offline, and to minimize downtime. However, this situation was a bit different.

What Happened?

Apparently, a malicious script was found trying to execute on the site, and as a cautionary measure, the site was disabled by the ISP. Once it was detected, I began a long process of reinstalling all software and reviewing all custom code on the site. Partly, this was to restore normal functionality, but also to ensure any potential security holes were patched. As you can imagine, this takes a while for a site of this size.

Was Anything Damaged?

As far as I can tell, no. Apart from the down time and many sleepless hours of my time, nothing seems to have been damaged. The database is still intact, so all content, users, and forum posts are still there.

Was Anything Compromised?

This is harder to detect. It's possible that the malicious script was trying to access data on the site. A more likely case is that it was trying to setup an auto-emailing script to send spam from my mail server. The worst case is that they somehow mined the database and found the user email addresses or passwords. The passwords are are encrypted, but it's usually best to change them (and any other sites using the same credentials) asap.

Whatever the case, I'll be working on a mailing list in order to disseminate this post's info to any current users so they can act accordingly.

Once again, I apologize for the inconvenience!

Form UI Progress, and Sample Gameplay

Hey Folks! Progress on the data-editing UI is actually pretty good. I got a bunch of features hooked-up today that have traditionally taken me weeks in other APIs, so I'm feeling hopeful.

IMAGE( Data Editing form showing actual interaction data.

As of now, I've got a form that I can dynamically add to the scene which has editable text fields for each data field. I was able to add an interaction's values to each field, and capture changes to those fields immediately after the user makes them.

The form can be dragged around, the scene can be panned with WASD, and zoomed with the mouse scrollwheel (or +/- keys). If the user clicks in a text field, scene view controls pause while they type.

As an added bonus, the Unity text fields seem to handle just about everything one would need. Ctrl+A selects all, I can (sort of) highlight text with the mouse, cursor navigation via arrows works.

Unfortunately, the "Enter" key seems to lose focus on the field instead of entering a line-break. However, this seems to be more of a default behavior setting than a missing feature. I think they expected most text fields to be single-line, so hitting enter immediately focuses on the next field in the form, so users don't have to click to continue filling-in the form. I'll be looking into how this can be changed next week.

Apart from that, the UI stuff has been pretty easy so far! I think I'll be able to start tackling node-to-node connections to show branching logic, and maybe some other node types (Conditions, Triggers, etc.) soon. And all this is with the aim to make editing my data easy again in this new engine (and therefore, easy for modders in the future).

Also, I've been continuing my thinking about drama UIs, asking around here and there, and I'm getting some good feedback. One thing which came up today in my discussions was a potential example of gameplay. I.e. what do I expect the player to be experiencing during the ship and crew management portion of the game?

Here's a possible example:

Player: Huh, I wonder why Ted is just sitting there at the end of that corridor, not doing anything? <Clicks Ted> Ted: Ted is moping around, dejectedly. Ted: Ted is listening to voice mail over and over. Player: That's not good. What the heck happened? Scrolls around ship to find rest of crew. Sees Tina and Vallerie chatting in the mess hall. <Clicks conversation icon.> Vallerie: Vallerie puts a hand on Tina's shoulder. Tina: Tina vents about Ted's constant advances. Player: Hm. <Clicks Tina's avatar.> Tina: Tina refuses to be around Ted. Tina: Tina is considering terminating her contract with the Flying Dutchman Co. Player: Ah crap. I'm probably going to have to get rid of one of these next port. Or else keep them on opposing shifts from each other. Game: Alert! Pipe freeze in the main coolant system! <Fluid starts flooding the HVAC chamber.> Player: Crap again! Drama's going to have to wait. Time to roll-up my sleeves and jury-rig a fix for the busted cooling system. Hope we have enough coolant left to reach Io...

Up until now, I've sort of been hand-wavy about how drama is going to work aboard the ship. But this is one of the first times I've written it out, and thought about user clicking, decisions, etc. I'm unsure if all of this will be possible yet, but it gives me a slightly more tangible goal to work towards. And I think it's pretty compatible with our recent discussions re: clicking conversational entities.

More on that later, though. The weekend is here, and Steam is having a Lunar New Year Sale (which features a -50% NEO Scavenger, hint hint). So grab some games, a hot drink, and enjoy the weekend!

Fixing Interactions, Continuing Crew Drama UI Thoughts

Hey Folks! The rumination continues on the crew drama UI system. I'm getting lots of useful feedback and suggestions, and I think there are some new directions to try. So that'll be on the plate soon.

Before that, however, I need to make sure the interaction system is actually doing what I designed it to. I've been noticing some glitches here and there, and they're complicating my playtesting.

One of the issues mentioned yesterday was the interaction target points being wrong. I had two errors in my code, causing the items to have use points which were inaccessible. The first issue was an incorrect calculation of the point's position based on item rotation. The second issue a problem with radians vs. degrees. Once these were sorted out, I was able to see more consistent/accurate AI positioning when performing actions.

The second issue I've encountered involves the sleep cycle. I cleared out all the variables from my AI except sleeping stats, and I'm not seeing what I expected. The AI rightly seeks out a bed when drowsy, but never seems to fall asleep.

Looking into the data, I'm finding it hard to reconstruct in my head how it worked. Lots of jumping around json files to map condition to trigger, trigger back to condition, etc. All the numbers and references seem to be correct, but I'm finding debugging to be hard.

And to make matters worse, my old Haxe editor used XML format instead of JSON, and I've since added some new data fields. So I don't have the nice visual editor for the interaction trees and data fields. I've been putting off data editor work so far because it takes me away from gameplay design, but I think it's caught up with me. So I've decided to try and bring the data editing tools back up to speed:

IMAGE( (In Simon and Garfunkel voice) Hello GUI my old friend...

Getting a complex form GUI hooked up is no small task, and I've been kinda dreading it based on past experiences. However, it's not turning out as bad as I expected this time around.

For one thing, Unity has a visual GUI editor which my Haxe tool didn't. Where I spent weeks (months?) struggling with text field line wrapping and input, and other missing UI features, the Unity stuff "just works." And laying it out isn't too hard once one learns how the position and anchor widgets work. I knocked-out the above layout in about 30 minutes, and I can move and scale it with reasonable widget repositioning and resizing. Not bad!

Of course, I still need to hook it up to data. But this is miles beyond my previous experience of using incomplete UI libraries and doing it all in code. WYSIWYG editors have never been my favorite, but this may be one case where it truly makes my life easier.

We shall see, however, once the rubber meets the road. (Or in this case, the data/logic meets the form.) More on that tomorrow!

Crew Drama UI Rumination, and Debugging

I made a few more tweaks to the crew simulator this morning, so the labels sit more tightly with their owners, and they stay out of each other's way when more than 2 crew are present. Once these were in place, it was a bit easier to watch the simulation and judge.

And judge...and judge...and judge...

I'm not sure if this will be the right way to go or not yet. It works well-enough at first. I can see the bracket highlight the named crew sprite on the map, and the text below tells me what they're doing. And with one or two crew present, I have enough time to see what each is doing before it updates (mostly).

However, my eyes are flicking back and forth a lot from the portrait/text blurb at the bottom to the bracketed sprite on the map. And as the number of crew increase, things get worse. Eye-flicking gets strenuous, and many messages get lost in the flurry. Kaaven's suggestion to limit the feed to certain comms or other channels might help stem the tide, but I think there will still be situations where it's overwhelming.

I think I'm okay with the player missing the complete text of statements in a crowded room or busy comms channel. That's not really a shortcoming. It's reflective of reality. It's hard to follow multiple conversations, so we block others out to focus on one, and I could maybe do a UI to simulate that, and simply show fragmented versions of text in cases where the player is trying to follow too many at once.

My main concern is the eye-flicking. It's reminiscent of the combat UI in NEO Scavenger: one of the major flaws that gets called-out by reviewers. People like the deep combat, and some even enjoy reading the logs, but having to constantly read, check the UI, go back and read, and repeat is a chore. It's a lot of mental remapping to keep situational awareness.

So I'm going to think on this a bit more before moving forward. There's got to be a better way to take-in the goings-on around the ship without constantly checking back and forth to see which sprite is where and what they're saying/doing.

I still like the portraits, though. They add personality, and I think they'll be worth the added content costs.

Since no ideas were readily coming to me, I decided to double-check the interaction system to see if anything inspired me when I saw crew not only interacting with other crew, but taking breaks to sleep, eat, etc. And I noticed a bug!

It turns out the game wasn't applying all the item data it was loading, so beds and fridges were lacking flags that made them address their respective human needs. It was pretty easy to fix once I figured it out. And it revealed another bug with pathfinding.

Each item has certain interaction points for controlling where crew stands when interacting with the item. E.g. one stands next to the fridge when using it, or on the bed when using it, etc. However, these points were not being scaled down from pixel space to world space coordinates, and pathfinding couldn't reach the super-huge coordinates they were providing. Easy fix: just apply pixels-per-unit coefficient.

However, I still think they're broken when the item is rotated. It seems the points are not getting rotated with them, so I'm getting invalid use points still.

The good news is that this may actually be the source of some weird interaction bugs I've been seeing between crew, as well. I think crew have been interacting at long-range because of the scaling/rotation errors. We shall see tomorrow!

That's all for now. Have a good night, all!

Crew Dialogue UI Work

Hey Folks! I managed to get Unity's UI under control enough to move forward with hooking it up to data today, and it's starting to take shape. Here's a sample:

IMAGE( Drama aboard the SS Prototype!

Using yesterday's portrait mock-ups, and Kaaven's suggested UI mock-ups, this is how the prototype's UI currently works:

  • A dialogue UI appears at the bottom when any crew begins an interaction that's set to "dialogue=true." (E.g. visible ones like talking, waking-up, but not waiting, continuing to sleep, etc.)
  • That UI continues showing the same info until another crew does a visible interaction. (Usually the response.)
  • A UI bracket appears around the crew sprite in the ship to help denote who's acting.
  • Each crew has a nametag floating near their head that follows them around.

In simple situations like this, I think this is working pretty well. The user has plenty of time to read each interaction as it appears on the UI. And it's guaranteed that the user probably wants to see them all for such a small ship and crew.

Some problems can occur, however, as the situation gets more complex.

  • The dialogue UI stays up forever until another interaction.
  • The dialogue UI sometimes appears too late or early for an interaction.
  • Two or more crew doing interactions at once makes the dialogue UI change too quickly. Only the last interaction to be displayed is there long enough to see.

The first two problems are pretty simple to fix. I can add a timer or something to hide the UI after so many seconds. (I could probably even setup a history/log to open if the user wants to see earlier entries.) And the timing of the UI can be fixed to appear more sensibly once I figure out why it's doing so.

The third problem, simultaneity, is more complicated. With this style of UI, I think the user needs to somehow control which crew they care to see vs. ignore. Since we cannot see both Mann's argument and Edison's push-ups elsewhere on the ship at the same time, we need to single out which one the user currently cares about.

One possibility is for the user to simply click the person(s) they want to monitor, or grab the AI closest to the camera's center. This way, the user is directly focusing on what they want at all times.

Another possibility is to make the user correspond to a single avatar. Then, that avatar's current position controls which interactions they can see. If it's in the same room, it appears. If it's far away, it doesn't. If multiple are in the same room, like a cocktail party, they'll have to move closest to the group they want to monitor.

And a third possibility is that we go with another UI which accommodates multiple interactions on-screen at once. So far, feedback has been that the interaction shouldn't dominate/obscure the screen, which I think I agree with. But it's possible there's a way to do this unobtrusively. So I'll keep my eyes open.

Still, it's nice to see AI doing stuff! I'm not quite transfixed by the unfolding drama yet or anything, but I can start to see how interesting interactions will happen that I can fill-in with my imagination.

Accounting, Crew Portraits, UI

Hey Folks! Hope everyone had a good weekend. I think a lot of our catch-up from returning home spilled into the weekend, as it felt like we were still doing a lot of running around. And there's more to come, as we start getting our ducks in a row for the big move. We technically have two months to vacate, but that time's going to go fast between hiring a mover, finding an apartment in a distant city, getting the pets vaccinated/documented, and the other seemingly endless things that need wrapping-up.

I'm also trying to find a good lawyer to consult on the business moving across the border. No definite prospects yet. If you know any good attorneys with game industry experience, let me know!

Right, so what did I do today? Unfortunately, accounting in the morning. With taxes coming up (yet another thing!), I'll need to make sure my income/expenses are neatly organized and receipts ready for the CPA. Lots of slips to gather and upload, too.

But what did I actually do for work? Well, crew portraits!

IMAGE( There will be no smiling on this ship. Are we clear, Akiko?

After last week's post, there was a great discussion in the comments about possible dialogue representations. And Kaaven mocked-up a pretty easy-to-read UI possibility showing portraits.

I decided to run with that general layout, and see if I could put together some modular/procedural portraits so players could recognize and/or customize crew.

The above example shows two different faces using a combination of parts layered on top of each other. They include different head and jaw shapes, eyes, brows, ears, mouth, nose, hair, shoulders, and shirt. And background.

My initial thought was to try and normal-map them like the crew/ship sprites, but I quickly shelved that when I realized how hard it would be to seamlessly overlay these different parts. For now, I think I'll go with the more toon-ish style. It also got me thinking about whether the in-game crew sprites should be a similar toon style, to make them easier to spot, track, and differentiate from each other. (Kaaven rightly pointed out that the current lit crew sprites may be too hard to discern one guy from the next.)

As always, this is placeholder art, but I think it shows one possibility for how we can get variety in the crew, and make dialogue more interesting to watch.

The next step is to see how this looks in-game, and decide if it's a step in the right direction. So far, I've only got the UI mocked-up. Getting Unity to do a UI bar for the portrait and text is turning out to be tricky. It's easy enough to just lay them out manually, but I think there's a way to make them horizontally arrange themselves to fit the space if it changes (e.g. other resolutions). I want to try and get that working if I can, so I don't have to hard-code UI sizes/positions.

That's about all for today. Have a good night, all!