Archive for the ‘Art’ Category


Last Night’s IGDA Social

Last night I was finally able to attend one of the local IGDA (International Game Developers Association) socials. I’ve missed the last few because other stuff kept getting in the way. I’m really glad I finally made it to one of the socials last night.

Last night there was a focus on GDC. A bunch of local game developers talked about going to GDC, what they learned, what they liked, what was disappointing. It was neat to get a bunch of different opinions on whether or not the show was worth going to from other Toronto developers.

After the talks on GDC everyone just hung out, had some beers, and talked. I got a chance to meet some really cool local developers last night. It was really nice to be able to talk to some local people who also love making games.

One thing I wanted to mention is that the Toronto Game Jam is coming up very soon! It’s happening May 1-3 here in Toronto. It’s an crazy weekend of building video games at an insane pace. I’d been reading about it, but I met one of the guys who runs it last night and I’d really like to try it this year. There’s some information on their website, but the registration isn’t up yet, though I’m told that should be happening soon:

From last night’s gathering, it seems like Toronto has a thriving indie development scene going on, much of which I wasn’t aware of. It was exciting to meet so many people making games locally.

I also got asked a lot of questions about why I chose iPhone development over console development or PC/Mac development. I was also asked a lot about whether I was going to do a PC/Mac version of Dapple. If you’ve been reading the blog since the start (of which I know there are about 20 of you), then you’ll remember that Dapple actually started as a PC/Mac game. The initial prototypes were all done in Playfirst’s Playground SDK, and the original intent was to release it as a PC/Mac title. It was only after I had a prototype that I enjoyed playing that I decided to try to port it to the iPhone, and at that point I decided to push it out on the iPhone instead.

However, talking about all of this last night got me thinking more and more about porting the game back to PC/Mac. It would be a fair amount of work, I think, unless I went with straight OpenGL. The biggest challenge would be with the art, as all the artwork is sized for the iPhone.

Anyway, I haven’t decide yet if that’s something I’m going to pursue. There’s part of me that thinks it might be a good idea to generate new revenue that way, but there’s part of me that’s yelling “let’s do something new! Let’s do something new!” Then there’s also part of me that worries that if I spent another month or two porting it to PC/Mac, there’s a good chance it wouldn’t make back the investment. I think I need to do more research.

Owen


Meanwhile…

It’s been an exciting weekend, to say the least. I was checking iTunes Connect as soon as I got out of bed each morning, still bleary eyed from having just woken up. I’m not going to post any sales numbers yet, there’s not enough data yet to draw any kind of reasonable conclusion yet. However, I will post some at some point, I promise. I will say that given the fact that I hadn’t sent out any press releases or promo codes until this morning, I was pleased with the sales so far. I’m not going to be challenging the top 10 any time soon, but it feels good to have any sales at all.

I’ve been looking for a good way to track all my app sales data. The best tool I’ve found so far is AppViz. It will download your daily sales data for you and generate all kinds of pretty graphs. My biggest complaint is that the export feature doesn’t really export the data in a useful way. What I really want is a tool that will generate data that I can import into Excel or Numbers and do my own graphing and statistical analysis on. Ideally I want each country to have it’s own spreadsheet so that I can graph individual countries and then also graph total sales. I might end up building my own tool. That just seems silly, though.

As I hinted at above, I spent this morning (and this afternoon so far) sending out press releases announcing the launch of Dapple. I’ve been sending out promo codes to iPhone gaming review sites in the hopes that I’ll get a few reviews out of it.

My friend Jaysen wrote up a great review of Dapple on his site: I, Game Maker. He is a friend of mine, so I can’t say he’s completely unbiased, but I feel like he provides a pretty honest review of the game.

I’ll probably spend the rest of the day finding sites to send my press release to. Tomorrow I need to get back to my 360|iDev presentation. Time’s running out! Oh, and they just released full descriptions of all the talks at the conference on the 360|iDev site. The conference is going to be amazing. If you’re an iPhone developer, at least check out the website and see if you can make it.

Owen


Beta!

That right, I’m prepared to declare Dapple: BETA!

Ok, I do have a looser definition of Beta than most big games companies. In the past, big companies I’ve worked for usually have had a definition that goes something like: “A minimum of X hrs has passed with no must-fix bugs found by QA”. They usually define something called “Dev Beta” as the “First Zero Bug Build”. In my case, since I don’t have any QA, I’m declaring my first zero bug build as Beta.

Basically, I’ve fixed all the bugs that I know to exist in the game. Yesterday I squished a bunch of bugs and I tracked down the last of my memory leaks (Oh Instruments! What a fantastic tool you are for developers!) I must say, the game’s looking pretty slick. (I’m so modest)

