Tumgik
Text
Credit Where Credit Is Due
It has been 24 months - nearly to the day - since making my first dollar as a freelance game developer. During the course of that time I have worked well beyond full-time hours, assisted in the completion of several games and was even the sole developer of a children’s book app, but to this date have not received a credit. That's been a non-issue for me; credit is not what I got into this line of work for. That is not to say that I wouldn't have enjoyed seeing my name alongside the artist's names on said book, or that I wouldn't have harbored a sense of pride for being credited for designing the multiplayer framework for two currently released titles. I suppose that, in part, this familiarity with working without credit stems from working as a freelance web designer for almost a decade before making the switch to games; web design is a line of work in which credit is rarely sought or received and perhaps I had just become accustomed to this.
Fast forward to today and I will admittedly confess that, now that I am receiving my first credit for a project I played a fairly large role in bringing to life, I can say that I am grateful that up to this point the reward for my hard work has only existed in the form of gratitude expressed via e-mails and the pay I received for said work. This experience in working on Age of Gladiators II has been unlike any of my previous experiences in some pretty profound ways. Most important to me is that Damon and I have, at least as much as two people who have never met in person can, grown rather close during the course of development. We have discussed family, fatherhood (at least as it exists on my end), childhood, the loss of those most important to us, the role baseball has played in our lives, and whether it was ever or always done with intent or not, I think it is a safe to say that we have helped picked one another off the ground on a few occasions when life, or the pressure of this project, seemed daunting.
Within the next week or two I will write a post in which I focus more on the technical aspects of my experience as lead developer on this project, but when I woke this morning and considered doing so, the notion of 'credit' was resonating in my head much like a song might become an earworm. Because the overwhelming majority of my contribution to this project is just that: technical. The core design is all Damon, and the complexities and intricacies therein will likely be lost on most of its players at first, just as it was with me. The number of complex systems that he has taken and meshed together into a single, balanced experience with depth leaves me in awe. Nothing feels extraneous, out of place, or purely for the sake of 'filler'. Play through even a month of one season of this game and you will only begin to see how every decision you make, or even those you do not make, will affect gameplay for every single day to come.
During a play-through last weekend I found myself at a crossroads - something that happens quite often in this game. My best gladiator [by far] was injured and the AI boss with whom I had personally developed a vendetta was scheduled to do battle with me in two days time. My gladiator required over a weeks worth of time in the medical ward to ensure that he would not end up in the morgue. This wasn't like when I would feel a pang of sadness when my favorite soldier would suddenly be swarmed by aliens in XCom and die because, unlike in the XCom scenario, I could see the weight of my decision beforehand. The realization, and admittedly the touch of guilt I felt, for considering risking the well-being of the gladiator who could easily have been likened to my 'The Beast of Carthage' [for those of you who are Spartacus fans] was not at all lost on me. This type of scenario, and the regularity in which it occurs throughout even a single season, is why I will be playing this game for a long time; for both the heavy weighted decisions that arise from seeing what could result from my actions - or lack thereof - to those that blindside me as a result of not paying enough attention to the things that were going on before clicking the button to end my turn.
That is what makes this a great game: not the UI I helped program, not even the incredible work the 3D artist did on the models, but its core design, the credit of which rests solely with Damon. It is the same thing that makes chess a great game that will never go out of style: those moments in which you stare across the game board at your opponent, your hand holding the rook or bishop you so meticulously placed, afraid to let go and provide your opponent with an opportunity to react. For every season I have played there have been at least a handful of moments in which I went from leaning towards the screen with anticipation to thrusting myself against the back of my office chair disgusted with my decision to take such a big risk; for all the times I held a grudge against one the AI bosses in much the same way I have held a life-long one against the Yankees; for all the times I went to view my lost gladiators and regretted the move I had made; and for all the times I ashamedly reverted to my previous save point to avoid the repercussions of such foolish mistakes.
This is what makes a great game; not whether you had your app open more often than your friends so you could click your way to the top of a leaderboard; not whether you were quicker to pull the trigger or had a bit less latency than the guy on the other side of the country in an FPS; but games like this in which you are your own worst enemy, and actions - even inaction - matter. It combines the thrill of watching my beloved Bo Sox make their way through another season of baseball with the forethought and decision-making that makes me a lover of chess, and does so in a way in which, as you play through each season, you inadvertently become better and better at it without even being completely aware of the learning curve you are on. You will undoubtedly learn through failure, and that failure will undoubtedly make you want to play again and not make the same mistake, and that is the key to great replay value. This game isn't about 'can I click this button and dodge this attack' better than I did the previous 10 times. It is a learning experience that is doled out without hesitation. It is a game in which I have often found myself running through a mental list of to-do's, not in the sense of bugs that need to be fixed, but in the sense of 'have I done everything I need to do to ensure that in clicking to end my turn I will not regret having done so?'.
I am fairly certain that when Damon was kind enough to grant me permission to openly and publicly discuss my experience in working on Age of Gladiators II that this is nothing akin to what he had in mind. In fact, in getting to know him over the course of its development, I think it's safe to say that his modest personality will even be made slightly uncomfortable as a result of it. As I said several paragraphs ago, Damon and I discussed people who have held an important part in our lives during the course of our working together, and for me, that person was my grandfather: a man who  instilled in me a lot of the values I hold near and dear, one of which is to always give credit where credit is due. I am proud to be listed as the lead developer of this game, and I am even more proud that this is alongside my daughter, whom Damon was kind enough to credit for all the pre-weapon-and-violence playtesting she did alongside me.
I encourage you to buy a copy of this game, and not because it will make me feel that much more proud to have been a part of it [it will], and not just because Damon is unquestionably deserving of the support from the indie community [he is], but because this is a great game, through and through. I can say with relative certainty that any regret you feel after grabbing a copy will be reserved for those moments in which you, like me, risk your best gladiator for the sake of pride. You may regret boldly moving your melee fighter into the fray or forgetting to use your stim before clicking to end your turn, but I doubt you will regret the initial purchase. It is slated for release on August 3rd and I encourage you to add it to your wishlist as you take advantage of the sale Steam is currently having. And if you don't pick it up on release day, be sure to remember it the next time you are burnt out on your favorite FPS or MMO. It is a unique, engaging and fun experience that I have recently found difficult to explain to friends without having to reference 3 different existing games, each from a separate genre, all of which hold fond memories.
[Steam Store Page Link] http://store.steampowered.com/app/639300/Age_of_Gladiators_II/
0 notes
Text
An open letter to my daughter
I often write my 3 1/2 year-old daughter letters for when she is older. After a lot of back-and-forth, I decided to share this one.
Dear Zoey,
Yesterday, as a nation, we made history, albeit not in a way that any of us should be proud of. Today I was supposed to be able to look you in the eye and say with absolute certainty that if you wanted to be President of the United States one day, you could be. It is something that families all over the country tell their children and have been for as long as I can remember.
While I understand that you have almost 15 years of growing up to do before you will cast your first ballot, there are a few things I feel you should know before that time comes. They're going to tell you to get out and vote. They're going to use guilt, celebrities, commercials and peer pressure to accomplish this. Do not fall prey to these fallacies, as today it has - without question - been proven to be the falsehood that I always feared it was.
They'll tell you a lot of things, but what they won't tell you is how voter suppression, gerrymandering, and a broken electoral system will absolutely and unequivocally render your vote null. They won't try and explain how the first major-party female presidential nominee can win the majority of the popular vote but still lose the election to a racist, sexist man who has never held public office for a day of his life.
I am no fool, baby girl. I had no disillusions that Mrs. Clinton would fix this country's problems. I had no hope that she would ensure a fair minimum wage for citizens, a fair price for health care, or even that every child in this nation that we all claim to be so great would be given a fair opportunity to seek education beyond the public school system, which itself is shambles.  But she stood for something, at least to your father. She was the embodiment of one simple notion that I, as an American citizen, held near and dear to my heart: that we were making progress; that we were finally stepping out of the stone-age and, although the trip would be long and arduous, we were moving forward. That we were progressing towards being a country that IS what it claims to be: a nation in which we all have a fair chance to achieve the dream that has been dangled in front of us since childhood like a carrot on a stick.
I write this with a heavy heart, not because of who was chosen to be our next President, but because this election period has exposed this country for what it really is: the national equivalent of an actor who touted and fretted their act upon the stage for a single show and has ridden on the coattails of their sole, self-serving monologue that spouted ideas it has never, and likely never will, stand for.
I want you to know that regardless of your choices in life, I will always love you whole-heartedly. Whether, as an adult, you find love in the arms of someone who shares your gender, or whether you decide to change yours, that regardless of your reasons, I will love you as much as I do today. That if you find someone who provides you with the happiness that your mother once did me, they and their loved ones will be welcome in this home and treated with love and respect regardless of their race, color or creed. That I understand and respect that they, too, were created out of two people's love for each other, that they too are members of a family which love them for who they are, and that I will be grateful to those who have been gracious enough to invite you to join in  whatever holidays they choose to celebrate. This country that you and I were both born into - this country that claims to be a melting pot of the world; this country that uses celebrities to guilt its citizens into voting while suppressing the voices of those we claim to embrace; this country that has proven time and time again that it is nothing compared to the facade it so arrogantly displays to other nations - is nothing akin to what I was raised to believe.
Those sworn to protect us murder unarmed, innocent civilians in the streets and claim self-defense. Those sworn to uphold justice fill privately-run, for-profit prisons in which the disenfranchised are succumbed to free labor and have the greatest gift that this country has to offer robbed from them: their freedom. All under the guise of a drug war that has not only failed to provide us with any relief, but has exacerbated the problem in every way possible.
You can be a leader. You can earn equal pay. You can love whoever you choose, regardless of whether they are male or female, Jewish or Muslim, dark or light-skinned. And perhaps, most importantly, your vote does matter; just not here. Here, they would have you believe you must love a white male to somehow protect an institution of marriage that is so flawed that it fails more than half of the time. Here, they will force Christmas down your throat in an effort to cram religious beliefs into your families home, and you will likely be looked at as an outsider should you decide to celebrate in any other way. Here, they will tell you that brave young men and women are dying to protect your freedoms while they take those freedoms away from minorities and the VA spends millions of dollars on art while leaving veterans to suffer from PTSD without help.
All I ask of you is to not fill your heart with hate, but with hope. To not point the finger, but to offer a helping hand to someone in need. To not sit and cry about how all feels lost, but to find it in yourself to fight for what you know deep down is just. Violence has never yielded peace, it only breeds more violence. Hate has never solved a dispute, but only produced more hatred.
You are but one 3-year old girl in a world of billions of people, but I have faith in you. I know in my heart of hearts that if I raise you with an open heart, an open mind, and show you what this country could be if we merely crossed the arbitrary lines that divide us and became the nation that we have always claimed to be, you will see us not for who we are now, but for who we could be in the future: one nation, under whichever God we choose, whose foundation rests on the shoulders of life, liberty, and the pursuit of happiness, whether that happiness is found in the arms of a man or woman, Latino or African-American, Republican or Democrat.
I will not wave this nation's flag nor stand proudly during its anthem until I am assured that whatever God you pray to, whatever person you choose to love, or whoever you grow up to be, is protected, unquestionably, by the Constitution that we all claim to love while ignoring its every word. This document, which should be the basis for all of our actions, does not have a footnote specifying Christianity, White or Male. It is, and should be interpreted as, all-encompassing. Read it, memorize its opening passage, carry it with you and spout its contents to anyone who seeks to suppress the voice of those who are merely exercising their freedom to choose. It was not written in haste, it does not contain caveats; it is what it is. Hang on its every word, embrace its prose, marvel at its ideals and defend its intent for everyone.
Today we are all cowards, we are all racists, and we are all bigots. There are those who would be quick to argue that they themselves are no such thing, and be that as it may, one simple, inarguable truth exists: we are one people, we are one nation, and we all are responsible in our way, be it through inaction or ignorance, apathy or complacency. May we find it in ourselves to take a long look in the mirror and finally be able to see past gender, skin color, faith and all else that divides us. I only hope we do so before we corrupt your generation as well.
We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.    -Source: The National Archives, https://www.archives.gov/
0 notes
Text
The Thing That Gets Us To The Thing
I love making games. I find it pretty disheartening that for the majority of my life, most of those closest to me have viewed this as childish, as though I was a man-child who never really grew up from adolescence. I suppose, in a twisted way, they are correct: granted, I always enjoyed escaping into a far-off land via the keyboard and mouse as a child, but my passion always brought me to level editors, mods and programming. Warcraft II, which stands to this day as my all-time favorite, had a great campaign for both races, and after completing each several times through I quickly found that the challenge of creating clever and unique multi-player maps trumped even that. The same was true for Duke Nukem 3D, although my fondness for the game itself was far from that of Blizzard’s RTS, the level editor was a whole new ball game. To this day, one of my proudest accomplishments in game development is with my recreation of Tony Montana’s mansion in ‘Scarface’. Bear in mind that at this time, Grand Theft Auto was a top-down 2D game and I was running a 50 foot phone cable up the stairs to the nearest phone jack to browse the internet. I am of the free AOL Online CD era, and while that could be considered nothing to be proud of by today’s standards, I wear the badge willingly and without hesitation.
My grandfather was, without a doubt, the biggest influence in my younger life and he always supported me, regardless of what my ambitions were at the time. I worked a summer mowing a massive field by myself to be able to purchase my first 486DX66 and borrowed a QBASIC book from my father, who paid his bills by programming robots that produced NERF footballs. I lugged my hefty computer and its accompanying CRT monitor to my grandfathers house to show my him my latest ambition: programming games. We were exiled to the hallway due to the fact that my grandmother would never have allowed such a useless hunk of metal on her immaculate kitchen table, and it was there I, at the age of 11, was finally able to give back to this jolly, big-bellied, permanent smile of a man. My grandfather fell in love with computers quickly thereafter and, up until the day he passed away, he was forwarding me chain emails that he thought were amusing, firing off pictures of his family that he was so proud of, and eventually even became arguably obsessed with viewing the world from Google Earth. Some may see that as a terrible way to spend the last few years of your life, but like my grandfather, I have never been one to judge what it is that makes someone else happy. My grandfather never programmed, he never drew in MS Paint, he never played on facebook... he kept in touch with family through his email account and, in his own way, visited areas of the Earth that he would never have had the opportunity to otherwise.
My grandfather passed away many years ago, and in all honesty, after his passing I was very lost. So often I hear people refer to others in their lives as having been their foundation, but my grandfather would never have allowed that. He believed whole-heartedly that man should stand on his own two feet. He was, however, the keystone in the arch of my life: remove him, and a fair amount of stones would succumb to gravity, leaving you with two waist-high pillars, both in need of rebuilding. He taught me the worth of a dollar, the pride that can come from a hard days work, and to always make hay when the sun is shining. Most importantly, he taught me that if I wanted something I was going to have to go and get it myself: nobody was going to hand it to me. His support was unconditional, to the point that had 7-year-old-me told him that I wanted to be an astronaut, he’d have taken me to purchase some Tang and would be asking me what I thought it was going to be like when I walked on the moon. This form of encouragement matured as I began surpassing double digits in age, but its message never staled.
Perhaps this is why I waited so long to finally take the plunge into becoming a professional game developer: once it seemed the pieces were finally in place, my keystone was taken from me and I was forced to rebuild again. Sadly, it wasn’t until the birth of my daughter that that particular piece of the puzzle was returned to me. Hindsight is 20/20, and it makes complete sense to me that after years of game development as a serious hobby, it was just two years after my daughter was born that I finally took that crucial step. I walked away from a career of designing data-driven web applications and turned my attention to server-based multi-player games. Up until my daughter was old enough to hold up her own head, Revery was merely a play-thing I did in my spare time along with various other projects. But that first time she sat, propped up in my lap, and watched Dad work on and play his game, the transition from hobby to desired career sprouted from the concrete and to this day is alive and well.
My daughter will be 3 in a week and she is already a wizard with a mouse, a touch screen, and even the Firestick remote that I use for all of my TV watching. Don’t judge my parenting skills just yet: her and I spend quite a bit of time stacking blocks as high as possible, playing chase as we run across her giant floor-piano, and every visit we enjoy a nice chat about what it is we have both been up to since we last saw each other. But the first thing my daughter does when she enters my house, after we have said our hello’s and I-missed-you’s, is grab the Firestick remote and is opening up YouTube, and she’s all smiles as the theme music for her favorite Revery clip begins to play through the television. In all honesty, there is a bit of shame brewing as I write this, as I never wanted my daughter to be so skilled in the subject of browsing YouTube at 3, but this is our game. She has been with me from the start, as you can see in the image below. We are a team of best friends, and while her contributions may seem simple and irrelevant to an outsider, she is the Atlas that will forever be pushing her Dad up the unending climb that is life, and doing so effortlessly.
Tumblr media
I have always had a very difficult time connecting with other people, and sadly that extended even to my daughter when she was first born. I was honestly terrified, and it took me longer than I care to admit to overcome that fear that, like a bug I could not find in all my lines of code, kept me up until the wee hours of morning. It wasn’t until my daughter surpassed the accomplishment of holding up her own head and moved on to walking and playing blocks that I realized that fault with this particular bug was not my shoulders; this is how I have always been. I found a way to connect with my daughter in much the same way I did my grandfather, and when my MMO releases, I will connect with (hopefully) a lot of other people; people who I would otherwise have never had the chance to meet. Like so often is the case, the thing is not the thing: it is the thing that gets us to the thing.
So, to all of those who may think programming games is akin to immaturity; to those who view game development as a task that is as simple as sitting down on the couch and playing Call of Duty; to all of those in my life who have never had the least amount of respect for what I do simply because I do it from the comfort of a home office, I say this: I used to fell trees for a living, I made snow for several seasons, I ran an IT department of 50+ machines - including POS terminals - at age 19, and I even installed and repaired septic systems to have gas money in my pocket in high school... game development is the most challenging way to pay the bills that I have ever come across. I have never in my life had to have a handle on so many complex systems at once, I have never worked so many hours, and I have never come close to the levels of hair-pulling frustration that I have experienced in my years of game development. My grasp of advanced mathematics has never been so utilized, my work pipeline has never required the level of dedication that this job does, and I have never so often been my own worst enemy. The two things that I have always loved about programming are also the two things that will keep me up at night tossing and turning over my latest bug: programming does exactly what you tell it to, so any fault resides on your shoulders, and if you work solo like I do, there is nobody else to point the finger at. Add to that the fact that, as a freelancer, there is no boss who is going to walk by your desk 3 times a day to make sure you are on track, meaning you are completely in charge of every ounce of your ambition and work ethic, and you may begin to understand the tole that this particular “hobby” can take on someone. If the reward weren’t equally substantial, I would have given up a long time ago.
If you’re like me, and you have people in your life who judge you - possibly even look down at you - for your obsession and/or passion concerning game development, then rest assured that you are not alone. To this day there are people in my life who think my job entails me grabbing an XBox controller and collecting coins all day-long through fits of laughter while I effectively play an interactive movie from the comfort of my couch. It is what it is: they don’t see that we are up programming and debugging until 5 AM because they are all fast asleep. They do not realize the frustration that arises from knowing damn well that this particular script should work as expected, and for the life of you, you cannot figure out why... it must be a bug in the software, until it’s not. They will never understand what it is like to go to work everyday not because you have a time clock or a schedule or a boss, you go because if you don’t, nobody will ever make the game that you wanted so badly to play that you decided the only option was to create it yourself. They don’t know what it is like to sacrifice Friday and Saturday nights out with friends because you believe in your idea, and there is no amount of jager-bombs or cute girls in short skirts that could derail your dedication.
Tomorrow my daughter will arrive in time for dinner. After she gets her fill of Revery videos, we will turn off the TV and have a chat about our week. We will stack blocks from floor to ceiling and delight in knocking them over, because we both know that the worst thing to come from a toppled tower is the fun of rebuilding it. We will play chase while stomping our feet on the giant keys of the floor-piano, we will share breakfast the next morning, and I may even set up her little Elmo desk, place my trackball on it, and set us up so that we can run around the realm of Revery together for 15 minutes or so. For now, this is our world, and although it is in desperate need of saving, we just walk around and meet NPC’s and explore the realm. Revery had long been my fortress of solitude; my place to escape from the everyday world to one in which I felt I belonged, and I honestly couldn’t think of anyone better with which to share it.
I am reminded of the quote ‘I am thankful to all of those who told me ‘No’; It’s because of them I did it myself’, although I think I would need to switch things up a bit to make it fit my circumstance more effectively.
‘I am not spiteful to all of those who view my career as child’s play; it is despite you that I play Revery with my daughter.’
2 notes · View notes
Text
From Template to Revery
It has been almost a month since I first shared my MMO Template via my portoflio (http://eatsleepindie.com/), and while I am confined to space other than my office desk, I figured I’d share what little progress I have made since then.
‘Very little’ may be an understatement. I do not get much time to work on this template throughout the week, so the majority of improvements have been UI-based and not populated with any actual data whatsoever; just a new panel layout here for a character window, or a new panel for using ability points. Buttons call empty functions, labels mostly contain holder strings, and nothing has any color to speak of.
I have taken screen recordings of the process involved in building Revery from this template, which is displayed below. The process itself is fairly simple and straight-forward, which allows me to swap out characters, UI backgrounds & buttons, terrain textures and trees with very little effort. The character uses Mecanim, which makes swapping out models and animations a very simple process. The world itself is simply a terrain with 2 textures and a single tree model, and replacing these objects is very easy to do. The UI elements are easy to swap out with the sprites provided via the UI Asset Store package I purchased a long time ago. Fonts are easy to switch, I am using the same settings for camera effects and lighting as the old version of Revery, and textures that worked well with this lighting were already available via my old project folder. So the process was pretty much drag-and-drop.
youtube
Granted, this looks like the older - and more complete - Revery Online that I used to share videos of on a regular basis, but there is still a long list of features that were a part of Revery that are not added to the template. There are no quests, no NPCs to provide them, no ability to loot treasure chests, etc.
I’m hoping I can find the time to add to this template’s framework beyond a few new UI buttons and swapping out graphics assets. As it stands now, there is quite literally nothing to do beyond walk around and chat. Someday, when I can find the time, I hope to add NPCs and quests, add monsters who produce loot, and a lot of other features missing from the old version of Revery. 
0 notes
Text
3D MMORPG via WebGL
Saturday is the only full day off I have each week (and I only get it off half of the time), so I decided I’d finally take the time to blog about the MMO Framework I have been working on... and I use the term “working” very lightly. I don’t get much free-time these days to dabble with Unity3D - anywhere from 2-5 hours a week - and I’ve been bouncing back and forth between concepts in an effort to leverage this time as best I could.
I can work pretty quickly in Unity3D when it comes to whipping up a prototype. I have several years of experience with the software, and over the course of those years I have played around with just about anything I could. Using Unity’s terrain and navmesh system, you can go from an empty scene to walking around in a game world very, very quickly and with only a few lines of code. This makes testing out ideas a pretty simple process.
When I upgraded to Windows 10 and Unity 5.3, my pipeline for building multi-player games using SmartFox server was no longer viable and needed a major overhaul. As of writing this, I am happy to report that I am now running a clean copy of Windows 10, and have the latest version of Unity talking to the latest version of SmartFox using the latest version of their API, and can port to Windows Standalone, Linux Standalone, Windows Store (both 8.1 & 10), Android & WebGL. More platforms will be tested as soon as I have time to do so.
In the last few months I have been considering using my free time to start working on ‘Revery Online’ again. The problem (at the time) was that the game was broken... the client would no longer connect to my server, which when you’re building an MMO, leaves things pretty dead in the water. I was not willing to forfeit the time required to fix the issues I was having. Working with Revery - or just about any other multi-player project I have built - to diagnose my server issues was also proving to be a time-consuming endeavor. I needed a dumbed-down, clean project to work with: one in which build-times would be as fast as possible and frame-rates would not be bogged down by fancy particle effects and dozens of materials. The MMO Template featured in the video below is the result of this.
youtube
This is about as simple an MMO as I could create in Unity while still making it feel somewhat like a game. The terrain uses a simple grid texture I whipped up in photoshop; the trees are a simple cube with an extruded trunk, replicated over and over using Unity’s terrain options; the characters are simple base meshes which I intend to replace with my own in the future; the UI uses, for the most part, things included with Unity - the icons being the only UI elements imported at this point.
If this looks a bit like Revery Online, there is good reason for that. I was forced to rewrite a fair portion of the client-side scripts responsible for communicating with the server, but a lot of the input, UI and other non-network-centric scripts are simplified versions of those I wrote for Revery Online. The same goes for the server-side classes; most of them are re-written scripts used from my old MMORPG.
I used the same terrain/tree system I have always used. I also used the same NavMesh setup (with A* pathfinding removed) as I had in the past, all in an effort to save myself time. This time around, however, I opted for forcing everything to use Unity’s Mecanim animation system; Revery had always used Legacy, since that was all that was available when I first started working on it. As of now, the characters in this template are animated with Unity’s included animations, but the rig is one I had custom-built myself several months ago.
Basically, all you can do in the demo is walk around and use the chat interface. If you begin your public message with /s then your player will display a chat bubble over their head. The game uses a working Area of Interest; the server tracks where every player is, and only sends data to your client based off of what is around you. Unlike a standard multi-player room, your client does not care about any clients that are off-screen, and the server knows where you are and what information should be sent to you. As you move closer to another player and they enter your AOI, you begin receiving updates from their client until they travel off-screen. This saves the server from updating 100 clients about 100 other clients constantly; it knows who needs what, and only sends that information where it is needed.
Tumblr media
As all my multi-player systems do, this one uses a custom login feature that ties to a database. This database can be shared with a web-server, which allows me to display character, user, and item info on the non-existant website; I could also display this data via JSON or XML for use with a public API in the future if desired. This setup allows for users to register and log in to the game & website using the same information, and makes allowing for things such as multiple characters, tracking inventory, etc. a relatively simple process.
You have a bag which is capable of storing inventory items, but those don’t exist yet. There is a treasure chest north along the path that is holding a few items, neither of which exist beyond icons and some simple database records at this point. There is a skills bar which is populated with spells (that derive from items) much like the treasure chest is populated with loot, but again, they do nothing. In fact, the only button that works in the main menu right now is the ‘Return to Game’ button; I haven’t even gotten around to programming the others at this point.
There is no music; sound effects are limited to bloops that play when a user enters/exists the world or a new message is received. For me, as the developer, all of this work that hasn’t been done is much simpler (although more time-consuming) than the task of getting the AOI setup alongside custom logins. Last but not least, I am very happy to report that this is the first game I have ever successfully ported to WebGL that is a working MMO: a long-time goal I have had that I was never sure I would be able to achieve.
The demo can be played via my portfolio website (http://eatsleepindie.com). If I were you, I would expect to be alone in this world, but you are more than welcome to login as a second guest and interact between the clients. In fact, you can login with up to 100 clients and they will all interact as they should.
My goal moving forward is to recreate a “copy” of Revery using this template and the simplified assets. The template is setup such that replacing models and textures is a very simple process, and when the template is completed, I should be able to easily import all of Revery’s assets into the project and replace all this bland grey stuff with the world I spent so many months of my life creating. I don’t know if I will ever accomplish any of this, but this is definitely a project that I have enjoyed working on thus far and would like to continue to add to it as life and work permit.
This is my first Saturday off in 3, so I intend to relax, enjoy some coffee and Bob’s Burgers playing on Netflix in the background as I add a few simple features to the demo. My first focus will be to separate user data from character data, and then tie those database records together, thereby laying the framework for each account to have multiple characters of different genders, classes, etc. My only goal today is to enjoy the work.
PS. Out of curiosity, I decided to import some assets from Revery Online and drop them into this template. With my Prefab setup, it was a pretty fast process and yielded the following results:
Tumblr media
All I have done is replaced the terrain textures, replaced a few of my UI Sprites, and replaced the base mesh models with models I was using for Revery; total time to go from template to this: 10-15 minutes.
I am not sure if there is a market for a turn-key MMO template in Unity3D or not, or if this will even be viable as one when/if it ever is completed, but I can say with confidence at this point that a short tutorial on replacing assets in the template is all that would be needed to turn this template from what it is now into a Sci-Fi MMO... or a post-apocalyptic zombie MMO... or whatever MMO theme you can come up with.
0 notes
Text
Having completed all of my contract work - which, by the way, if you are looking to hire a Unity3D programmer, I am available for freelance work (http://eatsleepindie.com/) - I decided to start prototyping a turn-based tactical game. XCOM: Enemy Unknown is one of my all-time favorite PC games, and using that as a reference I began setting up a simple scene in Unity to create something similar.
Tumblr media
I decided to go with a very simple, flat grid terrain to start and am using primitives in place of animated characters and textured 3D models.  The focus at this point is purely programming with the idea that I will be able to drag and drop any models onto my prefabs and the system will continue to work as expected. The idea here being that I will hopefully have something worthy of the Unity Asset Store by the time I am done. I have sidelined my stunt plane system for the time being... it works great until frame-rates drop, so I need to rethink my script responsible for the camera movements.
Below is gameplay thus far, and I while I pulled a late night last night to get it to this point, there aren’t many hours spent on it thus far. Damage calculations are very basic at this point, and do not take everything into account that should be; but it’s a good starting point.
youtube
I think the next step, in order to pacify my artistic side (what little there is of it), I will add animated models from the Asset Store to take place of the cubes and begin constructing my animation controllers. This will bring a little more life into the game and make programming & play-testing a bit more enjoyable.
0 notes
Text
Toon Aces
A while back I got the urge to build a stunt-plane game.  Well, at first I got the urge to model a cartoon plane in Blender3D, but after getting the base mesh done I quickly wanted to make it perform aerial acrobatics.  A few hours later, I had a working prototype.  The plane did not fly exactly the way I had set out to accomplish, but I was definitely close enough to take this prototype to a new level.
The following is gameplay video of that original prototype:
youtube
After a full backup of my project, I proceeded to scrap my original plane-controller script and slowly piece it back together, this time done with performance and editor options.  Several hours later, I had a system that I was more than happy with, and although I feel it still needs some minor tweaks here and there, I decided to take the Asset Store and give this controller the scene it deserved.
I painstakingly pieced together multiple terrains and littered them with trees that would render efficiently.  I purchased a set of four cartoon WW2 planes and replaced my original model with the option to choose from them.  I purchased a cartoon skybox and a new MP3 file for use as background music. I put together a UI that allowed the player to choose their desired aircraft, whipped up a logo in Photoshop, and brought it all together to produce this:
youtube
I am currently considering submitting this plane-controller to the Asset Store.  It would need some work to get it ready, but I think it would be worth it. As far as gameplay mechanics I have programmed, this is one of my favorites to play and I’d much rather see some other game developers take it and turn it into some fun games to see it sit on my hard-drive used only for the purposes of my portfolio.
0 notes
Text
Zombie FPS WIP
I’m a little late blogging about continuing progress on my Zombie FPS game that I started over the weekend, but I’ve finally got some time to share.  Basically I used assets from the Unity Asset Store to do a sort-of Ludum-Dare-esque personal gamejam in the hopes of having something nice to add to my portfolio.  Things went very well, and below is a gameplay video of progress so far.
Basically, you start off in an old, abandoned hospital that is populated with zombies.  Your only weapon is a pistol which has a flashlight attached to it, but the flashlight must recharge after so many seconds of use.  Shinning your flashlight on any enemy will cause it to approach and attack you, as will moving too close to them.  Lastly, the noise that emits from the flashlight once it recharges will attract any nearby enemies.
I have never worked on a horror-themed video game before, and I really enjoyed doing this over the weekend.  So much so that I may continue progress on it the next chance I get.  There is a lot more I would like to do with the AI system as well as lighting, but for now I am pretty happy with progress.
youtube
0 notes
Text
Finally, Some Time Off
I’ve had a lot of game development work coming across my desk lately, so I have had very little time to to work on any of my own projects.  Don’t get me wrong, I am in no way, shape or form complaining: I love freelancing, especially when that work involves me building games... but it’s always nice to take some time to work on your own personal projects from time to time.
I wrapped up some work on an FPS for a client over the week, which left me free to play in Unity3D during this weekend, and I am taking full advantage of that.  My goal is to get something new in my portfolio using Unity and some free/purchased assets from the Asset Store.  
I have purchased a copy of UFPS (http://bit.ly/1Q1BuY8) to get started.  I have worked with UFPS for clients in the past, so I’m not only familiar with the setup, but have come to grow very comfortable with their system.  Considering it was $50 off, I really couldn’t pass up the chance to own a copy and start making an FPS of my own.
I have always loved horror movies, and considering most of my own work lately has been in the Fantasy genre, I opted for taking a stab at making a horror video game.  First step: jump in Blender3D and whip up a quick room for prototyping and getting my UFPS settings just the way I wanted them. 
Tumblr media
Once I was able to run around in this haphazardly thrown-together building, I needed something to shoot.  My ex and I used to love playing Zombies in the Call of Duty series, so feeling a bit nostalgic, I opted for a game in which I could take out the days frustrations by popping one zombie another with well-placed headshots.  As this is just a prototype, I shopped around for an inexpensive Zombie model to work with, and ended up purchasing this one: http://bit.ly/1hpthB3
Tumblr media
When it comes to first-person shooters, F.E.A.R. has always been high up on my list of favorites.  I had no interest in slowing down time in my game, but what I did want to play around with was the use of a flashlight in a very dark scene.  A couple of spotlights later and I had the basics of my desired effect in place.  You’ve gotta love how Unity3D makes some things so easy for you, allowing you to focus on the things that make your game unique.  This games uniqueness would come later.
Below is a video showing some of my testing play-throughs.  Very basic stuff, but it’s a good start.  Enemies are alerted if the player shines the flashlight on them, and will begin to pursue the player once aggro’d.  Unity’s Asset Store is full of amazing free assets, and I grabbed some free ambience to play in the background to start adding to the scene’s overall feel.  It’s incredibly dark, but I haven’t done much with lighting at this point beyond the flashlight and a few flickering bulbs for effect.  I’m looking forward to continuing progress on this project today, as it is my last day off until next weekend.  I am not committed to creating a full-fledged video game at this point, but at the very least, I should have a nice (albeit short) shooter for my portfolio when I’m done.
youtube
0 notes
Text
As shown in the screenshot below, I have added a few Non-Player Characters to the world, and some of them even have quests available for the player to pick up.  I still need to build the UI system for accepting them, but that will come in due time.
Tumblr media
What follows is a short run-through of the realm as it exists at the time of this posting.  Nothing much to show here other than the addition of a lot of terrain, trees and the like for the player to explore.  You’ll also see that there are more NPC’s located in the outskirts (beyond what is shown in the above screenshot), and one of them has a boat at the ready which will eventually whisk the player out of the starting area once they have completed the quest chain..
youtube
I’m looking forward to getting more work on this project done tonight while my daughter is asleep.  With any luck, I will have character customization completed and ready for players to start making their own look-alike avatars.
0 notes
Text
Compiling a Realm
As of my last devblog, my custom terrain system was loading the entire world in 32x32 sprites and laying them over one another, which was causing some pretty substantial performance issues.  This morning I decided to write a custom Coldfusion script that looped through the map data and compiled a single, 4096x4096 image.  My CPU usage when running the game has dropped from 35+% to the low teens.  This compiled image will also serve well as use for the mini-map later on: two birds, one stone.
Tumblr media
Server-side, I moved away from a single spawn point and am now rotating players through one of three spawn locations as they enter the realm.  I have designated these temporary locations with some flaming torches, and players will meet in the middle when they follow the path.  It works for now, but I have plans to do more with this in the future.
Adjusting the system to work with these new spawn points was quite a bit of work server-side.  I needed to ensure that the player-character remained in the center of the screen without affecting any of other systems like positioning of other players and my map editor.  Eventually, I got this to work as expected, and am now able to create as many spawn locations as I want where I need them, which will really aid in development in the future.
Tumblr media
As you can see in the image above, I’ve also put some time into a prop system, which allows me to add trees and what-not as easily as I do adding new terrain.  I have to admit that I really like the look of the world map now that it is less empty, and am looking forward to playing with my custom map-editor over the weekend to continue expanding on this realm.  It looks like a lot of progress, but using the framework I already had in place, these updates didn’t take me much time at all.  More updates are planned for the near-future!
0 notes
Text
Creating A World As I Go
I’ve got a pot of coffee brewing, which in this house means it’s time to get some game development done.  Tonight I will be working on my client’s project, but I was afforded some time to work on Islantis earlier today as my daughter napped in her crib and her mother napped on my couch (don’t get me started on the level of awkwardness that clouded my work area with).
Tumblr media
I said earlier that, chances are, I wouldn’t be able to post progress very often on my own project, but I underestimated how quickly I am able to work and add new features to this framework.  In the few hours that everyone else around me slept, I was able to check off quite a few things on my to-do list, and I aim to cover them in this post before starting my shift.
Tumblr media
First on the to-do list was to remove the restriction of moving around within the bounds of the map as it was originally loaded.  Up until recently, the player-character you controlled would move around on a static map, preventing you from continuing beyond the bounds of the screen.  I have since updated this to a system that keeps the player-character centered in the screen and pans the world around them as they traverse.  This was a bit more complicated than simply moving the contents of the canvas since I needed to ensure that positioning data for other players and objects that the server was tracking and sending to the client remained unaffected.
youtube
After that, I needed to adjust the click-detection scripts for placing new tiles on the map via my custom-built administration system.  With this completed, I am now free to move around the world and create it as I go, as highlighted in the video above.
I also brought back the public chat system, which has a few updates to the size of the speech-bubble that appears over players heads and has a more responsive form that is now nested away in the footer of the page.
When this is all combined with previous progress, the result is what is shown in the video below:
youtube
I am very happy with the way things are progressing with this project, especially with how quickly I am able to build off of this framework.  And while future progress may be in short spurts here and there, I am confident that I can continue this pace in my off-time.  I am very much looking forward to getting some of Jessica’s pixel art featured in the game as well, and since she will be here in about 2 hours time, it’s looking like there is a good chance of that happening soon.
0 notes
Text
Creating a Realm
My precious little girl has just been laid down for the night, and my always gorgeous significant other has just arrived and is patiently reading her novel on my couch while I get this out.  Tonight is one of those nights where everything feels right.  
Plans for the evening are to occupy said couch, watching movies until the second lovely lady of my life falls asleep, at which time my work shift will begin.  Which is why I am writing this now: updating everyone on progress with Islantis Online before I am whisked away for an evening of laughs and programming my clients project.
My focus since the last post has been an admin system that will allow me to easily expand the world in which players will be adventuring.  The idea here is to put in the time now to save me a lot of time in the future.  With the client reading map data from a static array, it was time to swap this out for data populated from the database.  This would give me the ability to easily update and add records, making the entire world a dynamic representation of simple integers.
Tumblr media
The screenshot above shows the first draft of my administrative map editor: each of the cells in the panel on the right can be selected and allows me to draw on the map with mouse clicks.  At the time this screen was taken, the data was not stored in any way, but was simply the first step to getting this admin system completed.  The video below (depicted at 32x speed) shows a quick run-through of how this system works.
youtube
That was where I left off last night.  This morning, with a little extra time on my hands, I put the first scripts in place to start saving and reading this data from the sever’s database, making the changes to the map persistent.  The system still has a few bugs that I want to fix before I take a video of it, but I am not ashamed to admit that working with this map editor is a lot of fun.  I know that the more time I put into it, the more efficient creating this world will become, and the more enjoyable the entire experience will be overall.
Once the kinks are worked out, the next step will be to use this map data to create a pathfinding system on the server.  Each of the available “cells” has a record in the database, and each has a column that determines whether that “cell” is walkable or not.  Currently my plans are to go with a simple 4-way directional system, but this may change in the future; this will mostly be delegated by server performance and what feels best in-so-far as game mechanics.
After that, the goal is to change the game so that the “camera” follows the player as they traverse the world.  As of this writing, the player moves around the screen and the “camera” remains in a fixed position.  This would be very easy to accomplish in Unity3D, but since I am using an HTML5 canvas, I am still bouncing around ideas on how to do this most efficiently.  Currently my plan is to have the player on a separate canvas than the rest of the game world, and simply scroll the contents of the world around the player as the walk animation is played.
Given that I am starting a new project for a client tonight, progress on this system will be pretty slow-going for the next week or two.  I expect I will have an hour or two here and there to continue work on this, but for the most part, there won’t be much to update you on for a while.  Everyone’s got to pay the bills, right?
0 notes
Quote
It is quite foolish to hope you will reach your dreams while you are hanging onto people intent on pulling you down.
Dodinsky (via wnq-anonymous)
3K notes · View notes
Text
Islantis Online: Progress Thus Far
Tumblr media
With a beautiful pixel artist having recently arrived at my home and discussions of Islantis already well under way, I figured it was time to show my progress on Islantis so far.  This game will be a HTML5 + jQuery browser MMORPG with a fantasy theme.  During the first stages of it’s development it will absolutely be free to play; that is not to say that eventually it will cost money to play; that decision is one for a future-me, not present-me.
I started off with the demo scene offered by SmartFox for a simple HTML5 MMO.  Basically I needed to take everything I already know about making Unity3D and SmartFox work together in an MMO setup and apply this to an HTML5 framework.  After working with this demo setup for a few hours, I decided to scrap progress and start from scratch.  This way, I would know every line of code and I could build the system from the ground up while keeping plans in mind for the future.
Tumblr media
Pictured above is the first screen I took of this in-progress project.  Pretty simple stuff so far: just a basic background image consisting of a repeated grass texture and a player character walking on the terrain.  Display names are shown underneath each player and there is a working (albeit buggy) chat bubble for when players send public messages via the form (not pictured).
In the next screen, you will notice a red box around the player: this is the Area-of-Interest, and as the player moves about the world, the server dispatches updates based on the players location, providing the player with current information on the area around them.  When a player moves away from an object or other player, that object/player is unloaded and updates are no longer sent from the server until the player returns to a position that places the object back within their AOI.
Tumblr media
This was a pretty big achievement for me personally.  This is the basic framework of just about any MMO, and provides the server with a way to distribute data amongst clients in a very efficient way.  Had  I gone with a basic network setup, then (for instance) if 100 players were logged in at once, the server would be updating every single client with information for every single other client.  By using the AOI, the server delegates this data distribution, sending only relevant information to any one client, and thus saving a ton of performance and bandwidth in the long-run.
The other thing of note in the second screen is that the foundation work for building the world itself is in place.  Granted, there is quite a bit of information missing, which is why so much of the screen is a plain blue color, but what is of note is that the wave & grass tiles are being loaded at run-time via a simply array of data.
Tumblr media
This framework for building the world is the first of many steps I will taking to ensure that I can continue adding new islands to the world of Islantis as I continue it’s progress, and do so in a way that is incredibly efficient.  The goal tonight is to move this system from using a static array of information to one using database records, and then building an admin system that allows me to update this data via a custom interface.  When I’m done I will be able to simply click each cell of the map and easily update it’s current texture, including the ability to stack textures one on top of the other, making adding new islands to the game so simple a monkey could do it.
As I continue programming, Jess will be continuing her progress with learning pixel art, and when the time is right, we hope to meet in the middle and start taking some of her artwork and bringing it into the game.  For now, however, I am very anxious to get this world-building mechanic in place so that I can start giving these player characters a proper place to adventure.
0 notes
Text
Three Wrongs Don’t Make a Right
It has taken me a long time to reach this point.  I had been doing a lot of things wrong up until recently: I was with the wrong woman, I was working full-time for the wrong client, and I was focused on the wrong gamedev projects.  With the help of someone very close to me, I have finally reached the point where I can let it all go and say with complete confidence that a lot of the wrongs in my life have been righted: to say I feel born again would be both dramatic and cliche’, but suffice it to say that I am grinning from ear to ear as I write this.
I have always wanted to build games.  From my time as a young boy spending countless hours building custom levels in the editor provided with Duke Nukem 3D, to my first adventures using Maxim’s Klik & Play to create my own, unique worlds, this has been a passion of mine for more years than I care to admit.  
After 5 years of learning both Unity3D and SmartFox server; after way too many hours spent working on a 3D MMORPG by myself; after coming to the realization that there was no way I was going to be able to model, texture and program the number of assets required to bring this project to fruition, I hit a gamedev wall.  The notion that I could not build the game I had always wanted to was a very heavy weight, and it is one that brought me down for quite a long time.
My goal was to create a unique, community-driven MMORPG experience in which players owned their own house, could visit friends houses, could manufacture props and weapons for each other, etc. etc.  The focus was going to be less on grinding mobs of enemies and more gear towards a sandbox experience.
I never gave up on creating my dream game; I simply set it aside for the right time.  And while it still pains me a bit to say so, I have recently decided that Revery Online will never be released, at least not by me.  There are a lot of reasons for this, but by far the biggest one is the time required to complete such a massive project.  I have always worked alone; and it is not that I despise working with others to the point that I refuse to do so, but more along the lines of the fact that this is my sanctuary.  Gamedev is my place to get away from the world and get lost in a far-off land, no different than when players do so via World of Warcraft or Guild Wars. Gamedev is, and always will be, my place to hide, and sharing the creation my fortress of solitude is something that has never felt comfortable to me. 
As a man who grew up playing Pitfall on my Atari 2600 and one who’s life was forever changed when my father gave me a NES for Christmas, I grew up playing games that are now referred to as “retro”, with the world pixelated often thrown in the description.  These games were the best available at the time, and quite a bit of my childhood was spent blowing into and cleaning NES cartridges to prevent my Zelda save file from disappearing after countless hours of adventuring in Hyrule.
It wasn’t until I started dating the right woman that all of this came to a head.  She has become obsessed with pixel art, and while she and I both still have quite a bit to learn in-so-far as considering ourselves ‘good’ at creating these assets, she is passionate about it in a way that leaves me confident that she will put in the time required to learn the trade.  It is a huge change of pace from my experience with my ex, who spent countless months playing on Facebook under the guise of learning Blender3D and Photoshop to help me with career as a gamedev.  
The best part of this new work situation for me is that my new artist and I will not be working together; at least not technically.  After a long discussion (I cannot tell you enough how much of a breath of fresh air it is to be able to talk to my significant other like two adults) we have decided that she will be making pixel art for sale in the Unity Asset Store and GameDevMarket.net, and I will be working on my new game as a solo developer.  This gives me the opportunity to support her by purchasing assets like treasure chests and the like, while keeping away that overwhelming worry of what happens if things do not work out between us.  I have confidence that, at the very least, her and I will remain friends regardless of what happens, but I learned a lot from my last experience in working with my significant other, and I can say with complete certainty that it was a terrible idea.
So, my plan is to take all my ideas for Revery Online; ideas that would have taken years to implement in a 3D environment, and to instead bring them into a world of 32x32 frames known as Islantis.  Everything I had hoped to bring to Revery will exist in Islantis: from player-housing to crafting furniture; from killing mobs to large social events that bring every player to a common area for a night or two.  The list goes on and on, but what has me so excited about this project is that I am programming the client in HTML5.  Gone are the days of creating 4-5 builds for each new release; gone are the days of forcing my players to download the latest client in an effort to provide them with all the latest features; I simply need to program, deploy via FTP, and it’s back to work on programming more features.  
Earlier this week I made great progress in getting the server & client frameworks in place for this game, and it was a rewarding moment when my significant other and I were sitting on the couch together, each playing Islantis (or what there is to play of it so far) from our mobile phones by simply visiting a website.  No app to download, no updates to install: just out-of-the-box adventuring for any modern browser: I even played from my XBox One via Internet Explorer for a bit just to make sure it worked.  It did, better than I had anticipated.
I have a lot of plans for this game.  And while I may have gone through a year or two of personal hell to get to this point, I can say with complete confidence that this is the project for me.  It appeals to my inner-child: the one who grew up playing Zelda and other games on the NES, but is also more than enough of a challenge to keep me interested in its development.  When I couple that with the fact that programming this game will take a small fraction of the time it would have if I opted for a 3D client, you can rest assured that I am incredibly excited to get back to work on it.
I will be keeping a running devblog of it’s progress here at this Tumblr address.  I’ve already got quite a bit of work to show off, but I will save that for future posts.  For now, I am dying to get back to work on my map interface, which when completed, will provide me with a unique and easy-to-use admin system that will make creating this massive fantasy world as simple as clicking a few buttons.
0 notes