You are here

April 2016

Data Changes, Loot, and Website Planning

Hey Folks! Nothing too fancy to show off today. Most of the work was invisible groundwork for what's next in the prototype: containers and loot.

As mentioned earlier, I've been working on getting all items and crew in the prototype to be a bit better organized. I've now got everything refactored, and my item/crew objects have their visuals in one data file, while their game rule definitions are in another. This allows me to define things like starting conditions and AI preferences in the entity. I'm calling them "Condition Owners" or COs for short.

And now that COs can contain things, and add/remove COs from each other, I'm getting started on the concept of loot. A CO for a fridge, for example, might have starting loot of 5-10 food packets, while a CO for a pirate might have a longer list of items. And I want my AIs to be able to run around the ship taking items to be consumed or equipped.

My first inclination is to copy the treasure table format from NEO Scavenger, since I know it works. E.g. "ItemA=0.6x5-10" will mean there is a 60% chance of 5-10 ItemA objects inside. The main difference in this new game is no more AA:BB.CC naming formats. That numbering format caused all kinds of issues in NEO Scavenger, especially with modding. Using simple strings will make things easier on everyone.

So that's where I'll be picking up on Monday morning.

In other news, I've also begun working with a studio on revamping the Blue Bottle Games website! It's long overdue for an overhaul, and the security/outage incident earlier this year bumped up that priority. Things have been running fairly smoothly in the new software, but if anything happens, I still have to drop everything to fix it. This studio is going to help me redesign and reorganize, and it'll be good to have a company I can turn to in a case like that, and just say "please fix it" while I get back to game dev.

It's pricey, unfortunately, but I think the investment will be worth it because it's done right, it's secure, I can free up my time, and hopefully, it'll be a cooler website and easier to use!

Anyway, lots of stuff flying around these days! Space prototyping, mobile development, website upgrades, and NEO Scavenger patching...you'd almost think I were a real studio :)

Have a good weekend, all!

NEO Scavenger Update v1.14: Autosave! And Modding Fixes.

NEO Scavenger is now officially updated to v1.14! Since the test builds have been relatively stable, I've just finished updating the default builds to 1.14 on all sites. The "test" links are no longer necessary, and have been removed for now.

This updates the following builds:

New changes include:

  • Added optional autosave feature to save game at the beginning of each new turn.
  • Added ability to choose whether encounter map labels appear on minimap by adding =0 or =1 at end of data. If missing, assumes minimap label added.
  • Changed crowded map labels near DMC gates to be invisible on minimap, so only gates visible.
  • Fixed a bug that allowed communal barrel fires to be destroyed in extinguished fire recipe.
  • Fixed a bug in loading screen that prevented log from being added to clipboard if error in XML file.
  • Fixed a bug that misreported 0.0 charges on charged encounter items.
  • Fixed several null pointer bugs when loading save file that included content missing from currently-installed mods.
  • Fixed a null pointer bug if game tried to load recipe scrap for missing recipe.

The big change here is the new autosave feature. It'll try to save the game at the beginning of each turn so your progress is not lost in the event of a power outage, crash, or other event. It is enabled by default, and can be disabled on the options screen. Note that permadeath is still active, and your save will be deleted if your character dies.

Also, some modding enhancements made their way into this build. The loading screen logs should now be fixed in the event of bad XML format. And minimap labels can now be controlled by modders. An =0 means no label, while =1 means a label is added to the map. Default assumes a label is added.

Finally, the number of charges in an encounter item are now correctly reported, among some other null pointer fixes.

As always, if there are any issues with the new build, let me know on the forums!

NEO Scavenger Mobile! Plus Data Work

Good news, everyone! NEO Scavenger Mobile has a new dev!

As some of you know, I've had NEO Scavenger Mobile cooking on the back burner for a while now. Steve was porting the old NEO Scavenger Flash engine to Haxe so it could run on iOS, Android, and many more in the future. However, due to scheduling conflicts, Steve had to step down, and I've been looking for a replacement.

Fast forward a few weeks, and I'm happy to announce that the torch has been passed to Tiago Ling Alexandre! Tiago has quite a bit of experience both in developing Haxe apps as well as launching things on the AppStore and GooglePlay. I'm happy to have his expertise on board as he scavenges what he can from the ruins of AS3 code to craft a powerful tool for the future! Or at least, something to help me not starve and/or freeze to death :)

