Montag, 15. August 2011

Bottleship: Awesomium, Client/Server Architecture

I scrapped the Native Client idea, mostly because there is no access to local resources, which makes caching large volumes of data impossible. It would have been fun to just roll out the client to the browser, but apparently it's not ready for prime time yet.

I wanted to embed Bottleship in Chrome, now I'm embedding Chrome in Bottleship - fate is not without a sense of irony, it seems. Doing everything on the OS level enabled me to integrate Awesomium. The windowless embeddable port of Chromium is a commercial solution, but usage is free for indie developers. Wolfire of Humble Indie Bundle fame is using it for his latest game, Overgrowth (Lugaru 2).

Playing around with Awesomium

I'm now doing all 2D UI's in Awesomium, which takes a huge burden off my shoulders, and allows me to write larger volumes of UI in shorter amounts of time.

A more serious use for Awesomium.

Moving on to client and server parts, I picked Node.js for the server prototype, with Redis as a fast DB backend, and possibly MongoDB or CouchDB for archiving content. As the client is written in C++, I'll be using Boost.Asio for networking. I'm not sure what kind of serialization method I'm going to use for packets, possibly either Protobuf or BSON. Initial communication will be TCP, with a reliable UDP protocol to be added later.

If you network coders have any ideas regarding the infrastructure, I'm open to suggestions.

Keine Kommentare:

Kommentar veröffentlichen