Caster for webOS

October 6th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

Want to buy Caster for webOS? Click Here

Caster History

Much like Amit Singh and his Hanoimania, I regularly attempt to port my friend’s game Caster to as many platforms as I can. Because of some good language and API choices upfront (C++, OpenGL 1.X, SDL, etc…) the Caster codebase is very portable. That portability combined with its relatively humble (for these days) performance needs has lent the (currently still unified) codebase to easy porting. This multi-platform journey began many years ago before Caster was even released. Caster was still in early development when Mike approached me with the idea of maintaining a concurrent Mac build. At that time Macs had not yet moved over to x86 processors and so the most difficult part of the process was reverse engineering Valve’s Half-Life model format (which Caster uses for animated character models). The Half-Life model format was a binary, in-memory format utilizing offsets which meant that while loading it was quick and simple (just read it into memory, no processing whatsoever) it was unfortunately dependent on little-endian byte order to work. Other than that and a couple of other issues, the Mac port was really straightforward. So before release, Caster was solidly supported on both the Windows and Mac platforms. After release another guy helped out with the Linux port of Caster and so at that point we now had the major desktop operating systems covered. Over the years we added slightly different versions for the desktop platforms to adapt them to specific distribution avenues like Steam and the Mac App Store. The first port that required major reworking was iOS. That adventure was chronicled in my post Caster for iPhone: A Postmortem. Mike and I had the opportunity to give a presentation about what we learned at GDC Austin ’09. Later on as the Android and webOS mobile platforms took shape, I started to look into porting Caster to those platforms as well.

Adventures in webOS

About a year ago I was able to get a hold of a Palm Pre from a friend and so I started poking around the webOS PDK (Plug-In Development Kit). Unlike iOS, the primary development environment for webOS is (duh) web-based and not suitable for high performance games. However, through the webOS PDK you can write C-based programs that utilize OpenGL and other libraries much more suitable to game development. I was able to leverage a lot of the work from the iOS and Linux ports and within a day or two I was able to get a working version of Caster up and running using the PDK. Hardware-wise the Pre is somewhat similar to the iPhone 3GS in that it has an A8 CPU and PowerVR SGX530 (as opposed to the SGX535 in the 3GS). This fact made it easy to just reuse all of the carefully optimized assets we had worked on for the iOS port. There were some things like the PDK touch APIs that needed a bit of reworking but it was pretty straightforward. I considered the port to be 98% complete but there were 4 show stoppers and general performance issues that prevented me from releasing it to the webOS App Catalog at that time. I had suspicions that my issues might be resolved in a future version of the OS and so at that point I decided to wait for the next webOS update and then re-visit the port. Unfortunately I was already running the final version of webOS released for the Pre (1.4.5) and so I put the unfinished port on the shelf and went on to other things.

Throw Hardware At The Problem

Fast forward to a week ago. I was able to procure some newer hardware (a Pre2 and a TouchPad) that would allow me to test the Caster codebase on webOS 2.X and 3.X. I had hopes that the newer versions of webOS would resolve some of my show stoppers. Fortunately they did and I was finally able to finish up the port that I had started a year ago. Caster now runs really smoothly on the Pre2 thanks to the updated OS and a CPU clocked significantly higher than the original Pre. Caster also will run on the HP TouchPad in a manner similar to how it runs on the iPad. Performance on the TouchPad is somewhere in-between the iPad 1 and the iPad 2. Getting the year old port to work on the Pre2 was a piece of cake seeing as the hardware was very similar to the original Pre. The TouchPad had some interesting differences (outlined by Palm here) which actually made it more like developing for a desktop platform than a mobile one.

One More Down, Many More To Go

Another platform under the belt. About a day or so after submitting Caster to the HP App Catalog it was approved and went live. It was definitely a fun exercise to develop for webOS. One thing I loved about PDK development was that you have gdb directly on the device. That and the ability to ssh as root on stock hardware + OS made debugging a lot of things a snap. Over a year ago I also started a port of Caster to Android using the Android NDK but for various reasons it has not yet been released. One of these days it will get completed. Maybe not before the Dreamcast port though πŸ˜‰

(a year and a half ago I did actually get a Dreamcast build of Caster to compile, link, launch, execute and display a simple quad onscreen)