In other news, I slapped together a few normal maps for food packets and the fridge item, and fixed a few bugs to make them work in ship layouts. AI can now consume food packets left on the floor, as well as check fridges for food. (Currently, none found all the time.)

I also started work on a change to the way data is stored so that I can start defining things like typical crew and item stats. Currently, I have "item" data, which is a kind of mix between appearance and game stats. I'd like to change this such that "item" becomes purely visual stuff (images, shadows, grid placement), and a new data type will contain stats, available interactions, etc. This way, I can have a variety of unique entities in the game have different stats while sharing the same appearance.

It's slow-going, though. There's a bit of deep refactoring going on where I hacked stuff together to work. But hopefully, this is the next step towards having things like preset crew and item types (e.g. tough guy, mechanic, pilot, and malfunctioning fridge, fancy fridge, etc.)

More on that tomorrow!

All In the (Space) Family

Continuing work on AI today, I managed to fix a bug that caused AIs to interact with other AIs that were currently busy doing something. For example, an AI trying to get some sleep might try doing so on the same bed another AI is currently using. Funny, yes. But not really the target behavior.

Once that was fixed, it was time to sit back and get a big picture of the AI system. So I built a new ship layout for testing, and added two crew members per bed (since right now, each AI starts with a high chance of sleepiness). Here's the result:

IMAGE(http://bluebottlegames.com/img/screenshots/screenshot-2016-04-26.jpg)

We're gonna need a bigger boat.

First things first. It's buggy. AIs are having conversations in rooms where other crew are trying to sleep. Some AIs are magically talking through walls and across the ship at other AIs. Some AIs are escaping mid-conversation and leaving the other AI waiting...

That said, AIs are having conversations! And sleeping! And navigating to each other (most of the time)! Overall, I think there's something workable here. And the icons are doing their job so far. I'm seeing them pop up around busy AIs and I have a rough idea of what's going down. Talking, inquiring, affirming or denying, sometimes yelling.

In this case, Rodriguez is being friendly to Brickell, Mann is doing some prone activity (likely push-ups) in his room, and the rest of the crew are trying to get some shuteye. Not bad!

I think it'll be a toss-up between fixing some of those aforementioned issues and maybe fixing up a fridge and food items for alternate metabolic actions besides sleeping. This may be getting into one of those fleeting "fun zones" of game development :)

Have a good night, all!

Crew Emoticons

Hey Folks! Hope everyone had a good weekend. Ours was still chock full of bureaucracy, but we did manage to squeeze some fun in here and there. Plus, pizza!

Today, I tried to keep the forward momentum on last week's crew speech bubble UI elements. So I took some advice and skipped reinventing the wheel, instead using the existing NEO Scavenger encounter items to show AI interactions. Here's a preview:

IMAGE(http://bluebottlegames.com/img/screenshots/screenshot-2016-04-25.png)

Yup, that looks like a Joss Whedon spaceship crew.

Using the NEO Scavenger icons gives me a chance to move forward with UI positioning tests without having to draw a bunch of new art. And for the most part, the old icons cover all the social situations I have so far. Assuming you guys are seeing the same thing I am. My interpretation of this scene is that Brickell is glaring at Edison about something, while Rodriguez chews out Jones. When I click on Brickell a few moments later, this is the message log I see:

Brickell does a stupid trick for Edison. Edison exclaims excitedly. Brickell asks Edison to hold them. Edison opens their arms to Brickell. Edison defies Brickell. Brickell steps towards Edison, threateningly.

Looks like things were going okay until we caught them, when Edison hurt Brickell's feelings, so Brickell showed her disapproval. This may not be a completely logical interaction, but hey, these AIs are like 5 seconds old each. Plus, they have a total interaction vocabulary of maybe 7 items plus sleeping. They need some development :)

Focusing on the UI, though, this might be a workable solution. I'll probably try to add some generic animations for broad classes of interaction (e.g. talking, shouting, prone, violence, etc.), and see if the icons enhance the animations or if they get in each other's way. I may also consider color-coding the icons so blue is neutral, and red is shouting, or something similar, so a sudden outburst will catch the player's attention.

Going to need a lot of testing and tweaking, I'm sure. But not a bad start!

AI Interaction Icons

Hey Folks! I was looking into AI interaction icons again today. I started working on some icon speech bubbles, and they were working out alright until I ran into some of the more action-y/gesture-y interactions:


How do you show "throws hands up" with a word balloon?

Certain non-verbal/non-thought interactions just didn't seem to be covered by the above. And when I reached out to folks for ideas, Matthew Glidden reminded me that I kinda already did this:

Like, I literally made a whole library of verbal/non-verbal action icons:

Whoops. I guess I'm the typical "reinvents the wheel" dev.

Armed with a newfound trove of icons, I think I'll get to work on porting some of these over. There should be more than enough to work from to cover the interactions I have so far. And hopefully, when one of these appears over an AI's head, the icon is a nice, instantly-recognizable summary of the interaction.

The question is, in a room full of a half-dozen people (i.e. the crew), can the eyes follow this without working too hard? We shall see!

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

Whipping AI Into Shape

Hey Folks! More good news: I continued to do game development today! It's crazy that this is something to get excited about, but it's been so long since I've had time to focus on my job instead of things like banking, insurance, and other general running-around. It's almost like things are getting back to normal!

Focus was still on AI today, as I fixed-up some of the rough features added yesterday. There was an infinite loop when the game tried to clear the message log if a user clicked a different AI at the wrong time, so that was first order of business. I also added some code to allow AI to update the message log in real-time, so they could pump messages to it and the user could read them as-it-happens. (Previously, the log would only show messages from before the AI was highlighted until the user highlighted the AI again.)

More interestingly, I added code to include both parties in a conversation to the message log. Now, when one AI talks to another, the message log recaps both at the same time:

IMAGE(http://bluebottlegames.com/img/screenshots/screenshot-2016-04-21.jpg)

Bedford's big surprise.

Now it's starting to look like a real conversation or other interaction! There are still a lot of repeats, as AI only has a limited vocab right now. Basically, one interaction type to choose from for each personal need. I'm hoping that adding a few other options per need will flesh things out a bit, not to mention add more of a range of responses.

With this all in place, I'm starting to reach a point where I need to "play" the game to see if it's working. This will mean the aforementioned additional data for the AI to work with, but also one more thing: word bubbles.

Being able to see the details of the clicked AI's conversation as it happens is great, but I can't keep up with a crew of 7 all doing this at once. Players will similarly not want to have to constantly click around on AIs to make sure they're not getting in trouble. (Or indeed, even to be entertained by their antics.)

As a first stab at solving this, I'm going to try adding word bubbles above an AI when it's interacting with another AI. This way, the player can see which AIs are engaged in activities at any point in time. And I may even make "themed" word bubbles, so the player can see not only the presence of an interaction, but the nature of it. E.g. talking, shouting, thinking, etc. Or perhaps I can even have icons for specific needs like achievement, security, and intimacy.

All of this should hopefully make it more of a thing to watch, and take out a lot of the microclicking. Users can focus on what interests them, or issues that need attention.

More on that later, though. For now, time to make some dinner. See you tomorrow!

AI Walk, Use, Wait

Hey Folks! Today was a much more productive day, as I was able to spend most of it working on code. And so, I focused on making the AI and its feedback UI better.

The first thing I did was to shore-up the dialogue UI a bit more for better debug output. I added some activity timer info to it so I could see the countdown as an AI was acting on something. And after a bit of watching and stepping through code, it turned out there were a handful of bugs in there that made the AI behave a bit strangely.

First of all, there was a bug that caused an AI to clear it's own queue if it walked to a target, instead of doing the next action in the queue. Normally, the AI would tell the target to stop it's current action (waiting, since it was an action's target) when it arrived. But in the case of walking, the actor and target are the same AI, so it told itself to stop doing the next action.

Once that was fixed, AI behaved a bit more predictably, and the next bug came more easily. I was able to fix an issue that caused the animator to get stuck walking/using when it should revert to idle. Now, the AI would play a walking animation as it approached the target, then switch to "use" animation when it got there, and finally, "idle" when it finished.

After the above, I decided to also start working on migrating the message log data from the scene into each AI. This way, the messages would be recorded on each AI in case the user (or in my case, developer) wanted to check the history. The scene version would only show messages if the AI said them while selected, resulting in data being missed by the user.

And to go hand-in-hand with this, I also changed the message log UI to appear as soon as an AI was clicked, and to fill it with the AI's message log. Now, the user can click around to see what each AI has been up to recently.

It still needs some work, both in terms of bug fixes and refinement. But this is a big step forward in peeking "behind the curtain" on these AIs, and being able to test them in a more macroscopic way. I.e. "are they behaving like crew should?"

I think that last series of bugs had me in a rut, and it feels liberating to be past those now. Hopefully, this is a sign of more progress to come!

Have a good night, all!

Debug UI, and Art Style

Hey Folks! Sorry for yet another late news post. It was another one of those days of running errands to get family established here. Today we opened no less than 5 accounts! And the scary thing is we still have a few left to go. Health insurance is the next big one, and we are not looking forward to picking apart that knot of confusion.

The work I did manage to finish was one part debugging UI, and one part art discussion.

The debugging UI is a way for me to monitor an AI's stats in realtime, to compare them to the AI's behavior. I want to make sure AIs are seeking out ways to fulfill their needs in logical ways. And hopefully, that will lead to some interesting AI interactions and strategy.

Right now, I've got the UI showing the AI's current list of priorities (conditions it needs to address), as well as the interactions in its queue. Each interaction also lists the target AI or item, so I can see where the AI plans to perform the interaction. Finally, I can also see the AI's current animation state, which is a value that controls which animation should be played next.

Upon my first few tests, it was information overload. But I think I can probably focus on individual data while checking the AI movements and look for discrepancies. One thing I'm already noticing is that a queue can go from 2 items to 0 items in a flash, even though each one should take some time to complete. I'll have to look into that next, maybe.

On the art side, I've been chatting a bit more with the artist about graphics styles. The other day, he sent me this tantalizing animation:

IMAGE(http://bluebottlegames.com/img/screenshots/screenshot-2016-04-19.gif)

I could be very okay with this :)

What you're looking at is his sample art applied to some walls and floor, as well as his modified crew rig. The crew rig is a lot like the one we've seen before, just with some "X" shaped cross-sections to give the illusion of thickness at different angles. And the walls are just 2-sided sprites with a top sprite.

Now, let me be clear. This 2.5D style is something I like a lot. Many of my favorite games are some variation of this isometric-like pixel art.

However, the thing that worries me is that this may seriously inflate the complexity of each art asset. Those walls now require 3 sprites per segment, instead of top-down's single sprite. And for something like a chair, it might require up to 5 sprites.

What's more, a chair-shaped object wouldn't nicely fit a cube mesh, since the chair is more L-shaped. Seeing the chair at any angle that showed any two adjacent sides (e.g. front and left, or rear and left) would look wrong if they were just sprites painted on a cube. The edges wouldn't line up. Here's a simpler example:

IMAGE(http://bluebottlegames.com/img/screenshots/screenshot-2015-12-03a.jpg)

Trying to show a non-cube shape using sprites on a cube.

Basically, there are no sprites (a.k.a. textures) that could be applied to the sides of this cube to make it look correct from all angles. We'd need a 3D mesh to approximate this shape so it would look correct from a non-orthogonal direction. And if we're using 3D models, well, then we need separate meshes and potentially complex texture maps. Starting to get more expensive to make, and out of reach for non-professional modders.

I could me missing something, of course. Maybe there's an example of this already out there. And the goal is certainly worth attaining. But I don't want to start down this path only to discover it's too expensive to build (and too hard for modders to use).

It's a dilemma. And maybe I'll let this stew on the back burner for a few days...

Crew Debugging

Hey Folks! Hope everyone had a good weekend. We ventured out into the city for an indies meetup yesterday, and met some really nice people! Let me tell you, it is so nice being in a place with other game professionals. I forgot what talking shop felt like after 4 years in the woods :)

Today, I turned my attention towards the crew interactions. I've been having a bit of trouble telling what's going on when my crew interact with things and each other, and I finally decided to start working on a UI to show feedback on their current status.

So far, this meant repurposing the dialogue window at the bottom of Crew Sim mode so that it was a rolling message log, like in NEO Scavenger. Now, it'll show the portrait for the current selected AI, and any messages that were triggered while selected. It doesn't clear when selecting a new AI, so the message log just grows and grows, with different AIs' messages listed in there.

I'll probably want to adjust this so it only shows the current AI's messages, and this might mean storing a message log on each AI. This would also allow me to see not only current messages, but to dig into the past a bit.

I'd also like to add some AI queue info, and maybe some stat bars or other feedback to help me debug. And I suspect a lot of this could find its way into the final game for user info.

It was a really boring day of work, though. UI is not fun, and even Unity's fancy UI system has some hurdles to figure out. Plus, it was like the hottest day ever today. (Literally, this may have been a record high for April.) And working in the attic takes its toll.

Anyway, I'll be continuing on this tomorrow. And if I can get it such that AI are more interesting to watch, maybe I'll post some animations or images. And if not, maybe I'll sprinkle some more inspirational mockups from the artist :)

Anyway, hope everyone has a good night!

New Artist Mockup!

Hey Folks! Running a bit late today with the news, so I apologize for the brevity. But to make up for it, I'm including a mockup from the new artist I've contracted to help me with defining the game visuals:

IMAGE(http://bluebottlegames.com/img/screenshots/screenshot-2016-04-14.png)

All aboard the SS Gritty Interior!

I've asked him to start thinking about how the visual style of the game could look, and this is one of his first mockups/concepts. I think he's off to a stellar start, personally. It has a few areas that are dark or difficult to read, but I really like the surface texture variation, and extra detail on things like the control station and floors. The character is a big step forward, too, particularly if we can make different crew members visually distinct.

He seems super motivated by the project, too, so I think we're fueling each other's progress. Looking forward to seeing what we come up with!

And hopefully, this morsel will tide you over for the weekend, as I have to run. Have a good one, all, and see you Monday!

Animation Fixes, and NEO Scavenger Mobile Dev

Hey Folks! Been working mainly on animation timing in the prototype today, and starting discussions with interested mobile devs for the NEO Scavenger mobile port.

The animation issues are being resolved, albeit slowly. I was able to improve the animation system to be a bit more accurate. Instead of triggering animation states when things are added to the queue, the animation state is now updated per-frame, and the animation controller only has to do anything if the value changes. In theory, this means the animation controller is just always playing whatever is at the front of the AI's queue.

In practice, however, this seems to be updating somewhat randomly. Or more accurately, the queue updates seem to be erratic. The character's queue seems to change out of sync with things like pathfinding, and I need to figure out why.

On the mobile side, I've been receiving some proposals from interested devs, and I'm now in the process of looking them over. There are some promising candidates out there, and I'm optimistic I'll find the right fit to bring this beast to market.

Hopefully, I'll have more to show for it (both of these, actually) in the near future. See you tomorrow!

Back To Work: Animations, and Outsourcing

After several days of life interrupting, it was good to be back in a code editor and Unity again. I still needed most of my morning to catch up on emails that had piled-up, but I finally dug back into the crew animations today.

First of all, I figured out why they were playing for a split second before returning to idle state. I was trying to directly play the animation on the crew instead of changing the crew's animator state. Since Unity has an Animator class that handles animation transitions based on state variables, I needed to manipulate those instead of forcing it to play an animation.

Once I had that done, my crew were striding to and fro around the ship. Endlessly.

The next step will be making sure the animations stop when the characters do, and for that I'll need to unset the animation state once the interaction is complete. And eventually, I'm going to need to figure out why everything is triggering too late (i.e. the crew starts moving and the animation starts seconds later).

In other news, some of you may have seen my recent Tweet:

As mentioned elsewhere, Steve won't be able to finish porting NEO Scavenger to mobile due to scheduling conflicts. So I'm now looking into someone to whom I can hand-off the project. I've kind of got a short list in mind already, but there may be devs out there I haven't considered yet. If this is you, or someone you know, get in touch!

Finally, I've also been talking with another dev/artist about working on the visual style for this space prototype. We're in the final stages of contract negotiations now, and I should be able to post more soon.

It feels good to be making progress on actual game stuff again!

Hope everyone has a good night, and see you tomorrow!

Ups and Downs Cont'd

Ugh, I am bagged. The saga of getting life straightened out here continues today, and it took pretty much everything we could muster. But the good news is that I think we were able to get a lot off our plates.

The bad news? I basically got nothing game-related done today. A few emails about stuff, but I pretty much had to write off my whole day dealing with banks, government, or salespeople.

And now I'm empty of anything resembling a soul. I think it's time for maybe a beer, and not thinking about anything important for the next 14 hours.

Ups and Downs

Hey folks! Hope everyone had a good weekend. Ours was busy, as usual. And back at the office, I was in for a bit of a wild ride with a few bumps.

First, the downs:

Chase bank totally pulled the rug from under our feet. Our account became "restricted" last Thursday, and we're basically at their mercy if we need to pay for anything. Our card is on hold, and we have to visit them in person to get cash until they sort out the issue. In short, they didn't like a document we submitted to add Rochelle to my account, and for some reason decided to freeze access to the whole thing. It's been that way since Friday, and they're telling us they won't be able to review the new docs until tomorrow.

I've been a customer there for 16 years, and recently poured all our savings back into an account there upon returning to the US from Canada. We were greeted with a smile and a handshake last week, and now I'm feeling a bit like a refugee or criminal. And their whole "the other department won't look at it until next business day" line is getting old. Suffice to say, they've lost a customer. We'll be looking for a bank that feels a bit more like people work there instead of robots.

Also, my NEO Scavenger mobile dev asked to terminate our contract today. His schedule hasn't allowed him to make much progress lately, and he didn't see that changing soon. I think it's the right call, and we're parting amicably. But it's a bummer, as the project was already running late. I'll be on the lookout for alternatives, as I still want to move forward with a mobile edition. But this was a pretty major setback.

Fortunately, there were some ups!

First, I met with some great indies downtown at the Indies Workshop:

IMAGE(https://pbs.twimg.com/media/CfyCxNGVAAA6L3F.jpg:large)

Me looking as diligent as possible.

I toured the space, met some really great folks, talked shop over lunch, and even had delicious cake. (Thanks, Jenn!) Definitely a place I want to get back to once things settle down here a bit.

Also, my Washington state driver's license came in! I'm a real person now!

Also also, the fatally dangerous and/or disfiguring passenger airbag in our old Lancer was fixed! I guess a recall went out recently, and we've been driving around in a shrapnel bomb chamber for 10 years. Who knew? Props to Mitsubishi America for honoring the Mitsubishi Canada recall, free of charge. Nice when a company treats customers well!

And lastly, I got a modicum of space game prototype work done today. Namely, a contract for a potential artist to help me make it look snazzier. More to come on that soon... :)

Quite the day! Hopefully, tomorrow runs a bit smoother. It's a low bar to surpass, after all. Have a good one, everybody!

Crew Rigs With Normal Maps

Hey Folks! Today I managed to get some non-administrative work done. Yeah! I mocked-up some quick-n-dirty normal maps for my rigged crew sprite, and hooked them up to the materials to see how they looked under lit conditions. Here's how they turned out:

IMAGE(http://bluebottlegames.com/img/screenshots/screenshot-2016-04-08.png)

They're a lazy crew. Doomed, I tell you.

They won't win any art awards or anything, but as a proof of concept, I think these rigs may work. With more time spent making the artwork, I think it could look pretty solid. Keep in mind that they're just a collection of flat sprites attached to animated bones:

IMAGE(http://i.giphy.com/5J9qpHX6Nr1OE.gif)

and that these normal maps are literally whatever I could slap together in PhotoShop with about 5 minutes effort each. More detailed efforts, or using tools such as SpriteIlluminator could take the art a lot further.

And in some cases, modders might be able to just reuse existing normal maps and repaint the colors for different outfits. So I think we're in good shape.

The next thing I want to sort out is getting the crew to play animations based on their current interaction. Right now, it kinda works, but the anims play too late, and for too short a time (like a split-second). And walking to a goal needs some special case handlers written.

Anyway, some nice (and visible) progress! Hopefully, more of that to come. Have a good weekend, all!

NEO Scavenger in Build Your Own Survival Humble Bundle!

Good news, everyone! NEO Scavenger debuts on the Humble Store as part of their Build Your Own Survival Bundle!

IMAGE(http://bluebottlegames.com/img/screenshots/screenshot-2016-04-07.jpg)

NEO Scavenger is currently -55% on the store. But if you add more titles to your Survival Bundle, you can get up to 70% off the full price! So if your survival collection was feeling a bit...emaciated, head on over, because time is running out!

Design Doc, Style Guide, Rendering Fix

Hey Folks! Didn't spend a lot of time in the code editor today, except for a rendering fix. I did, however, spend some time on the design doc and style guide for the game.

The rendering fix was to finally rectify the differences seen in Unity's editor vs. the binary. It turns out my ship items and crew were using Fade and/or Transparent shaders, which don't really cast shadows the way I wanted. Cutout, on the other hand, produces nice shadows based on the sprite's alpha channel. This is actually how I had things originally, but the one missing piece was the shader's alpha cutoff value. For some reason, the value for this cutoff seemed to work in the editor but not the binary. Adjusting it caused shadows to behave more consistently across the two. Which is good!

Except for one thing: now the normal maps aren't rendering. I'm not sure what happened here, but it could be something minor. At least it's consistent across both builds :)

The document work I did today was to bring the game's design doc up-to-date. It's been a while since I wrote it, and it's always good to revisit the doc to see if one is still on target. And in this case, I am. Mostly.

I did notice a few things in the doc which are no longer true. For one thing, my thoughts on soundtrack have changed a bit in favor of having a custom one done (instead of licensing existing work, or playing the user's supplied playlist). Also, I made some comments about who the player controls in the crew which have me thinking. I still think I'd like to try out controlling the whole crew vs. only the captain before I decide.

Finally, I also worked on a new section that defined the visual style of the game. Things like the art style, tone, theme, and some specifications like resolution. These can still change, of course. (As can anything in the doc.) But I'm getting a better picture in my head of what I want, so it makes sense to document them.

The rest of the day was more boring tax and admin type stuff, so I won't get into that. Still more on that front, unfortunately, so work will be slower in the meantime. But this still beats my productivity from a few weeks ago!

Anyway, have a good night, all. And see you tomorrow!

Rig Rendering

Today was largely spent on a rendering issue, but I did eventually get a rigged crew member running around.

The rendering issue has to do with Unity's editor vs. the generated binary of the game. For some reason, the editor renders my PNG sprites without issue, but the generated binary does not. I get missing alpha channels in the binary, so everything looks wrong.

After many hours of experimenting (including an errant quest to "fix" PNGs that weren't broken), I eventually narrowed it down to the shader that the items/crew use. The items and crew use a "cutout" shader which basically makes each pixel either 100% opaque or transparent, without anyything in between. This is as opposed to "fade" or "transparent," which works more like you'd expect, with gradual transparency values.

So far, if I choose "fade" or "transparent," I end up with either the opaque parts of the image appearing translucent, or the transparent parts of the image appearing translucent. I'm not sure why this is.

"Cutout," on the other hand, seems to look okay in the editor, but has no transparency in the binary. And even more confusing, there are exceptions where it looks okay in the binary. It's possible I'm assigning textures via script the wrong way, or else the scripted material I'm adding to each is using the wrong cutoff value for cutout. Or maybe even a redundant material on the mesh? (E.g. MeshRenderer plus a SpriteRenderer?) I need to figure this out.

Otherwise, I'm happy to report that my animated (i.e. wobbling) crew can move around, and I think it'll be easy enough to trigger custom animations per interaction type via code! Should go a long way towards improving the visuals of the crew sim. Hopefully, we're getting close!

Crew Rig Work, and Administrivia

Hey Folks! Hope everyone had a good weekend. Ours was productive, as we continued our epic unpacking extravaganza. Yard work, unpacking boxes, finding storage for endless things, and buying emergency furniture like a living room lamp and doormats. We did get a nice afternoon in the park, though, so not all work.

Today, I had to sacrifice much of my working time to the tax gods as I finished up some account reporting and updated mailing addresses. Exciting, I know!

However, I did also get a bit more work done on the crew animation rig. I figured out why my body parts weren't rendering, and it had to do with hierarchy paths in Unity. For reference:

IMAGE(http://bluebottlegames.com/img/screenshots/screenshot-2016-04-04.png)

Literally, a pile of bones.

This is a peek at the Unity Editor as I'm setting up the crew rig. It's a series of GameObjects setup in a hierarchy matching a rough humanoid shape, with bone icons for each part that moves. I've also taken some hints from around the web to make a sprites folder under each bone. And in this case, my sprites are actual mesh renderers (cube or quad) since they're likely going to use the normal-mapped, lit shader.

Currently, all the parts are now rendering with correct sprites attached, but they are unlit and scaled out of whack. My next job is to get them scaled and offset correctly within the hierarchy, and maybe get some rough normal maps on there to see how they look when lit.

Despite the weird scaling, it was cool seeing the jumble of parts animate around the ship, though!

That's all for tonight. See you tomorrow!

Pages