Archive for the ‘Technical’ Category

HalmaStar Screenshots #0001

Friday, February 27th, 2009

Liudas induced. I thought a little bit. Just a little. And decided that I need. I need to publish the present progress of the game. When I am rich and famous, I will send a link to my grandchildren by telepathone as a joke so that they knew how everything had started. They’ll say: “Wooow, Grandpa! That’s a greatozer! Haven’t you really got any 4D games those times!?”

So I am producing an online Halma à la Chinese Checkers. Everything looks like this at the moment:

HalmaStar Screenshots #0001 - Madrid

That pink wallpaper is not a design element, but a layout grid and all elements of the page should be aligned to it. The star of the original version of the game is like in this image (the row of the corner of the star consists of four balls), but the star of my game can theoretically be of any size.

HalmaStar Screenshots #0001 - Vatican

The amount of boards will be limited. So:

  • The probability of several people playing at a board will be larger than of two players.
  • The system won’t use too many resources.
  • The player will feel like in an own inner circle.

I am just programming at the moment, but later I will need to integrate some design. I have an idea. Listen! Every board will be in a planet which is called the same as a capital of Europe, and you will see unique elements which identify the capital in the background, i.e.: Brandenburg Gate, Gediminas’ Castle, Eiffel Tower, Thames Gateway Bridge, and others. For example, the boards shown above will be presented as the planets of Madrid and Vatican respectively. The players will have avatars wearing cloths of the same color as their playing pieces. The avatars will stand in different sides of the planet. So the funny logical game will get the feature of identifying yourself as an avatar and also it will spread information about the identity of the city (and also country). I see a perfect medium for in-game advertising in my visions (i.e., posters in the city of the planet, special tees for avatars, or logos integrated into the background of the site).

Look, what prototype I scribbled:

HalmaStar Screenshots #0001 - Graphical design prototype

I haven’t decided yet what is better – photorealism or symbolism. Do you have any ideas? Or would you like to create a professional page layout for the game site? Whereas I myself will devote all my power to the stability of functionality (with and without Javascript), the standards of semantics, the technical implementation of the graphical design, and additional features.

How to Finish

Tuesday, February 24th, 2009

The tips by Juuso Hietalahti how to finish a game as soon as possible, made me feel guilty. I have been developing, finishing, and then reworking a simple online game already for a few years. And I still can’t make an end of it. But then it appears you should only follow 21 points to achieve the target. Damn! Instead of reading such lists, I should rather go programming.. :D

Sunday Celebration: Adventures in the Dark

Sunday, February 22nd, 2009

Neverending Light is probably my first ever-played Flash adventure game of that high quality. It’s short, but worthy of great praise. There is a tour in dark dungeons. Suddenly excursionists are attacked by monsters.

Neverending Light

I like a lot that player’s emotions are manipulated. In the beginning the main character is a part of community in a friendly atmosphere which is created by comic dialogues spiced by intimacy (the game was sound-recorded by 4 professional voice actors). Suddenly the main character is left alone in an unknown place, where monsters are getting out of dark corners. Fear, panic, and helplessness are created by twilight, limited visibility, and interjections. The mood is strengthened by lively animation and mysterious music with a tragic nuance. A little later while rescuing a friend, her moan creates pity, care, and determination. The script is well written. The control of intensity is well balanced.

The area of the game is seen from above. The movement of the avatar is controlled by arrow or AWSD keys. One can aim by the mouse cursor. While wandering in the dungeons, one can collect sprites of light for which biographies of the characters and a special deleted scene will be uncovered when the game is finished. After checking all the corners, I found just 44 sprites out of 49 what might mean that there are some hideouts. In addition, I like the menu function “Be Awesome!” very much!

The are some minuses too. The plot is lineal and the possibilities of web are not used at all, therefore you won’t want to replay the game when you complete it once.

Neverending Light is the first part of a trillogy. I’ll wait for the other ones.

Sunday Celebration: Constructions not only for Engineers