48 Responses to “Caster for webOS”

  1. VasiliyRS Says:

    So Dreamcast port is officially under development ?

  2. snielsen Says:

    Well, not currently under “active” development but the initial work of getting the codebase up and running with a homemade toolchain is done. I really wish there was a more friendly, pre-packaged toolchain that I could use instead though. Things are pretty hit-and-miss right now. That said I would like to find some time in the future to work on the Dreamcast port a little more πŸ™‚

  3. Chill Says:

    Well, any hopes of expansion for caster on Webos?

  4. snielsen Says:

    Mike (the creator of Caster) has future episodes planned out. When they are ready for release they will come to all Caster platforms (Mac, Win, Linux, iOS, webOS) nearly simultaneously in a free update πŸ™‚

  5. Steve Says:

    What is the hold up on Android? I’m not trying to bash on WebOS, but it doesn’t seem to have a very good future.

  6. snielsen Says:

    So I procured a Nexus One (Android 2.2) and started the Android port around the same time as the webOS port (summer 2010). I worked at the Android port for about two weeks but the progress was so slow and painful that I wasn’t having any fun. So I sent the hardware up to Mike in case he wanted to finish the port himself. The specific issues I had at that time that made things so unenjoyable with the NDK (revision 4b at that time) were:

    1. No apk file access. This completely baffled me. The workaround people used was to have Java copy files to the SD card(!?)
    2. No STL implementation. Found a portable version and hacked it together but not everything was working.
    3. No touch event access. To get touch events I had to pass them across this super unreliable/high latency Java->C barrier.
    4. No functioning gdb. They said that gdb support was in place but after pounding on it for 3 days it still didn’t work.
    5. Super unreliable Eclipse integration. Half the time stuff just didn’t work. Made development no fun.

    I wasn’t blocked on any particular issue. I was slowly churning out hacky workarounds for things that should have been in place from the get-go but it was just no fun at all. So the short answer is that the Android NDK was unusable for real development at the point in time that I started the port. That said, I am aware that later revisions of the NDK specifically addressed issues 1, 2 and 3. I suspect that general quality and reliability has steadily gone up since a year and a half ago and developing with the NDK is probably a much more enjoyable experience now. Mike has the Nexus One at the moment (actually using it as his phone) and so if I were to be able to procure some Android dev hardware again I would actually be pretty excited to revive the port. Any donors to the cause? πŸ˜‰

  7. Anthony817 Says:

    Wow! This game looks amazing! If you port this to the Dreamcast I will give you free advertisement! Please make this happen! We are lacking 3D games in the Dreamcast indie library as of late. Nobody makes the anymore. Sure, we get Shmups every year, but something like this is just what the Dreamcast needs!

  8. Hardak Says:

    Dreamcast! Dreamcast DREAMCAST!

  9. Jack Says:

    PLEASE!!!! Do a Dreamcast port, would be incredible. Game looks great! Keep it up!!!

  10. Inazuma Says:

    Please release this game for the Dreamcast on physical media. If it’s a fun game, I’ll buy it. I love supporting high quality homebrew games for retro platforms. Thank you.

  11. Paul Says:

    Physical Dreamcast release? I’m there!

  12. Bryan Says:

    Please port this to the Dreamcast we need another new fresh game. The screen shot look pretty sweet!!

  13. Scofield Says:

    Looks amazing, and would look way better playing it on my Dreamcast!

  14. snielsen Says:

    Wow! What a great outpouring of support for one of my favorite platforms πŸ™‚ You have inspired me to dust off the old port and re-asses where it stands. So I spent all day yesterday revitalizing the port and trying to see what it would take to make progress on it.

    I am still able to get it to compile and link (with a lot of pain) and I can still get the codebase to execute within lxdream (an emulator). Last time I got as far as being able to get a colored quad onscreen. This time I was actually able to get a little farther and was actually able to get a textured quad to display!

    Unfortunately I wasn’t making progress very quickly. KallistaOS and the toolchain while awesome, are behaving quite erratically (especially OpenGL and the filesystem), at least inside the emulator. I am not sure to what degree things would be different on actual Dreamcast hardware but I don’t have a Broadband Adapter to load code with. I would love to be able to debug things better and develop on actual hardware.

    My conclusion from yesterday’s session was that at the rate of progress I am making with my current tools I can’t justify the time commitment right now. However, if I was to get better tools (anyone have the official SDK?) or if someone more experienced in Dreamcast development would be willing to devote some assistance I would consider putting more effort into it. Long live the Dreamcast πŸ™‚

  15. Anthony817 Says:

    Hey thanks for the quick reply! I played your PC demo last night and got lost in it for hours! It really is an absolutely amazing game. I say its a lot like Mega Man, Sonic and Crackdown games all rolled into 1 but still something completely unique and original.

    KallistiOS isn’t as powerful as we had hoped for 3D games. There is a new developing environment in the works called CubicVR 3D engine. It appears to be pretty amazing for 3D games too.

    Here is the Dreamcast thread. The developer said that he will start working on the Dreamcast port now that he received his Dreamcast SD adapters in the mail.

    Here is also a video of the engine running.

    If you wanted, you could use the Windows CE SDK, but you might not be able to sell your game then as Microsoft don’t license out the SDK any more.

  16. Anthony817 Says:

    Sorry forgot about the videos.

    Here is one from 2 years ago, and it is pretty basic but you get an idea of the graphics.

    This is a PC demo of the engine, and the shaders are a little higher than DC can handle but they want to get this vehicle demo ported over too.

  17. VasiliyRS Says:

    Using official SDK will be illegal… You dont need Broadband Adapter i’d suggest you to use dc sd adapter instead or coders cabel.

  18. Ravo Says:

    Are mods supported on the touchpad version?

  19. Adam Says:

    A Dreamcast port of this game would be absolutely amazing – I would definitely buy it!

    As for using the DC SD Adapter for debugging, wouldn’t the low transfer rate of the serial port be a problem?

  20. snielsen Says:

    @Ravo For the time being only the Windows, OS X and Linux versions support mods. Most of the community mods that desktop Caster ships with don’t run too well on the mobile platforms. That and engineering an easy to use mod debug/import system would be a significant amount of time. I wont say that we wont consider it for the future though πŸ™‚

    @Adam Yea, if I were to debug on actual hardware I would want the speed of the Broadband Adapter.

  21. VasiliyRS Says:

    serial port speed that sd adapter uses is enough to run many big commercial games like this so i think it is good for development.

  22. Anonymouse Says:

    Id love to see a Dreamcast release. You will get much love and support from the community if you do. the Dreamcast is very much alive πŸ™‚

  23. bacardipr05 Says:

    A Dreamcast port will be a welcome addition. There are many Dreamcast loyalist out there probably more than some people realize. Any new game especially a game that isnt a shooter will be great. Not that most of have problems with shooters, just it would be different. I dont know much about the SD Adapter thingy myself, however if the game comes in this form something new for me to learn lol. Thanks and keep up the great work DC4EVER.

  24. Hergen Says:

    Wow, Caster looks awesome. Count me in as a buyer of a Dreamcast Port. Keep up the great work!

  25. Omnibot2000 Says:

    Thousands of Dreamcast Fans are eager to play something different than a shooter. Personally I’m very much looking forward to playing STURMWIND, but I guess many of the community are indeed hungry for something else. I think physical releases of Hypertension AND Caster would sell big time. I would definitely buy both.
    Snielsen, do you think a Dreamcast port of Caster would look as stunning as the PC Version? The lighting effects are great. Would this quality remain? Do you expect any hardware limitation related problems?

  26. bacardipr05 Says:

    Omnibot i dont foresee hypertension coming out anytime soon. They decided to rebuild the game up again so im expecting we wont see this title yet again for at least a minimum of a year. I echo your other sentiments though im looking forward to Sturmwind myself. However, something other than a vertical/side scroller space shooter would be an almost instant hit on the DC. I know we have Gunlord but that game has essentially Super Nes graphics on it. Even still it generated a lot of buzz in the DC scene.

  27. Omnibot2000 Says:

    I hope Hypertension will release at all. I like their idea to replace the former 2d objects and enemies with low poly 3d models. That decision made Hypertension interesting for me. I don’t need a FPS with Doom like graphics on the DC.
    Caster is different. The trailer looks outstanding and even if I am not able to try the demo on my iPad, I almost FEEL the unique, fast paced gameplay while I’m watching it. I really hope that

    1. There will be a port and

    2. that the quality of the visuals (lighting, textures, Draw distance) will be similar to what is shown in the trailer

  28. snielsen Says:

    @Omnibot2000 Speculating as to the image quality of a potential Dreamcast port, I would suspect that it would be fairly similar to the iOS/webOS version. The codebase was originally written targeting OpenGL 1.1 and does all the effects in fixed function. There are some effects that are in the PC version that are not in the iOS/webOS version like true reflection, the view warping weapon effects and (optional, hidden setting) cell shading. I don’t think the iOS/webOS experience suffers very much to not have them though. Caster is not extremely demanding so I would expect both performance and image quality to be pretty good.

    I have ordered an SD card adapter so I can see if there is different behavior in the code on actual hardware (I don’t have a computer with a serial port so that rules out the coder’s cable. Not quite ready to plunk down the money for the broadband adapter). If binaries built with KallistaOS run more stably on the actual hardware that would be very encouraging. It would be great if I could make some more progress on the port. No promises at this point on an end product though πŸ˜‰

    My biggest issue is the quality and stability of the known OpenGL implementations for the Dreamcast (kos gl, kos-ports glx, any others?). Are there any significant Dreamcast OpenGL homebrew projects out there? Any pointers in that regard?

    @ Anthony817 I took a look at CubicVR. Looks like an awesome project! It appears to also be built on OpenGL. Maybe they will run into the same kinds of issues I am having πŸ™‚

  29. Omnibot2000 Says:

    Thanks for your quick answer! I’m no coder or specialist in programming, so I googled “dreamcast opengl” and found this:
    Is this helpful at all? It is nice to hear that you ordered a SD card adapter. I’m sure at least this will be useful.

  30. Omnibot2000 Says:

    Sorry for my unqualified comment. I hope there will be a nice Dreamcast port (reflections would be great but I wouldn’t miss cell shading) and it will be a big success.

  31. Anthony817 Says:

    Well, I think there is something else that was just ported over called bennugddreamcast, I believe its a Fenix environment and will have 3D support too.

    If this pans out I think I’ve found your answer. πŸ˜‰ It has only just been ported for about a month or so, and they have a little more to impliment but the 2D stuff is pretty nice looking so far.

    Here are some pictures of the 3D OpenGL renderer. Not on Dreamcast hardware but you get an idea of it.

  32. Anthony817 Says:

    Omg dumb me again, accidentally pressed submit and wasn’t finished typing.

    This has support for the OpenGL 3D renderer (currently in beta) based on the Irrlicht Engine that also provides an advanced physics engine.

    Also the guy porting it said when the environment is fully ported over 100%, he will try and get the Yeti 3D engine working on Dreamcast.

    It looks like 32bit gfx though.

  33. Panos Says:

    PLEASE a dreamcast PORT!!!!!!

  34. DreamcastFan Says:


  35. Anonymouse Says:

    I think a Dreamcast port would be really nice. Id buy that.

  36. snielsen Says:

    Aright, so the SD Adapter FINALLY arrived and I have done some initial poking around but haven’t really dug into it yet. It took me a long time to realize that DreamShell doesn’t have the ability to run naked .bin files and I need to package things up into a sdiso file to get things to work. I was able to get some homebrew to run and that was pretty encouraging. It sure beats fumbling around with burning discs that’s for sure. I will try to find some time over the holidays to package my Caster .bin up into an sdiso and see if I can get it to execute on the hardware.

  37. VasiliyRS Says:

    Hi, if you need just binary loader and if you have another spare dc to waste for 1mb data there is a binary loader

  38. Hardak Says:

    I will follow the progress of this until it’s release on the Dreamcast!

  39. demonoidtentacle Says:

    I’d pay good money for a physical copy of this for the Dreamcast. Extra points in physical presentation is done well! πŸ˜€

  40. Supporting the DC Ports! Says:

    I would love to see a DreamCast port of this game! I’ll put my $ up for a CD release of this right now.
    This game looks awesome!

  41. Hergen Says:

    You should call it DreamCaster πŸ˜‰

  42. KC Says:

    I would REALLY like a Dreamcast port of this game! It looks amazing!

  43. David-Japan Says:

    ItΒ΄s gonna be really great to see on Dreamcast!!
    Please make this happen!!

  44. Reich werden Says:

    So Dreamcast port is officially under development ?

  45. snielsen Says:

    @Reich werden It is not officially in development, but I do plan on putting work into bringing up the codebase so that it’s functional on Dreamcast hardware when I get some free time. So far the results have been mixed as to whether it will become a reality, but every time I take a crack at it I do get a little farther. Last time I worked on it I was able to get a simple, textured quad on screen using stock Dreamcast hardware and the SD adapter.

  46. bacardipr05 Says:

    Sneilsen you rock and you are my hero if you get this on Dreamcast. Either way you rock though….!!!

  47. Hergen Says:

    Are you working on a Dreamcast-Port?

  48. snielsen Says:

    @Hergen I have had to put the port on the side as of late to concentrate on other projects but I hope to find the time to pick it up again sometime.

Leave a Reply

Entries (RSS) and Comments (RSS).