As I’ve mentioned before I’ve been actively pursuing contract work for Stormtap. I’ve bid on 3 projects on Elance, and a couple of projects on rentacoder.com. On one Elance project I came close but was under bid by a firm from India (by a couple of hundred dollars). I’ve also done a few proposals for people that have approached me directly.
On Elance I’m noticing a trend. People are posting jobs for apps that have roughly what I would estimate as about a month’s work for 1 skilled iPhone developer to build, and then setting the budget for these projects at between $500 and $1000. When they do this they’ve obviously eliminated bids from all but development companies based in India, Pakistan, Singapore, China, and all the ex-USSR countries. I’m not opposed to this, or complaining about it, but I’m wondering are they really able to develop things this cheaply? Or is something else going on?
Here’s an example. On Elance today I saw a post where a client was asking for an app where “The vision is for it to have a very similar look and feel as WallStreetJournal.com’s mobile reader.” I read all of the description for the app’s features, and yeah, they want everything that’s in the Wall Street Journal app. They even want to integrate Twitter, and let you email the blog posts this app would feed to the customer from their website to friends. Oh, and the ability to save posts to the device. I’m thinking “whoah, maybe a big project worth bidding on” when I look up at the budget, and there it is “Between $500 and $1000″. Obviously I need to switch the order of what I read on these posts. I keep wanting to get to the juicy part where they describe the cool app they want built.
What’s going on here? I’m certainly not the best iPhone developer on the planet, but I know I’ve got it figured out well enough that given the proper amount of time I could duplicate the Wall Street Journal app. But for $500 to $1000? So I think people can’t seriously think this is something that can be done. I scroll down and what do you know already 4 bids: Russia, Romania, Pakistan and India. All I can think is that these guys must be doing bait and switch moves on clients. They must be getting the client so invested in the project that they get part done, and then the client’s deadlines are coming up and they’re forced to pay more and more to get the final product they described. That has to be what’s happening… Otherwise being a North American consultant with North American bills that need to be paid is not a viable option.
So far I’ve really enjoyed the design of Cocos2D. The class hierarchy is awesome for an open source library. The game engines, platform APIs and what not that I’m used to working with have traditionally been just big wads of C function calls with big structs full of parameters passed around all over the place to keep track of in order to do what you want (Sony PSP memory card API anyone? Yuck!). Oh sometimes we’ve kidded ourselves, and tried to get all fancy C++ all up on our codebase, but usually this just amounts to a crapload of singletons so instead of calling a C function you call Singleton.C_Function. Big whup.
Cocos2D is very well thought out hierarchy-wise. Each step in the hierarchy seems to do exactly what it needs and nothing more. When you go to find functionality it’s usually in the first place you think to look. When you go to extend functionality you often either find an extension already exists in the library, or you’ll find someone has posted it on a forum already (e.g. someone posted a nice extension to CocosNode that makes a composite node that updates contentSize to reflect the dimensions of all the children added to the node, nice for objects with multiple parts like my character).
My problem right now is I’ve taken this nice base, then in my haste not really kept up with the spirit of things. I decided each level in my game would be a class that inherits from the Cocos2d Layer class. Then I was being all smart and I thought I’d make a nice “base” game level layer class they could all inherit from and get all the common stuff in there. Unfortunately this base class has turned into a huge dumping ground for 80% of the game’s work. Boooooooo.
I should have known better, but old habits kick in. This particular habit gets painful when editing in Xcode though, unfortunately XCode isn’t as awesome as Visual Studio for navigating around without searching for stuff. I’m used to Ctrl-K bookmarking and the other Ctrl->whatever key (I forget now heh, I think Ctrl-N) to go from bookmark to bookmark. This saved me countless minutes each day zooming around my code. The best I can find in Xcode is Cmd-D to bookmark something, and then Ctrl-4 to pop down a list of the bookmarks I’ve made which I then have to cycle through. Better than nothing but not nearly as fast as the Visual Studio system.
So. I’ve got to break up this monster class, which will then have many benefits large and small.
Articles like this one written to scare us small developers, and just my own experience watching my apps I worked hard on dwindle away to piddly sales have shaken my confidence in developing my own products. I change my mind daily on whether it’s a good idea, but I keep working hard anyways despite all the nay saying.
I will need to build up some money though to pay for art and sound for the game I’m working on. Art I’ve got covered pretty much, but sound for sure I’m going to need some cash. So I’ve been checking out elance, and rentacoder.com (as well as bidding on projects listed elsewhere such as mobile orchard’s new job post section) looking for the right fit. I will bid on an elance project today, mostly just for the experience to see whether it interests me to pursue that kind of work further. In the end some dollars refilling the bank will make a big difference in how good the game ends up being. The better the art and sound in the game, the more likely it is not to dwindle away to nothing.
I’m trying to figure out how to get simple spring physics to work for anchoring to platforms and while I’ve got something spring-like happening, it isn’t quite a spring yet heh. If anyone reading this has a reference to a nice spring physics code sample I’d appreciate a comment with a link or two.
Right now my guy just goes flying off the screen. So I’ve got to play with the numbers and just see if it’s tuning, or whether I messed up the formula. My bet is formula.
All I want is a simple spring where I can calculate a per frame force to apply to the objects connected by the spring, as well as be able to figure out when the external forces acting on the character would break the spring. Essentially I want to duplicate the Aegeia spring I was using in Unity.
Well today I will finish the last bits of the conversion to 2D / Cocos2d from Unity. The big remaining thing is anchoring onto the platforms with the character’s arms, which could be a pain in the butt because I believe the joint logic in Chipmunk that comes with Cocos2d is still early work as I read in the notes in the Chipmunk manual that joints seem to be the focus of his next version.
My artists are telling me they should have a bunch of art for me by Monday. So I’m anxious to get that, hopefully I can put it all in and have something nice to show here next week.