Sunday, January 25th, 2009

Tonight after breakfast and dish washing for the whole last week, we are solving “Fantastic Contraption“.

This game reminds me programming as there is a problem for which one should create a solution using previous experience, imagination, and a limited set of components. You have to construct a machine in the light blue zone. The machine will carry a pink circle or rectangular to the pink goal zone. You can use three types of wheels (right, left, and unsure) and two types of sticks (tolerant and rigid) for constructions.

But then there is a level called “Four Balls” where you have to move even four pink balls where most of them even don’t get into the light blue zone for construction.

Problem

At first, I try to make a car which will collect the balls into a bucket and drag them to the final point.

Trial

But as that case didn’t work, I looked at the problem from a different angle and constructed a conveyor which carried the balls where they had to get.

Solution

Players can save their vehicles and send links to their friends, like here or there. It’s very interesting to analyze how simply or difficult the problems are solved by other people. Sometimes you can learn smart practices. That’s the same as learning from open-source code in programming.

The game has Web2.0 features. They are user-generated content and sharing with each other. In spite of sharing the solutions of the puzzles, players can also create their own levels and play levels created by others for 10 US dollars. By default there are 21 free levels where I still haven’t solved only the “Tube”.

The background music is somewhat simplified IDM. The graphics are like simplified Worms. So that’s nothing special. But the gameplay is unreal. Do it.

Sunday Celebration: Automadness

Sunday, December 28th, 2008

Tree years ago I wrote about thin games as a concept of web2.0 for games. Nowadays one of the most popular games of that type among my friends is Car Madness. That’s a racing game made by the Apps-o-rama company in the Facebook social network. The game uses no plugins, but the standard browser possibilities.

Car Madness - Home

If you want to play “Car Madness”, you have to be a member of Facebook. The game is MMOG. Instead of forming a new social network from scratch, the creators use already existing communities of friends at Facebook. That’s useful for the both parties: the value of the social network is enhanced, and it’s easier to promote the project using the existing connections than in a separate website.

Car Madness - Garage

In the beginning a player gets some virtual money to purchase a car. Every car has three main parameters except the price. They are the power, traction, and aerodynamics. One can improve those parameters buying different upgrades for the car or a new car itself for the won money. While playing, racer’s level is increased and that influences the amount of the money you can get for the winning which you can spend for better and better car. The more you play, the more madness points you get. You can exchange the madness points for virtual money, an ability to race more than 25 times per day, or other goodies.

Car Madness - Race

The one wins whose car parameters are higher. If they are about the same, the result will depend on randomness. Sometimes it’s worthy to use bad boys services like a potato to the opponent’s exhaust pipe, nails on the track, oil on the road, or a smoke bomb.

What is the business plan of the creators? They just make use of some percent of fanatics who buy madness units for real money (3 units for 2 US dollars; 150 units for 100 dollars) which can be later exchanged for game goodies.

If you are interested, here you are. And I am going out to Giedrius for some cocktails.

Let the Humans Decide What They Need

Friday, December 26th, 2008

There is a story of the architect who designed a very spacious city park but did not put in any sidewalks. He was totally sure that they weren’t necessary. After a few months, people who used the park had worn down the grass, creating a number of distinct walking trails. The architect then proceeded to build sidewalks where the others had stepped.

(according to a lost source)

For Robomen: “Website is Under Construction. Please Come Back Later”

Friday, December 26th, 2008

Iteratively developed web projects are constantly updated. Sometimes the file structure has to be changed. Sometimes a new table is added to the database schema. Sometimes the data has to be massively changed. In a simpler case, HTML templates and style is changed. Usually, a more complex upgrade takes half an hour or even an hour, and the visitors should see “Under Construction” page instead of the normal site during the process, because the nobody should see broken view or corrupt data by accident while writing something to the database at that time.

Under Construction

