In the following I'm going to describe problems I stumpled upon while porting a game based on the orx engine from windows to the ipad.
You could create your own project and link the orx library. But I would recommend just to use the XCode project that's part of the orx sources. It already contains a sample project and has all the necessary compiler settings set. If you choose to compile orx as a library and link it to a custom project make sure to create a fat library that contains binaries for both the simulator (x86 architecture) and the device (ARM architecture).
There are different ways in which you can layout your project. If you've worked on Unix systems you probably separated all binaries from the config and other data files. Maybe it looks like this:
bin/somexecutable bin/someexecutable.ini cfg/config.ini data/pic1.png data/pic2.pngIt's now important to know that you can not do this on the iOS platform. Your executable will always reside in the root folder. So once the game is copied to the device it will look like this:
somexecutable someexecutable.ini cfg/config.ini data/pic1.png data/pic2.pngAs all the paths are relative to the executable you have to change all the paths both in the config files and the sources. It's not that big a deal, you just have to be aware of that fact.
The hierarchical file structure can be used on the iOS platform as well. To do so just drag your data folder into your XCode project. Check that box that says “create references to folder…” or something like this. Now your data folder should appear blue inside XCode. Furthermore it will be added to the “Copy Bundles Resources” build phase.
By default a game based on orx is displayed in portrait mode on the ipad. so in order to have a landscape mode do the following:
Now the application is running in landscape mode. Meaning that if you for example connect a projector the game will appear in landscape mode on that one. Note however that the game itself is still drawn in portrait mode. In order to overcome this you have to do some tricks with the camera. Basically you have one camera rotated by 90 degrees that's not being used directly and one camera that is -90 degrees rotated and used to place UI elements relatively to a camera. The latter camera will not be associated with a viewport but have the “real” camera as a parent. the config will in the end look something like this:
[Display] ScreenWidth = 1024 ScreenHeight = 768 Title = FancyIPadApp [Viewport] Camera = Camera BackgroundColor = (153,153,153) ;Camera for UI positioning (meaning positioning objects relative to the camera) [[email protected]] ParentCamera = Camera FrustumWidth = 1280 FrustumHeight = 960 Rotation = -90 [Camera] FrustumWidth = 960 FrustumHeight = 1280 Rotation = 90 FrustumFar = 1000.0 FrustumNear = 0.0 [SomeBGImage] Graphic = BGGraphic Position = (0, 0, 0.0001) ParentCamera = UICamera UseParentSpace = position Pivot = center