Creating Customization

Lady character customization
Growing up in the 90s was pretty awesome. The videogames are/were so amazing to me. There was just one thing that I wished I could change about them, I wanted more character customization. Don’t get me wrong, I love games with iconic characters, like Super Mario 64 as an example. Playing as Mario makes sense, but as a kid I thought “I wish I could make this Mario feel more like me.” Maybe give him a pink hat instead of Red, or be able to change the color of his overalls. A majority of the games from that era seemed to be a “here’s the character, now play” type of design. The only game that I played back in that time that offered a kind of specific customization was Super Smash Brothers, and I remember being blown away that I could play as a red Link if I wanted to.
Now that I’m older I definitely realize that there were a lot of limitations on games back then. The data limitations on a Nintendo 64 game (64 megabytes), are so small compared to what can be done in this day and age.

So when Andrew and I began work on a game that would be done in a 16-bit art style, I didn’t want to limit our players to just a couple different character models. Especially since we’re working on an action puzzler, and not a role-playing game where you would be following the story of one specific character.

Initially in working on art I wanted to create just one character to start with, so that I could get a feel for making all of the movements for one character before moving on to others. The character was modeled after Andrew, and he’s been the main sprite that we’ve used for testing. Recently I’ve started branching out into making additional characters and customizing them. We don’t have a set number of how many different customization options we’ll have yet, but I’m sure that closer to the release we’ll have more information on exactly what options there will be.
The picture at the top of the post shows a couple different options of customized female characters. I modeled one after myself (she’s the one with the brown hair and the pink shoes), as for the others, I wanted to show a little bit more diversity in the clothes, hair and skin tone. They’re all still works in progress of course, but I wanted to be able to show what the customization could look like for the characters. 
To the right, this picture shows two sprites modeled after Andrew, and just shows how slight variations in the character’s coloring can make characters feel different. The two sprites have the same body and hair, but just the changes in the coloring seem to give them two different moods. I really look forward to seeing the different combinations that players come up with when they make a character. Even just subtle differences seem to make a character more personal, which is important to me when I invest time in a game. Even though other people are playing the game, having your own character makes it feel a little more special.
While customization is a priority of mine, I don’t want the customization to be time consuming for the player. For instance, you can put a lot of time into making a Mii and it doesn’t take away from game time. If you had to make a new Mii before starting every game you played, it might become tedious and annoying. I want to give players the option to quickly choose a character with the customization selections available and not have it feel cumbersome. That way if the player does want to create a new character every time, they could without it taking away from playing the game.
Since people who play videogames are all different, I know that customization is not important for everyone. For the players who are just looking to pick a pre-made character and start playing, that’s something that we’re also looking at. Whether it will be set characters to choose from or randomly generated characters is still yet to be determined. Returning players will also have the choice to play as a previously customized character. That way the player doesn’t have to customize a character every single time (unless they want to of course).
With all this talk about the work we have already done, I cannot wait to have more of the game finished so that I can share more information! We’re definitely gong to bring the best of “old school” style gameplay with “new school” features. I’m already so proud of what we’ve accomplished, and the game seems to grow a little every day.

New Perspectives

Working on the game lobby.



Before I get started on this topic, I wanted to let everyone know that with the new year comes a new blog schedule!  Initially, we tried to do a post once a week and, well you saw how that worked out. We didn’t really hold ourselves to it and it ended up being more like once a month instead. With the new year we’ve decided to change up how we’re doing posts to hopefully keep us more on track! We’re still going to strive for once a week, but Becca and I are going to alternate weeks. Neither of us are really used to logging our lives on the internet like this, so it’s taken some getting used to, but we’ve been getting more used to it and I promise 2014 will be a better year! Now back to the original topic at hand, New Perspectives.

Developing Andrecca Adventures has been a real eye opener to me. I’ve started looking at games in ways that I didn’t really before. Take lag for instance, as a gamer I was always aware of lag and the basics of what it is. I knew it was more than that thing I could blame more online misfortunes on, but I never really appreciate the art of how to handle that lag as a game developer. As a gamer, I guess I never really cared. I just wanted seamless gameplay with someone a thousand miles away from me. How it got done was irrelevant to me for the most part.

I call lag handling an art, because just like with programming in general, it can be done in so many different ways and some work great and some don’t. It all comes down to your strategy on how to deliver the experience you want to. Just like a painter using certain, but subtle, brush strokes to draw your attention to where they want it drawn to. Or a composer adding the perfect supporting notes that change the whole tone of the music to give you the emotions they’re looking for. Just like those things, if done right, you don’t even notice lag compensation. You just know it works great and don’t give it much thought as to why it works since you’re too busy enjoying the game. If done wrong though, you can get the player notices. Countless times I’ve seen droves of players complain about lag. Whether it’s just a momentary hiccup or a major issue, anything that limits a player’s gameplay or downgrades it in any way, is noticed.