Yesterday I also created a game icon for the iPhone home screen and the corresponding 512×512 artwork that iTunes will use. I also discovered something, which is apparently a known issue: if you try to use your big image saved as the “iTunesArtwork” file, that the Apple docs tell you to do for an ad hoc build, it can prevent your app from installing on a device. Spent over an hour last night trying to figure out why my beta build wouldn’t install on my iPod. Turns out it’s because I decided to try to include my new artwork with the build. Well, I guess my beta testers get the game without the fancy new artwork then…

All in all, feeling pretty good about things. Hopefully I’ll submit to the app store by the end of next week, pending any horrible bugs that come up.

I’d feel a lot more like celebrating if a whole bunch of my friends and former coworkers hadn’t just lost their jobs yesterday:

Sorry to end the post on a down note…

Owen


The Problem with Sub-Classing

Yesterday I got all of the non-gameplay related layout changes implemented for 2-player mode. It looks pretty good. I managed to make everything fit on the screen and look good, so I’m happy about that. Today I’m starting to implement the gameplay-side changes that are required, but I’ve run into a dilemma around how to set up the code.

Warning: coding discussion to follow…

This is the way my game is structured at an extremely high level (lots of classes missing from this diagram, but this gives you a general idea of how things work):

Dapple - High Level Classes

Dapple - High Level Classes

Right now all of the information about whose turn it is (in a two player mode) is stored within the GameState class. It stores the users’ scores, levels, etc, and it knows whose turn it is, and who plays next. The problem I’m running into is with the Board.

Right now the board knows nothing about which player is playing. It’s responsible for all of the logic that handles making matches and searching the board for possible matches. For the most part, it doesn’t care about which player is playing…except that now it needs to. In my 2-player mode, both players play on the same board, but each on their own half of the board. This means that all the searching algorithms now need to take into account which side of the board to search, which means they need to know whose turn it is.

This seems pretty straightforward except that the end-of-turn code flow also needs to completely change. When a player ends his/her turn, instead of checking to see if there are any moves left, I need to check if there any moves left for the opponent.

What I’m trying to decide is whether I should sub-class Board into TwoPlayerBoard, or whether to embed the logic inside Board’s functions. Both have benefits and drawbacks. By sub-classing it allows me to keep the two-player logic separate. It means cleaner code for all game modes. However, it also means that any logic bugs in the board would potentially need to be fixed in two classes instead of one. By embedding the logic in the Board it means I only have to maintain one class, but all of a sudden I have all these conditionals in the code for “if (2 player mode) do this, else do this”, which makes things harder to follow.

I think what I need to do is go through all the functions in Board and see which ones need to change for 2 player mode. If it’s less than 1/3 of them, I’ll subclass. If it’s more, I’ll embed the logic.

Phew, I’m glad we figured that out.

Owen


Breaking my Own Rules

Back at the end of November I posted about some new rules I had made for my work-life. Basically, I had said that I wasn’t going to do work, or read work emails after 7:00 PM each night. I had also decided that I wasn’t going to work on weekends. All of that went out the window last week.

As I get closer to submission I’m working more and more. Last week I did several nights of working late and I worked a half day on Saturday, and a few hours on Sunday. I’m already paying for it. I haven’t been sleeping well again. The problem is that when I work late, I can’t stop thinking about work, even when I’m supposed to be sleeping. I end up lying awake at night going over things in my head instead of falling asleep. So I’m not really sure what to do. On the one hand, I need to be putting in this extra time right now, but on the other hand, I do like to get some sleep.

The good news is that by working a bit on the weekend I was able to wrap up the Timed Mode for the game. I managed to put in a bunch of new animations including: a countdown animation when you start a timed game, some beeping sounds when your time’s running out (that get more frantic as you get closer to “time’s up”), and a new Game Over animation that differentiates between losing because there were no more moves and because you ran out of time.

I’m quite pleased with how the Timed Mode turned out and I’m also pleased with how long it took to implement it. It took about 3.5 full days of coding to get it all in and working, with all the new animations, UI, etc.

Yesterday I started planning out the 2-Player mode that I want to add this week. The biggest problem I’m running into is the screen layout. The screen is pretty tight in single-player modes for displaying critical information, but now I need to display info for 2 players. So yesterday I spent a few hours mucking around in image editing software playing with the layout. I think I’ve got something that should work. Now I’ve just got to build it and see.

I’ve given myself until the end of the week (i.e. Sunday) to implement this new mode. That’s about as long as I can afford to take and not risk delaying the project significantly. It feels like I should be able to do it. Here’s hoping I’m right.

Owen