[Journal] TinyBlocks

Hello All,

TinyBlocks is a puzzle game where the aim is to push all
the same colored blocks together to advance to the next level.

Arrowkeys = MOVE

Backspace = UNDO

UPDATE: http://mazeland.net/tinyblocks/index.html

I will attempt to make a multi-player co-op game where four
players need to get to the center in order to advance to the
next level.

In case there aren’t four players to play with you will be
given the opportunity to go to the ‘empty’ room and finish
that sub-level so that you can also play the game by your own.

Score will be given for speed and number of steps (lowest is best :slight_smile: )

http://martineijmans.nl/tiny/tinyblocks.jpg

I’m still thinking of gameplay where I might use obstacles that
you need to get rid off and/or give each player the same colors to
work with to have room for more blocks … And/or use different
colored blocks that you need to combine …

Ideas are:

  • Canons / Lasers
  • Holes to avoid / Water …
  • Wind / Ice = Sliding blocks
  • Train that moves blocks for you
  • Only push , no pull
  • Unlimited undo

Best regards from

M.E.

Hello All,

Nothing workable as for now. I’m really struggling with a good php/mysql
framework to get multiplayer to work.
I want multiplayer to get through proxies, firewalls and stuff so I opted for
mysql - php combination with HTTP. I can do a call to this in an unsigned
applet so I think I follow the rules.
The problem I’m having is to keep track of players that either are crashed
or are logged out during a play or enter a room while play is going on.
Does anybody know of a framework in php that can handle lobby/room
players and keep track of them in the rooms? Heartbeat control?!
Or maybe you have a better idea?

Best regards from

M.E.

The obvious way to do a disconnect would be for the client to send a disconnect message when stop() is called.
Other than that, I don’t think there’s much you could do except add a timeout on the server.
If there are clients whose last timestamp is older than for instance 5 seconds, they will be considered disconnected.
It should be easy enough to run a MySQL query where you ask if an int has a value below a certain value
(you can use timestamp or something, but you could simply use a number and calculate the timestamp in PHP).
You could have different flags for different states a client is in: linkdead (perhaps the link could be re-established), disconnected, idle.
Of course upon a real disconnect, you might want to delete the client row from the clients table.

Not sure what you mean by heartbeat control, do you mean avoiding speed hacks?
Well, the client could timestamp all communication with the server, if it is updating too fast the timestamp has most likely jumped too far ahead.

Keeping track of rooms and where in a room a player is can probably be handled using a simple numbering scheme.
By rooms here, do you mean rooms in a four-player map, or a lobby system to start a game?

Hi Sardtok,

Thanks for your reaction.
If there is a network error a stop() would not get through…
So I’m going for a server check with the heartbeat.

Since I couldn’t find a system, I’m building one myself at the moment.
Currently I’m doing this:

each X seconds -> http connection to php script

  • remove playerS from board when there was no
    update on the usertable for x seconds (heartbeat)
  • get the data from the server for the room you are in; since last heartbeat
  • send the data from the user to the server; since last heartbeat
    [ update board ]
    [ keep track of your own moves in array until next server connection ]

The lobby system should give you a list of rooms where there are a free
spaces left. I’m not sure how I want to display this… Propably I will
query the database for the last level you have done and show the rooms that
are on similar levels …
When a player wants to start a specific level and create a new room for it
could be also an option.
Or list all levels and then you can create or enter a room that is on that level…
But it could be that I’m missing the point alltogether of a lobby - room system.

Best regards from

M.E.

Hello All,

So here is a major update.
Just a month of development to go, so I want
to get some feedback on the current status.

Goal: Multiplayer game were you all need to
get to the middle of the board.
You don’t need other players to advance in the
game. All players get the same puzzle, but a
different ‘mirror’ on the puzzle.

You can create your own room when there are
none to select from. Selection of rooms is
based on the level you achieved.

At the moment there are four kind of blocks:

  • playerblock
  • stone-block = cannot be moved
  • finish-block = the middle of the board
  • 'color’blocks
    The object of the game is to push the
    colorblocks to eachother to get them removed
    from the board. Not all blocks need to be
    removed, just the once you need to get to the
    finish.

Maybe later I will let the blocks do some other
things as well, but for the time being it is
just ‘push to match-blocks’

Controls: keyboard-arrows

      Backspace = undo

You can make an account with 3 characters! (tiny-space!)

http://mazeland.net/tinyblocks/index.html

Journal entry:

Game has a scale of 12!

There are 5 main MySQL tables.
users, data, rooms, scores, levels
Controlled by PHP script that gets called by
an URL connection from Java.

The users table has a heartbeat field.
The heartbeat is updated each time a user
gets / receives data from the server.
When a heartbeat gets lost, the player is
removed from the board (rooms-table)

The data table contains all the board-data
and the updates that are done on the board.
Initially the board-data gets copied from
the levels-table that contains the puzzle
to be mirror-copied to the differnt areas.

Scores will be stored, but there is
no list at the moment to get a 'low’score
overview.

When you reached the last level, the next
level will be the first level of the game.

Hello All,

Another update.
Some friends wanted to play against eachother even
when they were not on the same level.
I decided to give the users the chance to select all
the running rooms even if you are not on that level.

Changed levels to have a kind of a learning curve …

Currently there are just fixed number of colors where
the levels are made from. I am thinking of making an
editor where the user can create their own levels using
12 fixed colors from the EGA palette …
The base non-moveable bricks should always be clear
to the user and the white and black are used for player
visibility.
I am still pondering if I should let the background be customized
as well. First, let me try to make the editor multi-user friendly…

Best regards from

M.E.

Hello All,

The state of the game is that I will be unable to
have the features that I wanted in the game.
I had made a developers version with a
palette-editor so that a player can create
levels with their own colors.
I had the game play-tested by one of my friends
and he pointed out that the palette editor
would violate one of the rules: not showing
more than 16 colors from the palette at
the same time.
It is too late in the contest to drastically
change this behaviour so I don’t have
any real thing left.
The previous version just lacks a lot.

Maybe I will be working on this game later this
year, but I will not enter the current state to
the contest.

I enjoyed it anyways and took the opportunity
to use this contest to prototype some of the
game-ideas I have.

I wish all the other entrants best of luck in the
contest!

Best regards from
M.E.