CyberGhost was begun on March 1st, 2014, as a project intended for the 10-day Cyberpunk Game Jam. Obviously we’re way past that now, but it’s still under daily active development. I’ve been busy updating Matrix City, and working on some backstory for the main quest line. I’ve also created an office scene for indoor “information gathering” runs. Here are some screenshots from the latest build. Let me know what you think!
I started out with an idea to make my own Massively Multi-player Online Role-Playing Game (MMORPG) back in January 2007, because I thought World of Warcraft was lots of fun and I wanted to learn how to create something similar myself.
After 7+ years of fiddling with 5 different game engines, several different programming languages, a few database engines, a handful of 3D modeling editors, audio production suites, network layers, GUI libraries, toolkits, APIs, SDKs, IDEs, and much more… I have an embarrassing statistic to share.
I’ve never released a single game.
The further into the future this condition extends, the more embarrassing it becomes for me. After all, why am I doing all this? I work on game development from 5am until midnight on MOST days, with short breaks for food and family, and an occasional nap, and then it’s back to work because something is percolating in my mind and it just can’t wait to get done.
No joke. I am working an average of 12-16 hours a DAY on game development.
That includes weekends too, which puts me into an 80+ hour work week. I have to admit I’ve not always been this dedicated in the last 7 years, but from time to time I have, including for the last several months.
You see, I’m desperate to get something done at this point. However, the project I’ve been working on for the longest time is the huge Arcanoria MMORPG project. Anyone will tell you it’s nothing short of crazy to expect to produce something like that without a 7+ figure budget and a team of 20-50 people. But here I am, doing it myself. And it’s taking a really long time! No surprise I guess.
But from time to time I start to lose self-confidence. What if all I can do is fiddle around with development tools? How do I know if my creative ideas are any good? Maybe my artistic style is terrible, or my music is unpleasant, or my stories are boring. Maybe my game systems aren’t engaging. Maybe my marketing efforts are insufficient or misdirected.
The only way to know for sure is to let the public decide. That means releasing games, and seeing what works and what doesn’t.
To that end (and on the advice of indie dev peers like Jason Smith and Fernando Ribeiro), I joined a game jam. Something that would be done in 10 days and then I could finally say I’d published something. I created CyberGhost (pre-alpha web player preview), for the Cyberpunk Game Jam, which is essentially a game development contest where people create a new game in a short period of time and submit them all for judging by their peers. There were 266 games submitted to the jam, including CyberGhost.
Unfortunately, however, CyberGhost isn’t even close to finished yet, even though the jam ended two weeks ago. I was too ambitious in my design and decided to create an RPG, which are apparently notoriously difficult to create quickly. Live and learn.
Anyway, I’m still working on CyberGhost. It’s getting closer to done. There are still many bugs, not to mention whole aspects of the game yet to develop, like character skills, combat, mini-games, more quests/stories, better level build out, etc.. But if I don’t finish something and release it, I’ll never know if I’m any good. So that’s what I’m working on.
Bottom line is this. I will finish CyberGhost and release it before doing anything else. Then I can really call myself a game developer.
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.