A good practice for Apache web server users is to have a couple of configuration files which would be activated alternately, depending on whether the website is accessible to everyone, or is in the upgrade state. Once Tomas gave me an idea to create such configuration for the upgrade cases that others saw “Under Construction” page and I could browse the content and test if everything looks alright. So did I.

Apache lets you set the web server configuration on the directory level using .htaccess files. For the important projects I have files .htaccess_live and .htaccess_under_construction containing different settings in the root directory of the website. When I need to change the state, I copy the appropriate configuration to the .htaccess file:

cp .htaccess_under_construction .htaccess

or

cp .htaccess_live .htaccess

The content of the Apache configuration file .htaccess_live is something like this:

# index.html and index.php represents the directory by default
DirectoryIndex index.html index.php
<ifmodule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    # If the page was accessed by example.com, then redirect the request to www.example.com
    RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
    RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]
</ifmodule>

Whereas the content of .htaccess_under_construction is this:

# index.html and index.php represents the directory by default
DirectoryIndex index.html index.php
<ifmodule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    # If the page was accessed by example.com, then redirect the request to www.example.com
    RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
    RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]

    # if the IP address of the visitor is not 1.2.3.4 and the requested directory is not media,
    # then redirect the request to the file temporarily-offline.html
    RewriteCond %{REMOTE_HOST} !^1\.2\.3\.4
    RewriteCond %{REQUEST_URI} !/temporary-offline\.html$
    RewriteCond %{REQUEST_URI} !^/media
    RewriteRule .* /temporary-offline.html [R=302,L]
</ifmodule>

These configurations use the mod_rewrite module. RewriteCond defines the conditions which should be met to execute the redirect of request set by RewriteRule. The parameters in the brackets have the following meaning:

  • NC (no case) – use case insensitive comparison.
  • R=301 – redirect the request with code 301 “Moved Permanently”.
  • R=302 – redirect the request with code 302 “Moved Temporarily”.
  • L (last rule) – this is the last rule, so don’t execute the rest.

You can find your own IP address in one of the plenty What’s My IP services.

Now it’s clear how to technically set the temporary “Under Construction” view. The next thing, which seems quite important to me, is to show an appropriate temporary page. I personally like such error and system-message pages which describe the problem in a non-technical and visual way like twitter.com does, or the ones showing a video or something interactive to make me busy while the upgrade is being done.

Sunday Celebration: Brick Exchange Program

Sunday, December 21st, 2008

Soon I have to go to an air port, so I am writing in a hurry.. I offer you two different games based on the same engine for this Sunday. They are “HDOS Databank request 01” and “3 Minutes on the Beach“.

HDOS

The gameplay follows. There is a pile of bricks in the screen. You have to point a target to two of the bricks which you want to exchange and the you click. The row of column of three or more bricks of the same color will disappear. The ones that were above will fall down.

HDOS Databank request 01” is a game of progression, consisting of 35 levels where for each of them you have to terminate all bricks in a limited number of exchanges. These are good puzzles.

3 Minutes on the Beach” is a game of emergence, where you have to terminate as many bricks as possible in a limited time. That’s a relaxing clicking around.

I like the HDOS case more, because it’s presented with a story and humor. You have to break 35 security layers in order to access a secret file of the government. :cool: The messages after each level are cool. And I like puzzles since my childhood when I bought every release of puzzle magazine called “AHA” (I am not sure whether it still exists).

And the beach crashes my browser today for some reason (therefore I haven’t taken a screenshot of it). Maybe the 9.0 r115 version of Flash plugin is unstable?

So try them and tell which one you liked more, and I am going out now.

For Robomen: Equalizing Column Heights by CSS

Friday, December 19th, 2008

Since the times when it got not recommended to use tables for layout, from time to time I have been facing a problem how to set the same height for columns of varying amount of content. There were suggestions in the web to use vertically continuing background image with the colors of the columns or an additional Javascript, which finds the highest column and sets the same height for the others. But these variants were too limited and too heavy (let’s leave the Javascript for more important functionality that the presentational tweaking). Just a few days ago a colleague working with HTML templates, showed me a better solution by Alex Robinson.

