So I spent yesterday evening porting the Bottleship codebase to Native Client 0.5, which wasn't too hard, considering that the naclports project has already ported the most important libraries, such as SDL, Lua and Boost.
Native Client's 3D accelerator API is going to be GL ES 2, which doesn't provide a fixed pipeline, so I had to write basic shaders to get my pixels back on screen.
Unfortunately, a bug that prevents NaCl running on systems without enough consecutive unfragmented memory (1 GB) makes it hard to continue testing.
So I'm going to write a bit about the specs I had in mind instead.
Every player will need to get a personal account, which is password protected. Early players will be invited, later on viral invitations are possible, and at some point we'll require a small one-time fee to register an account, so we can keep the spammers and troublemakers at bay.
When the game starts, the player logs in with her username/password. If this is a recurring visit, the player will resume the game where she left off. If this is her first visit, she will start off at the Ego, a place which acts both as her administrative world and her in-game menu.
The player sees worlds from a first person view by default. The move controls require a combination of mouse and keyboard. The player is able to move freely within three dimensional space, as if diving in deep water. By default, WSAD maps to forward/backwards/left/right, Q and E are up/down, and the mouse controls the view direction.
From the Ego, the player can create, visit, rename and delete her Trooms. Trooms represent separate worlds, which can be built and edited by the player. The name stems from the German word for dream, "Traum", which contains another German word, "Raum", which means "Room".
Every newly created Troom is both infinite and empty. The player is confronted with a blank world that asks to be populated with the players inventions. The player can now conjure things into her Troom, using the Imagenry and her Palette.
The Imagenry is the ark of ideas, located within the players Ego. It presents itself as a large room, in which the player can store one copy of every thing that she has created, invented or encountered. In the beginning, the Imagenry contains only a gray 1x1x1 cube, and a Vanifier.
The Palette is a surface located at the bottom of the players screen, which acts very much like a painting palette. Initially, the Palette is empty. The player can visit the Imagenry any time and add things onto her Palette by clicking the thing she would wish to add with the left mouse button.
In her Troom, she can then click anywhere with the left mouse button to use the thing currently selected on her Palette. Using the mouse-wheel, she can cycle the currently selected thing on her Palette.
When the gray cube is used, it will conjure a copy of itself at the position that the player is pointing at. If the player is pointing at a surface, the cube will stick to the surface. If the player is pointing at another cube, the cube will perfectly align with the other cubes surface.
The Vanifier looks like a laser gun and works like an eraser. When the player points at something and holds the left mouse button, the Vanifier will shoot a ray towards the object, and the object will begin to glow red. When the maximum intensity has been reached, the object will implode, explode or simply disappear. If the player keeps holding the button, the charge time will gradually reduce, and subsequent objects can be erased faster and faster.
Whoops, dinner is ready. More later.