Archive for the 'Programming' Category

Game progress

Still working hard on my Android game. The process has been very organic; changing everyday.

A friend started writing me a level editor for Windows so I could begin implementing levels, but then the more I thought about it the more I wanted players to be able to make their own levels.

So I stopped in my tracks, split the current game code into a base code and forked it into two classes: a game class and an editor class. They both derived from the same parent class so the basics is all shared, but now in the level editor you use button and touch events to create levels. Its not done, but I’m making good progress. I guess my eventual goal will be the ability to share and rate levels inside the game. Here’s a recent screenshot captured from my Nexus One using the DDMS (best fucking tool ever):

device

Here’s a shot at the main menu (not much at the moment):

device2

I’ve stuck with the classic arcade 8bit theme. I really like the look and its easy as fuck to create new artwork Smile

Android again!

I’m back to working on Android apps… this time a game. Not much detail on it yet but here’s a picture of what I’ve got so far. Think Pac-Man but accelerometer controlled. Ignore the shitty level and big power button.

device

I drew the character from scratch, he’s inspired by Bubble Bobble. Here’s his tile:

player

The entire game is going to have an 8bit style when I’m done.

Also, today I installed Zune and it needed my computer to restart. No biggy, lets restart… this is what I got when I did:

uc8tl

Fucking weird. I spent 20 minutes pulling my hair out trying to figure out what the fuck was going on. It was recognizing all the drives, and when I used the recovery disc I could browse the files on all the drives.

Then I realized something odd. My C: drive was being recognized as the F: drive. WTF? I moved the SATA cable from plug 1 of 4 to plug 4 of 4 on the motherboard.  Fixed!

Weird.

Gadget + Script

iconRemember way back when I first spoke about Gadget? Well its back… sorta. Chad has been binding Lua to low level DirectX functions. We don’t have any real plans yet, its just something to try out. But pretty much the entire engine will be scripted. Slow you say? Well you’d be right except for the fact Chad had enough foresight to include LuaJIT– which compiles the script to native code at runtime. I guess the idea is to make something sorta like LÖVE except maybe even a little more low level. Everything will be handled on the scripting side of things, which is pretty cool and interesting to play around with.

Even though I said Lua… its totally not Lua. We’re so used to Garry’s implementation of Lua (with the c style syntax) that we ended up doing it ourselves. But we kept on going with the customization… so much so we needed to write a custom Notepad++ syntax highlighter and we eventually dubbed it Gadget Script, which is totally cool because now we can fuck with the syntax of the language as much as we want and not have to worry about conforming to any standards.

Nothing to show yet, just blabbering away.

What’s Up

Right now I’m on vacation and we’re driving from New York to Washington DC. I’m just relaxing in the back seat so I figured I could take a few minutes to update you peeps on what I’m up to.

We’re at the tail end of finishing Zinger. I can’t believe we’re the last gamemode to be submitted to Garry, but then again I guess it isn’t that big of a surprise. We have an incredible amount of custom content and we’re also OCD kind of perfectionists. It’s a curse really.

In between our workings on Zinger, we are also revamping an old website and converting it into an HTML5 web app. I don’t want to indulge everyone with all the details just yet, but those of you who use LuaBin will really be excited about this product. It’s going to have a community integrated into it as well… it’s super cool. We’ve already invited a few people into the alpha testing phase and we’ll invite more as we progress.

I’ve also been playing a bunch of games recently, mainly games I’ve owned for a while but never got around to playing.

Oh and I picked up Halo: Reach the other day but haven’t had a chance to play it yet because my Xbox RROD’d right when I put the disc in. No big deal because it’s under warranty. It just gives me more time to catch up on PC games, even though I’ve got a small collection of unplayed Xbox games building up (Reach, Splinter Cell, etc)

Anyway, more to come later…

Updates on Zinger

We’re in the final stretch! I don’t want to say we have a finish date, but we’re close. Here’s a rundown:

Theme, Teams & Colors

We changed the team names and colors and got rid of the silly team flags. No longer is it Red vs Blue, but it has become Purple Bandits vs Orange Sandbaggers. Why the change? Well, we wanted team colors to stand out against the rest of the world easier. Naturally, there are lots of red and blue elements everywhere in the environment and on your HUD. So to help distinguish between everything, we made the team colors completely unique.

