Mar 032011
Pixelvania Devlog
by Hannes Rahm
Pixelvania-Concept

We are alive! And we are indeed working on a new game.
It's a 2d platformer made in flash (using flixel).
We are very excited about this one, and the reception so far have been quite warm.

We have decided to put up a development log for this on the TIGSource forums.
http://forums.tigsource.com/index.php?topic=18179.0 <- devlog and playable alpha!

Go there, try the alpha, join the discussion!

/Hannes


archived as: flash game,platformer,flixel
 
Feb 142011
Oh Noes!
by Hannes Rahm
Check out our new release Oh Noes! on Kongregate
It's a silly 3d arena shooter made in Unity.
As it is our first every Unity production it might be a bit rough around the edges, but it quite good fun.
Can you take our highscores? :)


ohnoes_icon125x100
Play Here >>


/Hannes
archived as:
 
Aug 312010
Balance
by Hannes Rahm
balanceScreenShot

Hey, no time to waste, we already missed the deadline!

This is our entry for the August edition of the Experimental Gameplay Project.
The theme was No Buttons.
It's called Balance and it's a physics-puzzle-game controlled entirely with mouse movement.

Balance is a Flash game using Box2D for physics.

The idea is to push the blue block to the green block to get to the next stage.

playBalance
Hope you like it!
/Hannes and Alfred
archived as: game,flash,flash game,experimental gameplay project,prototype
 
Jul 302010
Undercurrent
by Hannes Rahm
Oh, it's that time of the month again. Experimental gameplay time!
For June and July the theme was Addiction.
Our entry is called Undercurrent and it's part fl0w, part geometrywars and part roleplaying game.
Guide your microorganism downwards, kill, level up, avoid spikes, repeat.
When you level up you get points to spend on enhancing your creature. More spikes, Longer Spikes, More health.

We found that one of the most addictive things in games are competing for highscores, so we built in 5 different ways to compete: Score, Most kills, Largest Kill, Deepest Death and Fastest down to 300.

It can get a bit laggy at times, and I'm sure there are a few bugs. But hope you enjoy it anyway!

playundercurrent

Indiehugs!
/Hannes & Alfred
archived as: game,flash,experimental gameplay project,undercurrent
 
Jun 282010
Illusions - Behind the scenes
by Hannes Rahm
Hej Buzzare, kul att ni hittat hit!
Filmen som detta handlar om finns att se här (youtube)
Om ni är intresserade av våra andra demoscenprylar (64k, demo etc) så finns vi på Pouet.net

We have gotten a few questions about how we achieved the effects in our latest release Illusions, so I thought i'd post some images of our setup accompanied with a short explanation.

We decided to make an entry to Dreamhack Summer's Wild Compo. The only idea we had to start with was that we wanted to do something with water or liquids. I had seen some cool stills of ink beeing dropped in water a couple of months back. "Humm, wonder how this would look in motion" :)

I borrowed a Canon EOS 550D from work. We fitted one of louies macro lenses to it and set it to shoot in video mode 720p@50fps. We hooked it up through USB to my Macbook pro with the Canon LiveShoot software for pretty good preview.

For the actual effects we had this setup in louies kitchen:

IMG_2728

What you see is a shoe box with holes cut in it, some aluminum foil, and most importantly a 200W bulb for light from underneat. We put a clear glass plate on top for stability. The whole 200W-bulb-in-a-shoebox-contraption did get very hot (no surprises here) so we cut another hole in the back of the shoebox and pointed a fan towards it. This enabled us to do longer takes without risking a fire. The fan did make small vibrations that moved through the table and shook up the quite unstable showbox setup, so we had to turn it off while we were filming. The heat from below added some quite cool motion as the water rose to the top as it got heated by the bulb.

We used a fork to help with focusing the camera where we imagined the drops would go. Refraction in the water and glass plus the macro lens made the fov extra shallow.

Then we started out testing pouring different stuff in the water and watching the effects.
Most of the stuff didn't make it into the final production. Food dye didn't stand out from the black background even with a lot of light, soy mixed with the water too quickly, vegetable oil looked very cool but we cut it later when we found it didn't fit with the other clips. Then we tried milk, which worked quite nicely, and after that, cream, which is used for most of the effects in the final production. Cream had a very nice viscosity and the thickness worked well with the strong light from below.

For liquids we used very small amounts (0.1-5 ml) in a syringe. We did a lot of takes with different amounts of "spurting-pressure". Both high and low pressure gave satisfying and varied results.
To keep up the tempo in Illusions most of the clips are from the very beginning of the spurts, but we filmed for quite a long time on each take, the patterns that emerged, very slowly rotating and transforming, were quite surreal, almost hypnotic.

