Archive for the 'Networking' Category

It is always fun to try and guess what Apple is going to do next. You can guarantee that there will always be surprises and sure bets, letdowns and magical moments. The Apple rumor sites do a decent job of soliciting leaks, reading between the lines and making educated conjecture. As a developer, I often like to take a good look at where Apple’s technology is right now and make logical extrapolations as to where things are headed. Oftentimes, when Apple announces some new feature or technology it seems obvious in retrospect if we had only connected the dots. Based on 2011′s release schedule, it is a fair bet to say that Apple is going to announce iOS 6 at WWDC sometime this summer and distribute a developer beta. That means that in the coming months little trickles of information are going to get doled out to the rumor sites about what kind of changes and additions we can expect. Just for fun, I wanted to get my own predictions out in the open before any of that started. Here is my very developer-oriented prediction list of what we might be expecting in iOS 6.
UPDATE: WWDC and the iOS 6 beta have come and gone. Some of my predictions now have conclusions. You will notice however that most of the predictions have not yet been updated. That is because there is the potential for Apple to be keeping a few more surprises up their sleeve for the fall when iOS 6 goes GM. Inline below are the results so far.
UPDATE2: iOS 6 GM is here which means that the NDA has lifted! Check down below to see how well I did. (more…)
Posted in 60beat, AirPlay, App Store, Apple TV, Debugging, Game Center, GamePad, Games, General, Hacking, iOS, iPad, iPhone, Mac OS X, Marketing, Networking, Programming, Security/Cryptography, Startup Grind, Systems, Video, Video Games, Web | 2 Comments »
Achievement Unlocked: iOS 5 NDA

In a previous blog post I outlined my need for an iOS server. I had found a sufficient but non-optimal solution for iOS devices running iOS 4.X. I mentioned at the end of that article that I had found an optimal solution utilizing some new features in iOS 5. Now that iOS 5 has gone gold master and the NDA has been lifted I can outline in detail how to get your own iOS server up and running. To review, the three requirements for setting up a server in my situation are that it must:
- Be able to receive push notifications (so it can get it’s work)
- Have it’s display turned off (to save energy and avoid things like screen burn-in/fatigue)
- Require no human interaction (needs to be completely autonomous)
In the previous article I outlined why these were in conflict with each other on iOS 4 devices. However, there is some new functionality and behavior policies that allow all three requirements to be fulfilled.
(more…)
Posted in Cannonade, Debugging, Game Center, Games, Hacking, iOS, Networking, Programming, Servers, Systems | 2 Comments »
AirPlay Mirroring was without a doubt one of the coolest iOS 5 features announced to the public at the 2011 WWDC Keynote. This amazing technology allows you to display the screen of your iOS device on an Apple TV 2. At the moment, the only supported mirroring device is the iPad 2 and the receiving device is limited to only the Apple TV 2. Airplay Mirroring is the latest in a pedigree of Apple media streaming technologies. The previous entry in the family was Airplay Video and is a slightly different technology that allows specific content to be broadcast from a variety of iOS devices and iTunes to an Apple TV 2. The precursor to that technology was originally called AirTunes and is used to broadcast audio content from iOS devices and iTunes to the AirPort Express and Apple TV (either 1 or 2). One peculiar thing that people noted about AirPlay Video was that it was wide open and unencrypted! This was surprising in light of the fact that AirTunes was most definitely not. Because of AirPlay Video’s relatively easy hackability, there quickly sprang up all manner of apps for both Mac OS X and iOS which would act as an AirPlay Video consumer.
So my thought process went like thus:
- AirTunes – Encrypted
- AirPlay Video – Unencrypted
- AirPlay Mirroring – ???
(more…)
Posted in AirPlay, Apple TV, Bugs, Debugging, Hacking, iOS, iPad, Networking, Programming, Security/Cryptography, Systems, Video | 24 Comments »

