Since the last update I’ve been focused mostly on creating an avatar editor. I figure it’s looking pretty good for now, and wanted to post a quick update about it. UMA (see previous blog post for more about UMA) has been everything I’d hoped for, and lets me customize the character avatar through code. The avatar editor in Arcanoria now supports male/female avatars, including 5 races with distinctive gender and racial characteristics. The races are: Human, Elf, Norse, Dwarf, and Gnome. Here are some of the differences, at a high level:
Humans are average height and build.
Elves are taller and thinner than Humans. Elves have no facial hair, and have pointed ears.
Norse are between Elves and Humans in height, but with broader build.
Dwarves are a little shorter than Humans, and broader, especially in the arms.
Gnomes are shorter than Dwarves, with no facial hair, and pointed ears.
Female characters are slightly shorter than male characters.
Here’s a quick screenshot for now. I hope to post a video soon that will show the avatar editor in more detail.
As we develop our MMORPG we’re continually identifying key problem areas that need resolution to enable us reach our long-term goal of actually publishing our game. Things like player-driven avatar customization, the need for a solid bug/issue tracking system, an ongoing desire to make the 3D world look fantastic, a conversation manager framework, and, of course, work environment enhancements to keep me sane through all this!
Solutions present themselves at their own pace, even if we’re not entirely ready for them. Such has been the case lately, as our friends at the Unity Asset Store have put some great packages on sale at ridiculous prices that couldn’t be refused. So we had to jump on a few things before we’re actively developing them.
To that end, here are the Arcanoria buzzwords for this week:
UMA – Unity Multipurpose Avatar is a package that will replace our placeholder pre-customized character avatars. This is essential for an MMORPG, since character customization is a core gameplay feature. UMA is free, believe it or not, having been sponsored by Unity Technologies. UT (and I) believe UMA is the way of the future for character avatar customization. It’s easily scriptable and very well written and robust. I’m very excited about UMA.
3D-coat – 3D-coat is a voxel sculpting and 3D texture painting tool. It’s similar to ZBrush, but about half the price ($379 vs. $799), and probably more actively in development. It will be a vital tool in our arsenal as we endeavor to customize our assets, especially the new UMA avatars above.
FogBugz – I was looking for a bug/issue tracker that’s better than a text file on my Windows desktop, and considered Trac (which I’ve used before). In the end, I decided it was too clunky, especially since we’re no longer using Subversion for source code control. After some googling, I came up with a few alternatives including Redmine and JIRA, but in the end decided on FogBugz. FogBugz maintains my whole project on their servers (which are plenty fast for me), including off-site source code backups via their Kiln service, as well as an integrated hosted Wiki, Forum, and an issue tracker that is linked directly to my Mercurial version control check-ins. The kicker is that it’s 100% FREE for teams of 1 or 2 people (of which I’m the former!). I can only begin to say how happy I’ve been so far with this service. FogBugz is awesome!
Skyshop – I’d heard of Skyshop before, but to be honest I really didn’t understand what it did until after I bought the package a few days ago. I just knew it included some excellent shaders that lots of folks were recommending. Since it was on sale for $65 (down from $130) I decided to give it a try, just to give the shaders a look. Wow was I blown away after I installed Skyshop. Now I understand all the hype about IBL (Image Based Lighting). In short, Skyshop lets you take an HDR panorama image and convert it into a skybox that further serves as a group of light probes that shed truly natural looking ambient lighting onto your scene objects. Bottom line – if you’re doing any kind of 3D project in Unity where realistic looking scene lighting is important, go get Skyshop right now.
Amplify Color – This is a color grading package that allows you to transfer your scene’s color profile to a running instance of Photoshop and adjust them, then send those colors (including your alterations in Photoshop) back to your scene camera in Unity. It was on 50% off sale, so this is one of those things I decided to jump on, even though I’m not ready for it yet. I think it will be important in helping to make our scenes look better.
Dialoguer – Dialoguer is “a dialogue creation tool that lets you visually create branched and dynamic dialogue for your game”. In other words, it’s a visual interface to help you do all the in-editor data input for your scripted conversations, including variables and branching, nodes, and under-the-hood XML serialization. It seems to be pretty well written, and I’m looking forward to using it in my Arcanoria pipeline to help me write NPC interactions like quests and shops. If Dialoguer hadn’t come along I’d have had to create my own conversation manager framework, so I’m lucky it did! One last thing: apparently there have been some issues with getting it released on the Asset Store so the author is giving Dialoguer away for free for a limited time, but hurry!
Bins – Bins is a taskbar organizer for Windows. If you’re like me, you’ve got lots of things pinned to your Windows 7 taskbar. Bins allows you to group them into folders, just like you can on your mobile Android or iOS device. Just drag an application icon on top of another one and a folder is created, taking up less space on your taskbar. The sanity I will regain by having some room again on my taskbar makes this $4.99 well spent.
Oh, didn’t I mention? Sorry about that! Yeah, the old code has been scrapped and replaced with… newer, shorter, (hopefully) more efficient code, for both client and server. Gotta admit I’m learning as I go along, so this whole thing is an evolving process. And I’ve been really terrible about blogging. I can’t possibly catch you all up with everything that’s happened, but here are some recent highlights:
Took a bit of a detour into some Android app development. It was a good learning experience! Even though Arcanoria is a PC standalone project.
Updates to plugins NGUI, Xffect, uLink, not to mention Unity.
Added log4net and UnityVS for easier development debugging. They are both helping quite a bit.
Communications encryption for security, using Public/Private key methods.
Continued commits to Mercurial, which is working great.
Lots of UI development, including replacing all fonts with legitimately free-to-use ones (mostly from Kingthings).
Since the “Tork” font (which isn’t free for commercial deployment) was in the old Arcanoria logo, we’ve created a new one (using a free font), as you can see below on the login screen.
Got the “Loading room” and login sequence mostly working, although the avatars themselves are still missing (and will require some thought on implementation).
At the end of our last update we were getting ready to deploy our game server software (zone app, lobby app, and various supporting services, including Apache, PostgreSQL, Erlang, and uZone) to a Windows 2008 server instance on Amazon Web Services (AWS). After a bit of tug-o-war pitting man (me) vs. machine (Amazon’s server cloud), I finally triumphed and the server successfully served up our current development version of Arcanoria (such as it is). Score one for the good guys.
Proof of concept now being in the bank, I started making calculations as to how much this game would take to roll out for testing later this year. Let’s just say the results were discouraging. It was easily into multiple thousands of dollars for a year of hosting on what I think is a minimal configuration for what we’ll need. However, that was for a Windows server. For some reason, Linux servers are much cheaper to deploy on AWS. As in, about 1/3 the price. Fortunately, the much anticipated Unity 4.2 release did finally appear, with promises of “headless Linux server” support.
Bottom line is that there was another mud wrestling match between the hardware and I, and I won again. The result this time was that we now have an Ubuntu (Linux) server serving the game and related services successfully. What’s more, I’ve deployed it to our in-house server (Darwin, which runs WHS 2011), via the superb Oracle VirtualBox software, which is free for personal use.
In related news, a helpful game developer from the MuchDifferent forums advised me that Amazon Web Services are expensive for what you get, as compared with other services, such as https://www.digitalocean.com/ . I was able to create an account there very cheaply, and their services seem much less pricy than AWS, when comparing similar virtual hardware allocations. I think when it comes time to deploy a public test server I am likely to go with Digital Ocean for our initial testing.
Looking forward, here’s some nice meaty items from our short-term to-do list:
integrate the newly updated Mecanim-based character controller (thanks Robin!), and give it dynamically customizable models and materials
create a new “zone 1″ which is a simple character loading area, the default place where players will go while downloading (if necessary) their actual location’s zone assets
export intern Nathan’s remake of our basic village scene and integrate it on our new Linux server as the new “zone 2″
Been busy busy busy lately, working with interns Nathan and Thomas, securing licenses for Mixamo’s All Access pass (all their characters and animations for 1 year), as well as committing to the MuchDifferent UnityPark Suite for networked game instances, and getting further into the deep end on network deployment of our client/server app.
For the last couple of months we’ve been deploying our game server and related applications to the nifty little cube on the table behind me, which goes by the name Darwin (that’s him, smiling for the camera in the photo on the right). Darwin runs Windows Home Server 2011 on my gigabit LAN. It also serves up our PostgreSQL database, acts as a remote Mercurial repository for our source code version control, and other functions which are obviously vital to national security, such as hosting my vast MP3 collection.
But now it seems that Darwin may not be the fittest to survive into the next stage of development, which involves online testing, and maybe even some public review of a pre-pre-pre-alpha version of our game client software for Arcanoria. I was shopping around for a low cost place to begin such testing when I discovered that Amazon Web Services (AWS) are offering limited EC2 server instances for 12 months for the low low cost of… FREE. That seemed to me like a good way to deploy for our initial (internal, but internet-based) testing.
So, for the last few days I’ve been poking around the AWS EC2 Management interface, creating various instances of Linux and Windows server machines, logging in, installing software, testing secure connectivity, etc. I’d really like to be able to deploy to Linux if possible, mostly because Linux instances are cheaper to rent, once we grow past the Free Tier service. I’ve also always had a soft spot for Unix based operating systems, having done some decades in the trenches doing admin and support of SunOS/Solaris, AIX, HPUX, and of course Linux boxes as an IT professional. Unix based systems just feel more like servers to me.
Anyway, I got PostgreSQL running (with our uploaded game data), and installed Erlang, but when I try to run our Arcanoria game application server, it aborts after a few seconds, and unfortunately my debugging options are limited. The scuttlebutt is that Unity 4.1.x still doesn’t quite work with Linux in non-graphical mode (i.e. as we need to run our server app). Supposedly Unity 4.2 will be coming out soon, and should support it fully, but time is money, so…
I’m now in the process of outfitting a new EC2 instance as a Windows 2008 server. Big fun! This should be a smoother process than the abortive Linux attempt, since I already have the server running in a very similar environment here on my LAN.
We’ve been really busy lately with game development. Unfortunately there’s not much to show right now! I’m hoping we will have some pretty pictures and maybe a video for our next update, hopefully within the next couple of weeks. I do have a list to share though:
server networking investigation - Been spending a huge amount of time on this, and we’ve pretty much decided on MuchDifferent‘s uLink and the UnityPark Suite. It’s awesome because we can build authoritative server apps right in Unity, and they are physics-aware, and can be deployed to remote server hardware. Since we need to host an authoritative server for our persistent world that pretty much eliminated any of the pervasive and generic “cloud server” solutions out there, although we did check out other packages, including Photon. Photon does also have a self-hosted server solution, but it would have required us to deal with physics outside of the Unity game engine. We love uLink’s ability to build server logic right in the Unity editor!
PostgreSQL database server - up and running, and integrated with Unity. We think Postgres is really important because it offers a very permissive MIT style license, unlike MySQL. Postgres will play a huge part in our server logic and data security. It will also be vital in the way we deploy all our creative content… dynamically.
programmed spawn points - We can now drop one of our spawn points into pretty much any demo scene and our code will automatically add a player character and camera into it, enabling first-person exploration, and eventual game play.
streaming runtime asset bundles - proof of concept successful – We created an asset bundle with a custom configured animated monster, and we’re able to stream (and cache) that asset from a URL on the web and place it into our game scene using code or a GUI button. This is how we’ll be deploying assets in the game world, allowing us to distribute a very thin client application that updates all the creative content dynamically as needed, at runtime.
lots of new assets! It seems like there are more and more quality asset producers out there in Unity-land. Some of our favorites are from Protofactor and xiaolianhuastudio .
new original cave dungeon area nearing completion - It will have goblins, rats, spiders, and maybe an ogre boss or two. It’s likely going to be one of the very first adventuring areas available to players upon our initial release later this year.
Been doing a lot recently in the new incarnation of Arcanoria, with a few odds and ends that I expect will add greatly to the end product. I’ll give you the quick drive-by tour, but there’s a lot to cover since my last update!
Mia – Mia is an action heroine that I purchased on the Unity store. She’s a pretty cool looking female player character I think. Currently she has pistols at her hips, but those will eventually be replaced with something more Arcanoria-esque, like daggers/swords or maybe a wizard staff. She’s also going to need a new costume. But she looks okay for testing right now.
Terrain Grass – Yes, we now have vegetation that sways nicely in the breeze, displaying on low-cpu billboards for extra green-ness. That was an ecology joke, in case you missed it!
Terrain painting with substances – Admittedly we did have substances previously on our terrain. But now it’s new and improved. I’ve figured out how to make them tile properly so it’s not quite as obvious that it’s a repeating texture. Okay, it’s still obvious, but it’s LESS obvious. I’ve also pretty extensively toured through the amazing “Substance Madness” database, and wow is there a lot of awesome stuff in there. I’ve also spent quite a bit of time learning about tweaking substances using their modifier panels, and experimenting with substances. No, not those kinds of substances. I mean the kind from Allegorithmic, which are procedural materials that I use in Unity. Anyway, the new tweaked out substances that I painted a bit on the terrain look pretty good, especially with the grassy vegetation I mentioned above.
You may also note the snazzy new minimap in the top right of the screen. It’s from a package I bought from the Unity Store called KGF Map System. So far it has been pretty easy to use, although there’s a few things I’ve yet to try.
We have a new custom (non-system) cursor working correctly. It’s a little hard to see, but it’s a little sword icon that I created (taking a snapshot out of blender while viewing a model of a broadsword). It’s just to the right of Mia’s head.
You may also have wondered what those Dance buttons are in the lower right part of the screen. Well, those are for making Mia do some Samba Dancing! We’ve been playing around with the fantastic new Mecanim animation system in Unity, and have successfully got Mia doing several dance steps, as well as walking/running forward and backward. Here’s a short video highlighting the new character and animations:
We also added some sparkly effects packages, but we will show them off in a future blog.
The upcoming Arcanoria online RPG continues to take shape. Arcanoria will have a server-based persistent world. I’m going to roll it out in stages, so as not to totally overwhelm myself. I’ve purchased quite a few assets on the Unity Asset Store and elsewhere, including models, editors and tools, visual FX, various code packages, and more. Integration of all these different assets into a cohesive game project is the real trick though, as anyone who’s done something like this before can attest. Shiny marketing videos make everything seem plug-and-play, but somehow it’s just never quite that simple.
I’m excited though, because I’m really looking forward to finally diving in and using a lot of the long archived RPG stuff we developed years back for the original Arcanoria MMORPG project. Stuff like character templates, archetype descriptions, skills and level progression charts, back stories, maps, names, quests, and more. It wasn’t all complete of course, and there’s still some gaps to fill in, but it’s going to be a great head start for the new (MUCH smaller) online Arcanoria RPG.
One more thing I want to mention is that I’ve updated the Music page here on this site, which now shows a sample of 12 of our original music pieceswhich might be suitable for various kinds of games. If there’s enough interest I may wind up putting together a package for sale on the Unity Asset Store, but for now I’m focused on making the Arcanoria game happen.
Sorry about the delay in this latest blog update! It’s been nearly two months since the last one. I’ve been busy getting sidetracked by World of Warcraft, family stuff, work stuff, some board gaming, a bit of music production, and truthfully, more WoW.
World of Warcraft is a great game. It’s 80% of what I’d like to see in my own online RPG. They do so many things right. Of course I’ll have my own character development system specifics, quests, combat, graphics, music, and the world won’t be as large (at first…), but behind the scenes Blizzard got an awful lot of things just right. I guess they can afford to considering all the money they have been making for so long! Playing WoW is so interesting to me that it consumed my game development passion and made me think about my characters first thing in the morning, even before breakfast.
I think that’s a sort of a key, at least for me. If something in my life motivates me so much that I get out of bed and immediately want to work on it, even before breakfast, then that’s a sure sign that I’m focused on that thing. In this case, WoW is a time vampire for me, so in the interest of doing more game development I canceled my WoW subscription last Sunday.
So, the good news is that I’ve been doing game development before breakfast all this past week. Here are a few bullets listing some of the things I’ve been working on since canceling WoW:
Re-acquaint myself with Unity – I dusted off Unity on Monday morning, updated it to the latest release, and started reviewing the projects I’d created in December. There were a few things that got me hung up at that point, including:
Finding/tweaking/creating a character controller suitable for my RPG-style games. Been waiting for RobinS’s Character System to get updated to use the new Mecanim animation technology available in Unity, but it’s still going to be “some months” unfortunately. :( This probably means I’ll have to roll my own, at least for now.
Ability to import multiple terrain objects into a scene, while maintaining the ability to use Substances instead of standard materials to paint the terrain. Substances are procedural materials (saves game memory) that add really nifty things like specularity maps in addition to the diffuse and normal maps that are available with standard materials. The developer of the Substance Terrain Tool (Jerc) has been slow to update the package to allow for multiple terrains, although it’s supposedly coming soon. In the meantime I am considering other strategies, including the possibility of limiting to one terrain per scene, bounded by mountains, oceans, fog and/or other visual barriers, and simply having players teleport from scene to scene at the edges. This is not optimal, however, as I’d like for players to be able to do things like fly from place to place in an apparently seamless world. Once the Substance Terrain Tool gets updated to allow for multiple terrains, then I can smoothly load adjacent terrains (and all their related assets) at runtime, and the whole concept of a “scene” goes away. This is what I’m aiming at in the longer term.
Music synth video tutorials on groove3.com, lots of them. Since I upgraded to Cakewalk Sonar X2 a few months back, they have been giving free bonuses to us loyal customers every couple months. The bonus for January/February is a 30-day subscription to groove3.com’s music production video tutorial library. I’ve done a whole series on FM8, plus parts of Massive, and Z3TA+2. All are awesome synths (which I use for my music), and now I know each of them a bit better than I did a week ago. I’ll be doing more of these tuts through the end of February, when my subscription expires. They can be a bit long winded at times, but I’ve done quite a bit of music production, and have created several pieces (using these synths) that are suitable for use in games, so this is probably time well spent.
Unity music packages initial review – I’ve downloaded and listened to all the free music asset packages that are currently available on the Unity Asset Store. That includes listening (mostly in full) to every track provided. Some of it is quite good! They will definitely be useful as stand-ins at the very least, and some may end up in my games. There’s a lot of variety available from several different artists/composers, including classical, electronic, rock, and more.
Rigged the old Ava character model – I created my first working character rig, after all these years. Since I don’t have 3DS Max to open the MAX source file, I had to use the 3DS file (which contains less information). I decided to import it using Blender. My intern Thomas and I then worked through a Blender tutorial and created a new skeletal rig, which we imported successfully into Unity’s new Mecanim animation system (after several abortive attempts). The rig isn’t perfect, however, and some of the animations are a little bit jumpy.
Bought some new stuff at the Unity Asset Store. Got a couple of cool looking visual effects packages, including one package that provides storm/weather effects and another package that does 50+ different magic spell effects. And in a pretty large purchase, I also picked up the Mixamo animation download license for 1 year (which cost $750). That means I can download any animations for free for a year. Sweet!
Well, enough blogging, time to get back to deving!