My terminology in this text is as follows: a container is an HTML element which children will be called columns when they’re visually laid out horizontally next to each other. The standard examples of containers and columns could be those:

  • Page layout horizontally divided into, let’s say, three parts. Three div elements wrapped by the fourth div.
  • Horizontally displayed navigational menu. The element ul with its kids li.
  • Gallery photos drawn into a grid. div elements as small containers of photos with their descriptions and links laid out in another div representing a row.

The elements called columns are drawn up horizontally by CSS in all of those cases: they have defined widths and are moved to the left or right side by float: left or float: right. That’s enough talking about column layouts. Let’s have a look at the problem and its solution.

You might think, that you can set equal heights for different columns by the CSS parameter height, but you should take in mind that the visitor of the website can change the text heights at the View → Text Size settings. The times of static websites are over and nowadays usually we work with varying user-generated content. So the column will have a varying height which will depend on the amount of containing content by default.

Equalizing the columns

The solution by Alex Robinson is to define an insanely huge bottom padding padding-bottom for a column and then to distract the distance by a negative bottom margin margin-bottom. In case you forgot the CSS box model, I remind you, that the background of an HTML element belongs to the content itself and to its padding. If you define overflow: hidden to the container of the columns, the elements will look visually of the same height. The size of the insanely huge padding should be such a height which is never smaller than the content of the column. So if we are talking about menu items of 1 to 3 rows of text, then 100px is enough.

#block_A, #block_B, #block_C {
	padding-bottom: 32767px;
	margin-bottom: -32767px;
	}
#container {
	overflow: hidden;
	}

You can read about different exceptions of this trick in different browsers at Position Is Everything. There are also some other interesting solutions which I’m gonna check (but I won’t write a separate post about that :D ). The varying heights should be taken in mind not only by template creators, but also by the graphical web designers. But that’s already another theme.. And I’m gonna bake Kūčiukai now.

Sunday Celebration: a Crow in Hell

Sunday, December 14th, 2008

We all feel like in hell in the face of crisis. Let’s learn how to get out of water dry. Let’s move the stress of life to the stress of playing a game before the beginning of the new week, new decisions, and the new bunch of optimism. This weekend I offer you a game where a shot raven flies in the dungeons of hell trying to get out back to life and take its revenge on the offender. That’s “A Crow in Hell”.

A Crow in Hell

The gameplay kinda combines another two good games: the flash-based NoName Game where you have to move a dot throughout a maze without touching any walls, and Ecco the Dolphin on Sega where the avatar controlled by the arrow-buttons has its momentum and acceleration. The player of “A Crow in Hell” has to use arrow keys to fly throughout a labyrinth separated by screens, and collect keys, but touch no other objects. Even when the progress of the game is saved into a browser cookie every two screens, it seems silly that the crow can’t alight on a bench, stairs, or other safe objects.

The hell of the last week was kind of painted. This one is graphic and two-colored. The details are done very precisely and nicely, but the crow itself reminds me a buzzard more than a crow from its face. If I didn’t hear the cawing from time to time in a tragic background music, I wouldn’t believe that I am flying as a raven. The area of the game is of 650 pixel height, so if you want to play it in the resolution of 1024×768, you have to hide all browser bars, go to the full-screen mode (by pressing [F11]), or play in a popup window.

Games of progression like this one usually don’t attract you when they’re completed once, unless the player is offered different branches of scenario or levels, or if the player is motivated by competing against other players. Until the end of October the players of “A Crow in Hell” were offered to compete against each other who would fly throughout the whole hell fastest. The winner got a T-shirt with the branding of the game (I’d actually like to have one).

The game is quite difficult. I completed just a little further than the screen in the illustration. Anyway, it’s fun, that I can continue from where I finished and I don’t have to start from the beginning all the time. I suggest you to try it!