But our changes are not limited to team colors. We’ve done a lot of color tweaking in these final step with various color matching techniques. We tried to bring everything together by ensuring we had a consistent pallet throughout the game.

Battle Rules

We implemented something dubbed Battle Rules. Its a way to plug new rules into the game. Think of it like a hook system… sorta. Previously, when a player went through a ring, we called the function GM:RingPassed( ring, pl ) or something like that. Instead of hard coding how that event is handled, we now do rules.Call( “RingPassed”, ring, pl ). The Battle Rules system checks whatever rules have been loaded (they could change randomly each hole if we wanted) and lets it do all the work.

There’s events called everywhere, even in some areas we don’t even currently handle. But down the road if we/someone else wanted to make a new set of rules for the game, they could manage that event. Its pretty sweet.

Statistics

After we got the Battle Rules working, it was really easy to pump in the stats system. All we did was feed every event from the Battle Rules into the stats. If there is a stat handler for the event, it manages the information passed. Pretty cut and dry but it allows us to track everything the teams/players are doing and give some cool bonuses based off the collected data.

HUD

We totally reworked the HUD in this version. In the first revision of Zinger we used monotone colors on the HUD… mainly white. It looked good but it just seemed “unfinished”. We went back and reevaluated the theme and began using some earth tones and it really looked good (not to mention the fact we completely redesigned almost every HUD element).

Then we started to look at how the HUD was arranged and it made us wonder… why don’t we just allow people to arrange it how they like? So we did…

   Default HUD HUD editor

Help

We did manage to work in a fully functional help system. Its 3D->2D based, which means you see the tips in 3D but when you read them they show up in a 2D panel. Some tips will purely be 2D, but we tried adding 3D hints all around the game to help new players understand what’s going on.

Help panel

More information to come…

Zinger items and inventory

Just a quick update:

We’re changing how the inventory is in Zinger!. Its going to be more Worms-esk, which means you can have more than 4 items and you’ll never have to destroy anything. If you pick up an item you already have, it will stack.

Also, you’re going to start with items now. Just some of the basic ones though. You’ll still have to find all the good stuff in crates, but at least you’ll have weapons to use at the beginning of the match.

Oh and by the way, Chad modeled and scripted this sign for mappers to use. The text and text color is totally customizable by the mapper. They can pick three lines of text and each line can have its own color:

zing_test0066

P.S. No, that’s not a typo. THERE HAS BEEN AN EARTHQUACK!

Zinger! changes

So we’re making a bunch of changes to Zinger!. I don’t want to go into all the details, but lets just say “trust us”. We’re breaking our work down into 2 major parts: playability and replayability… in that order:

Playability

Playability is simple… make the game easy and fun to play. Zinger! is already fun and easy to play FOR US. But when you add in total noobs you get a clusterfuck of “WTF IS GOING ON?!”. Understandable. We’d been playing Zinger!, or at least the concept of it, for a really long time and through many iterations. We need to remember there are people who’ve never played it before now playing it. Especially when it gets distributed on Steam (omg omg omg omg).

Along those same lines… we’re going to rethink or simplify some of the stuff we were doing before, or even remove it completely. Like the spectator mode and course randomizing. A perfect example of a bad choice is when we limited what you could spectate just to force you to watch what was going on in the current hole. It made spectator mode so obtrusive and restricted it felt like you were looking at the game through a tube. Fuck it, free roam!

Some of the other issues will require more drastic changes. There are certain elements that feel pointless and even a waste of time. We have plans to change that. Like what’s the point in shooting a guy into the water or out of the map if he just respawns right back where is was? We’re going to try to work in a damage system sorta like Super Smash Brothers. You can’t be damaged to death, but the more you get hurt the more it accumulates and affects you. (which means we’ll have to add healing related items into the game)