We added colors to the liquids in the computer and changed the speeds. Having shot in 50 fps opened the possibility to slow things down without making things look choppy. For many of the shots we slowed down the beginning where the drop entered and made the end faster, just to give things a bit more punch, and to sync it better to the music.

I composed the tune between shooting and cutting/post. If we would have had more time I probably should have composed first, to inspire what kind of clips we filmed. Further time constraints made us cut half a minute from the song, to be able to finish the stuff on time. In retrospect I think we should have kept things longer and made a few repeats of things instead. The final cut felt a bit short.

IMG_2723

The high tech computing station. Having things in the kitchen was a must since we changed the water all the time.

IMG_2715

Another shot of the setup. The other, flatter, canister we used. This time with food dye and some unspecified very opaque liquid on the bottom. We did tests with white background, but most of these didn't work, especially with the cream (for obvious reasons).

Originally we wanted to write something poetic for the overlayed texts, but nothing felt really right, so we settled for translating wierder and wierder things to french. We thought this could bring a smile to any french speaking lips.

Well, thats about it. We hope you have enjoyed watching our first Wild-Entry as much as we enjoyed making it!
While we have no concrete ideas for other "filmic" productions, it was a very cool experience, so as soon as inspiration strikes, expect another release :)

In the meanwhile, back to the game development!

Huggies!
/Hannes and Louie





archived as:
 
Jun 222010
Zink - Illusions
by Hannes Rahm
Yay! Our first Wild/Animation-compo entry is released!
It's called Illusions and ended up 2nd at Dreamhack Summer 2010. Not bad for a first try!

Please watch in Fullscreen 720p. The effects looks a lot better that way.

Oh, and congratz to Raddox, who won, as usual :)



Art Direction and Filming:

Hanes (me) + Louie

Music:
Hanes

Huggies
/Hannes and Louie
archived as: demoscene,Animation,Klegg,Wild,Illusions,Cream in water
 
May 242010
Lightspeed
by Hannes Rahm
Lightspeed

We are back with another Experimental Gameplay Project-entry.
The theme for May was "High Velocity" and our game is called Lightspeed.

Fly through hoops to gain points and speed. You get 20 seconds.
Black and white hoops accelerate you and gives you points. The faster you go, the more points you get.
If you fly through a blue hoop you get an extra second.

You build combo points by flying through several black or white rings in succession. If you have combo points you can Boost for additional speed.

When the time runs out you enter your name, and your score is posted to our online leaderboards.

We couldn't fit learning OpenAL into our schedule so the game is painfully silent. Maybe if you ask us nicely we'll crank something out ;)

Controls:
Steer with mouse.
Boost with left-mouse-button.
If the game is running slowly, use C to turn off clouds or reduce your desktop resolution.

Prerequisites:
Windows: .net Framework 2.0.
OSX and Linux: Download and install the latest version of mono from: http://www.mono-project.com/.

DownloadLightspeed-button

To run on Windows: Lightspeed.exe, Linux: Lightspeed-Linux.sh, OSX: Lightspeed-OSX.command. (Or just run mono Lightspeed.exe in a console)

Tech
I (Hannes) recently bought a macbook, and since I don't really want to run windows on it we decided to try some cross-platform development. We settled on C# + OpenTK. Through the seemingly miraculous power of Mono the same binaries seems to work on both Windows, OSX and Linux.

I code in MonoDevelop on the mac and Alfred code using Visual C# Express. MonoDevelop can use the vs-solution files natively so no problems there really. We have our own subversion server to help with the collaboration.

This is a very simple game, but I am very impressed with Mono and OpenTK!

There have been only a few problems with the cross-platform setup.
1) Loading transparent png's work differently on the different platforms. On Mono we have to convert from premultiplied-alpha manually. If you see black halos around your transparent images when running your games on Mono. Try doing this to the textures on load:

int id = GL.GenTexture();
GL.BindTexture(TextureTarget.Texture2D, id);

Bitmap bmp = new Bitmap(filename);
BitmapData bmp_data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
int PixelSize=4;

// Fix premultiplied Alpha in mono
int p = (int) Environment.OSVersion.Platform;
if ((p == 4) || (p == 6) || (p == 128))
{
unsafe
{
for(int y=0; y<bmp_data.Height; y++)
{
byte* row=(byte *)bmp_data.Scan0+(y*bmp_data.Stride);

for(int x=0; x<bmp_data.Width; x++)
{
float a = (float)(row[x*PixelSize+3])/255.0f;
float r = (float)(row[x*PixelSize+2])/255.0f;
float g = (float)(row[x*PixelSize+1])/255.0f;
float b = (float)(row[x*PixelSize+0])/255.0f;

r = r/a;
g = g/a;
b = b/a;

row[x*PixelSize+2] = (byte)(r*255.0f);
row[x*PixelSize+1] = (byte)(g*255.0f);
row[x*PixelSize+0] = (byte)(b*255.0f);
}
}
}
}

GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bmp_data.Width, bmp_data.Height, 0,
OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmp_data.Scan0);

bmp.UnlockBits(bmp_data);

GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

2) Setting mouse position on mono (osx atleast). To be able to use delta mouse movement to steer we wanted to center the mousepointer between every frame. It seems that Cursor.Position = new Point2(..) locks the mouse position for a couple of hundred milliseconds. This makes the center-on-every-frame-technique unusable. We don't have a good solution to this atm. We had to settle for just checking the delta of the mouseposition each frame, which works but only until you hit the screen edge. You can press Space to recenter the mouse if things go bad. For this game you go pretty much straight ahead, so it's not that big of a problem.

Anyway, we hope you enjoy our little game!

Huggies
/Hannes and Alfred
archived as: experimental gameplay project,opentk,mono,linux,osx,premultiplied alpha
 
Apr 252010
Revolutions
by Hannes Rahm
Revolutions

Hey! Believe it or not, we are not only ON time but actually AHEAD of time for this months edition of the Experimental Gameplay Project.

Our entry is called Revolutions which is quite fitting since the game is set in a revolving, circular world.
This months theme was Repetition, and we think Revolutions fit since it the worlds are circular, and repeating.

We really like the idea, and everyone we have shown this to so far have been very positive.
It does need a heck of a lot more and harder levels. Maybe we'll make some more if you tell us you like it :)

There IS  a built in level editor, but it's not userfriendly at all. In a future release we might polish it and make some instructions. If you feel you have ideas for puzzles or whole levels please contact us at info@zink-interactive.se for a little tutorial in the

PlayRevolutions


Instructions

  • Control with arrow keys
  • Get to the larger Mom-Orb to progress
  • Solve puzzles by switching switches.
  • Watch out for lava
  • If you roll of a block you can jump in mid-air


archived as:
 
Apr 012010
Word Hunt
by Hannes Rahm
WordHunt

So... End of the month, and once again we are late with our Experimental Gameplay Project entry.
Lots of last minute engine troubles, so this is quite rough.

The actual game code is written in a only few hours.
The admittedly crappy meshes were modelled in around 3 hours total.

Is it fun? Well if you're into hectic, memory-intensive, click'n'spell games, possibly :)

Anyway, here is our entry for the 10 seconds challenge:

Word Hunt

Instructions

You are in a cluttered room.
Spell the announced words by clicking on things. You get ten seconds per word.
If you fail to spell a word in time, you start over from the beginning.
The object you are hovering over is shown in the top left corner. It's first letter is used to spell.
You start with 3-letter-words, but every five words you spell correctly another letter is added.

>> Download here <<

Prerequisites
You will need
  • DirectX 9
  • Microsoft .net framework 3.5

This is built on our little unfinished game engine + editor called znCore.
It's not really up to even this small task yet, but it looks like it the game runs reasonably well.
The game is written and the scene is composed entirely within our editor.
Check "Game/Scenes/__temp.scene" for the anatomy and scripting of this game.
We plan to make znCore a nice platform to build 3d games on.
Right now it's usable but not enjoyable :)

Huggies!

/Hannes and Alfred
archived as: experimental gameplay project,ZnCore,word hunt
 
Mar 182010
ZnCore Update 2
by Hannes Rahm
So what is going on in ZnCore-Game engine land? A ton actually.
First and foremost we have expanded into the third dimension. Complete with cameras, lights and 3d models.
The rendering is really rudimentary at the moment. No eyecandy yet :(

The engine still employs a component based entitysystem that is easily scripted through IronPython. We have added a simple xml based scene format that is used to load up sets of entities. This is based on our Template format, an xml file that describes what components and properties an entity should have. The scene lists all the entities in a scene, what templates they should be based on and any modified component parameters. Scenes can be both saved and loaded easily, and (it seems ;) ) reliably.

The third big thing we have added is a simple game editor!
The editor features:
  • A Solution Browser that by doubleclicking enables loading of scenes and spawning of entities from templates.
  • An Entity Browser that lists all the entities in the current scene.
  • An Entity Inspector that lists all the components in an entity. You can add components and edit their properties in a simple Property Grid
  • A realtime view that shows the scene. Entities are selectable with right click and moveable with left mouse drag.
  • A Script Console that can be used to directly speak python with the engine
  • A Floating editor for entity scripts (through the ScriptComponent)
  • Modular "Visual Studio Like" dockable panel system through DockPanelSuite.
So how does it look?

ZnCoreScreenShot1
This shows most of the functionality of the engine. Including some examples of how scripts can be written.

archived as: C#,ZnCore,Game Development