Some are good others are horrible, some should be fucking illegal.
Async. Event Handling
I am responsible for maintaining a lump of patchwork that is considered the mobile web SDK, the idea being that people website owners, or publishers, should be able to incorporate ads into their website without having to bother learning some new bullshit and without having too much complication, and above all else we have to make sure they are trafficked and tracked appropriately – they should be kept out of that. I am a firm believer in in-sourcing projects that are important to your business, and so here I am.
About two and a half months ago I agreed to come back to the FA:S team, to help sort out the state of things, get a programmer back into the ranks and help shove the project out the door. The first few weeks were pretty good, exploratory research and all this, but as you may have guessed – much has changed and of those things that have changed I am not happy with much of it. Part of the problem of having closed doors is that no-one sees in, no one can comment and those that are inside get a jaded view of things.
Firearms is no outlier in that regard.
Over the last 148 weeks there were many plans, many ideas and many other implementations that lead the team to its current state, most of which has been for not. The game has evolved into another silly CounterStrike clone, albeit with more accurately animated weaponry and push gameplay. They also went through a gungame phase where the project took a wild bend for the comically tragic.
When Projects get this old, Firearms has been in development on the Source engine for nearly 10 years under many different managers and teams, so it has had a number of incarnations that have come and gone, each slowly pulling away from the original. To be quite frank, it feels like the first time I played Halo 2, where the health/shield regen thing became the norm to speed up combat and get people to use cover. The shock to the system has been tough to understand but it is not difficult to see why.
Many players may be aware of the news posts and updated UI screenshots and such along the way, but very few people played it that were not testers, and when you have the same 30 people playing a game over and over without the target audience getting ahold of it, the gradual changes to damage values and hit box multipliers start to add up.
We are currently narrowing in on a releasable state, with guidance from Vinnie, myself and a couple other key members, but the technical front is always going to need work. Our release is going to be used to test and see who is interested, hopefully a lot of people, hopefully they will forgive our tardiness.
In between running tanks in World of Tanks, trying out mods in Minecraft, and of course working… BetterTech has been evolving, although definitely not in the beauty department. As with most everything, the devil is in the details.
I have also started work on agents. Agents are the dudes that do all of the work in BetterTech, ultimately you are an agent. Your job is to do whatever you choose, as discussed earlier. The other agents in the game request jobs, queue them up for the day and go execute the work needed. Currently the only job types that exist are delivery – raw goods are requested by job sites, and the delivery agents move goods between the two points, receiving a nice tip in the process. In the next iteration more jobs will be included.
Funny things happen in the course of piecing together solutions in this field. Programmers have a tendency to throw their hands up in the air when they get to the end of a week and they can’t quite figure out a concept, and the problem is compounded when looking at programmers who don’t take the time to actually learn the new idioms of a language before getting into the position of writing production code.
Go ahead, look at the documentation for this function. For those of you who don’t like to follow links, you would be looking at the documentation for a function attached to any html5 video element. It accepts a mimeType, a set of codecs and well… here is the the rub. What would you expect it to return?
I expected a boolean. The guy who worked on this problem before me tested it as though it were a boolean…
if (video.canPlayType(mime + ";codecs='" + codec + "'"))
In fact, after polling the friends around me, every single one of the 15 people I have asked expected the same. In reality it returns either “probably”, “maybe” or “”. This is probably the most non-committal function in the history of time.
Further, imagine my surprise when I opened Safari up, yes I’m on a mac, and passed it 20 different combinations of videos and codecs, all of them return something odd – “maybe”. Not only did this happen for mpeg, which is absolutely supported, but it also returned maybe for wmv and avi files, which were absolutely not supported. I can only hope that this function works better on the iPad/iPhone and Android devices.
Until then, I’m going to be using something else.