Top-down view of the Aoren Software datacenter in the living room corner.
Why, you might ask? In my case the answer is simply because it is my only alternative. In development of my game Cannonade there quickly arose a need to be able to replay my user’s completed games and validate the results with exactness. In order to obtain that level of exactness, my games must execute with complete determinism. Unfortunately the implementation of floating-point match according to IEEE754 can actually vary somewhat between x86 and ARM processors. This means that if I replayed a game that two of my users played using iOS devices on an x86-based server, the results of the replay would very quickly diverge. Thus I am left with no choice but to set up a dedicated iOS device to wait for notifications of the matches that it needs to replay and validate (a process I call judging). An iOS server you might say.
(more…)
Posted in Bullet3d, Cannonade, Computer Games, Game Center, Games, Hacking, Indie, iOS, Networking, Performance, Programming, Security/Cryptography, Servers, Startups, Systems | 2 Comments »
Even though many of you already know about my current project (I have also written a few blog posts about it) it is time to officially announce it and give it a quick introduction. The first project that I have chosen to work on since going indie again is an iOS game called “Cannonade”. It is a turn-based physics game with an emphasis on multiplayer and creativity. So far I have the core engine up and running. I have chosen to use the Bullet3D engine for physics simulation because of it’s general support and stability, iOS support and iOS performance. The rendering and effects engine, UI, networking engine and everything else I am writing from scratch myself. I am basing enough crucial functionality on iOS specific components (like UIKit and Game Center) that I can say with good confidence that it is going to be an iOS exclusive (although some parts of the engine may make it to other platforms). It is currently in early Alpha and there is a lot of game design and asset creation left to do. Things are still very malleable and everything is still placeholder (please keep that in mind when playing test versions and viewing screenshots
). I have a comprehensive testing plan, work schedule and timetable which I am hoping will ensure that Cannonade becomes a polished, high quality product by the time it hits the App Store.
(more…)
Posted in Bullet3d, Cannonade, Game Center, Games, Graphics, Indie, iOS, Networking, Startups | No Comments »
One day while I was hard at work a couple weeks ago I hit a really difficult technical snag. I stood up from my desk, let out a sigh and declared to the other person working in the office that “I’ve lost my determinism!”. He then inquired how I had lost my motivation while visibly wondering if I had used the word correctly. Although I had hit a significant roadblock, my determination to overcome it and make progress on my game was higher then ever. The “determinism” of my game however, had been lost. Now I needed to take it back.
(more…)
Posted in Bullet3d, Computer Games, CoreGraphics, Debugging, Game Center, Games, Hacking, Indie, iOS, MySQL, Networking, OpenGL, Programming, Security/Cryptography, Starcraft, Video Games | No Comments »
The biggest problem I see with the current implementation (iOS 4.x) of Game Center is that there is no way for Game Center users to authenticate themselves to 3rd-party servers. Let me explain from the top. Game Center is Apple’s new games oriented social network and infrastructure on iOS devices. It has a lot of great features like leaderboards, achievements and matchmaking. Once a user creates an account on an iOS device they are perpetually signed in at the operating system level. This is great because it means that all existing and future Game Center games can take full advantage of its features, social connectivity and never have to make users create an account (users HATE creating new accounts) or even sign in again (unless of course they explicitly sign out). From the game developer perspective, Game Center is really awesome. There are a lot of developers (myself included) who do not want to have to:
- Create a complete login infrastructure
- Store and handle people’s passwords safely
- Figure out some sort of account confirmation
- Implement password recovery
- Encourage users to start building YET another social graph on your service/game
- Handle other support related support requests
(more…)
Posted in Bugs, Game Center, Games, Indie, iOS, iPad, iPhone, Networking, Programming, Security/Cryptography | 7 Comments »
I actually had a very hard time thinking of a name for this project. Nothing really seemed to fit too well or sound that good. But I needed some sort of name for my new project. You have to call it something… I finally settled on “Razor”. What does it mean? Nothing. What does it have to do with the project? Nothing other than now that is what the project will be known by. After not being able to think of a name for a while and itching to just start coding on the darn thing I just picked the name and it has just kind of settled.
Ok, so what is it? On the Google Code page that it is hosted at I wrote:
Razor is a strategy game engine which is oriented around programming the AI of the units rather than direct control by humans. The idea is that human players compete by engineering the intelligence of the units under their control in order to fulfill an objective. The game world is in 3D and will employ some basic physics. Units, AI, physics models and many other aspects are extensible through a plugin system.
Razor is for Mac OS X Leopard only due to leverage of certain Leopard exclusive features such as dynamic loading/unloading of Objective-C, Garbage Collection and more as time goes on.
This is an idea I have had banging around in my head for a long time. Ever since I worked on an AI lab in college where the final semester objective was to program the AI of 5 tanks to play capture the flag against 5 other tanks controlled by one of the AIs of my many classmates. At the end of the semester the class had a tournament in which the prize was an instant ‘A’ in the class and didn’t have to take the final! My lab partner and I won the tournament and even though we both had As in the class at that point, not having to take the final exam was a big time relief at the end of a very busy semester. Perhaps I will make a blog post on our winning strategy later.
Along with that, I have always loved the great strategy involved in RTS games like Starcraft (which in my opinion is the best RTS ever made). I loved thinking of crazy new strategies that would find kinks in established defenses or play with the psychology of the other players. The only thing that prevented me from pulling off my grand designs was the limitations of my own reflexes. Some people just have the twitch and can bounce from scene to scene, keep everything in their heads at once and make lightning fast and precise mouse movements. But if the Korean Starcraft scene is any indicator, these cyber-athletes like gymnasts have a limited lifespan. Once you hit the ripe old age of 22 your reflexes aren’t what they used to be and some pretty young 16 year old is going to take your spot. What I want in some respects is AI programmable Starcraft.
Now the project is only in its infancy and is nowhere near doing anything of significant interest at this point but I decided that I wanted to get the code into an initial functional state that would at least be worthy of initial check-in. Because the project is open source I will be commenting here about the work that I am doing on it, future feature additions and other issues with great openness and frequency unlike my closed projects.
Below is a screenshot of the Simulation Viewer app that you can build and run right now from the source that is posted on the project page. It is not much but it is a start.
Posted in Computer Games, Games, Graphics, Networking, Programming, Psychology, Razor, Security/Cryptography, Video Games | No Comments »