The other thing we’re worried about is a theme. The only reason we care about that is because of the lack of “flow” in the game. Sometimes Zinger! feels like its fractured a bit. Like you’re playing several mini games at the same time. Is it team deathmatch? Is it golf? Is it an adventure game? What is it? So to bring it all together and to help it make more sense we’re going to add a general theme to the game. That’s where the most dramatic changes will be. You’ll see the content getting tweaked and changed to help match. Don’t worry, we’re keeping the same artistic style… we just need to update the assets to match. Our goal is to have a bunch of reusable assets for mappers to use to keep a consistent feel. It sounds like a lot of work, and it might be, but it will be worth it. Chad and I are both super excited about it.

Replayability

The replayability is going to come after all that. First we make a fun and simple and easy to understand game… then we focus on keeping players interested in it over time. Stuff like unlockables and micro-achievements (no not the Steam achievements, just ones you earn in a hole or on a course).

We tried randomizing the course and rings and shit like that, but the problem is it leads to more problems than its worth… and really it doesn’t make the game feel any more fresh or new. In retrospect, does rearranging a couple of rings make anyone go “OH MAN! THIS IS GONNA BE FUN!” all over again? Nope. Fuck it.

We needed more interesting ideas: things like changing a simple mechanic on a hole. What if we randomly selected one hole to add huge amounts of recoil to every item? Or everyone has unlimited Bazookas but no crates dropped? Or everyone was invisible to the other team? Of course those are just random ideas off the top of my head, we’ll see where we go with that.

Reply here and let us know what you think.

P.S. If you wanna peek in on what we’re doing, you can always check our Twitter feed for SVN updates.

We won second place!

I know this is old fucking news but… In case you haven’t heard (which I’m sure most of you have) Arcadium Software’s Fretta gamemode Zinger! took second place in the Fretta Gamemode Contest!

What now? What does this mean? Where do we go from here?

Well, we’re looking forward to some feedback from Garry and Craig. We also have some touch ups we’d like to do. Once we’ve polished up the gamemode we send it to Garry and it will be included in Garry’s Mod!

We also get to add achievements to the gamemode and even push updates out once a month. Which is totally amazing. The prize money is totally great and all, but that comes and goes. The fact we’ve got a small piece of work in a retail game is definitely the most rewarding part.

Everyone keeps asking me what we’re doing with the money. Well, the majority is getting split up between Chad and I, and some will go to our sound guy and level designer. They both contributed great work so we’re looking forward to  showing them our appreciation.

Once again, I know this is literally last weeks news but I’ve been busy with a lot of shit lately… like moving… which I have yet to blog about. I’ll do that tomorrow, ok?

Retro Arcade – an Android Live Wallpaper

I’ve been posting a few of these lately, huh?

So yea, third Android app and this one is finally built on the 2.1 SDK. It’s a total nostalgia bomb too. Right now its just one single game, but I plan on adding more games to it so its like a bundle deal: multiple wallpapers from a single download.

This is my first paid application and since I first published it a few days ago I’ve already got great responses. The way I look at it is once its done its done: I don’t have to do anything else. Maybe I won’t get 250,000 people buying it, but whatever I do get is awesome.

Images related:

pacman eating pills pacman chasing ghosts

Copy Text – an Android App

BAM! Just like that I released my second Android application. This one was to fill a void that I’ve personally had. A lot of applications give the user the ability to “Share” with other apps. For example, I can click an image in my picture gallery and “Share” it to my Facebook app or Twitter app or whatever else allows you to upload pictures… you get the idea.

But sometimes apps have some text in them and you can’t really share it to another app. Take for instance the Twitter app I use… often times I want to just paste a tweet or a portion of a tweet to someone in Gtalk or something. But there’s no option to just copy it so I can put it (or any portion of it) where ever I want! And so I wrote Copy Text. Basically if any app shares plain text, Copy Text will be an option. It does no more than just copy the text to your clipboard. And Android 2.0+ users can even “Share” contacts in the form of plain text… great for including someone’s number in an email or text message. Simple? I think so. Needed? Damn straight. Oh yea and as an added bonus I included a history for easily recopying text you used before.

I released Copy Text yesterday and its already been downloaded more times than my previous app and has retained a higher install percentage (how many users installed and kept it verses those who installed then uninstalled it… idiots). Which either means my first app sucked dick, is a niche application, or this app was just needed more! You decide!

Images related:

Contact integration copying contacts numbers