So when I set off to work on Andrecca Adventures, I knew that I wanted to include an online component, so I set off to do as much research as I could. I’ve heard that if you want online in your game, you should start development with online in mind. Taking it on later is usually a messy and labor intensive process and, as I’m sure many of you have encountered at one time or another, the online just feels tacked on. Not willing to risk that, I started off developing online. In fact, I haven’t even tested local multiplayer yet! I quickly read through some guides to see how I could setup the networking. I was still pretty new to Unity (our game engine) as well, so a lot of what I read went way over my head at first. Eventually, I pieced it all together and figured out how to get it to work for Andrecca.  Everything worked great, aside from some specific gameplay mechanics, I was done! Well not quite.

While it was working in tests, it just wasn’t going to pan out in the real world. Initially I was just going to use Unity’s built in networking, where players would host the games themselves, not quite peer to peer as it was still server/client based, but for a variety of reasons Unity wasn’t ideal. Plus I was testing my “working” networking between two computers on the same LAN, which meant almost zero lag. I wasn’t naive enough to think that 100-200ms ping wasn’t going to make a difference, but again, you don’t realize how wrong things are until you see it first hand.

I didn’t get to experience that latency until I implemented my current network solution, Photon Cloud. Cloud allowed me to test latency exactly as people in the real world will, as the connection has to go through the cloud before coming back to the other computer on my LAN. Another perk of this is that I could test higher ping by using the cloud based in Asia or Europe. This gave me TONs of insight! Now I could see how the low, normal and especially higher latency plagued my setup with lag for actions.

Actions in Andrecca are very dependent on timing, as a core component of it is pushing around enemies and players by sliding tiles. With movement delays (from latency and to smooth out input received by packets – another fun thing I learned about in this journey) and normal latency for actions, it was very difficult to hit anyone that wasn’t standing still. This lead me to read many many documents and watch videos on lag compensation. It’s gotten to the point where I feel like I could give you an overview on how to setup lag compensation on your FPS. I learned to appreciate the art behind it. A lagless game is really an illusion you can give and no something you can ever achieve. Much like how a painting can always seem like it’s looking at you regardless of where you’re standing. Until we invent time travel, there will always be delays in communications, whether they’re big or small. So until there’s time machines to give us simultaneous gameplay or magic ink to make eyes move, you need to master the art of creating that illusion.

I learned many strategies to give that illusion, but so much of the material was on FPS’s. Don’t get me wrong, I got so much out of learning about how the FPS online genre is handled, it really opened my eyes, but it took a while for me to realize how to relate these concepts to Andrecca. After all, we’re not creating an FPS, so tricks like hiding lag off screen, just didn’t apply, everything is always on the screen for everyone to see. The lag has to be handled though, and thankfully the materials I read and watched gave me the tools and inspiration to do that. I won’t go into details of how it works in Andrecca, but I found there are basically two ways to deal with lag, hide it or leave it showing. You have to find that perfect mixture to stay below the radar of what the player notices and tolerates.  I’ve learned (and am still learning) the different things that players will tolerate or not even notice, so far it seems like a tricky game of misdirection.

With all this said, I’ve gone through quite a few different iterations of networking and I’m sure I’m going to have to go through more.  For now though, I’ve found the one that works best, so far.  It’s definitely not perfect, nor am I even sure perfection can be attained at all, but I’m proud of what I’ve been able to put together.  I’m shooting to have an open beta, to test the networking further, sometime in March.  I’m very eager to see how Photon Cloud will pan out.  I think that it’s a great service where dedicated/self-hosted servers are not needed, but I am going to keep an eye on the ping level that goes with that since less variety of servers means the server could potentially be farther away.  Results have been promising so far though!

We’re Going To Have An Awesome Soundtrack!

We just got done making a deal with Indigo Rain to create the soundtrack for Andrecca Adventures!  Some of you may recognize the name since he’s the same artist we used for Baneling Bobble.
With Baneling Bobble, we just used some of his existing tracks that we felt fit the video game vibe we were looking for.  This time around he’s going to make custom music just for our game!  We’re really excited!  We’ll keep you posted when we have more to share.

He makes some really amazing and catchy music!  If you haven’t heard any of his work before, you should check him out at:

http://indigorain.newgrounds.com/audio/
https://soundcloud.com/indigorainofficial

Our personal favorite song of his is 8-bit Beat Machine.