## Cardboard Drift timelapse

Posted by
Saturday, December 31st, 2016 2:56 pm

## Non Euclidean Room – Postmortem

Posted by
Friday, December 23rd, 2016 1:33 pm

For Ludum dare 37, I worked on a game about wandering around a strangely connected room. The idea obviously come from the works of Escher on “impossible” geometries. The connection with the theme is to have only one big room, but using portals to make it interesting to visit.
You can play and rate the game here : http://ludumdare.com/compo/ludum-dare-37/?action=preview&uid=18943

At first I wanted to have puzzles, like pointing lasers to open doors. You would use portals to change gravity and walk on the ceiling. I also wanted to have markers for the player to place around and help you navigate the room. In the end, I only had time for portals and a simple room, with a couple of interesting visual tricks. The scope is smaller, but by focusing on smooth portal transition, level design and polishing, the game ended up pretty well.
Here is timelapse recorded during the creation of “Non Euclidean Room” :

Portals :
Making portal feel simple but a lot of things can go wrong. At first I simply wanted to plug a copy of the room at each door and teleport everything around. That can work but it limit what you can do a lot. You cant have two doors close to each other. Basically you can only have doors on the external faces of the room.
Then the next technique is to use a render texture to produce a view from the portal exit with a second camera. An object will use that texture to display it on the main camera.
Here is the code (in Unity C#) I use to place the portal camera according to the main camera and transforms from Enter and Exit portals :

```Quaternion Rot180 = Quaternion.Euler(0, 180.0f, 0); Vector3 LocalPos = EnterPortal.transform.InverseTransformPoint( MainCamera.transform.position); Vector3 RotatedPos = Rot180 * LocalPos; PortalCamera.transform.position = ExitPortal.transform.TransformPoint( RotatedPos); PortalCamera.transform.rotation = ExitPortal.transform.rotation * Rot180 * Quaternion.Inverse(EnterPortal .transform.rotation) * MainCamera.transform.rotation;```

You use the main camera location in the local space of the entering portal, you pretend it’s a local position in the exiting portal and get it’s world location to place the portal camera. The rotation by 180 degrees is there because the exiting portal face opposite to the entering portal. You do the same on the rotation of the camera.

Portal camera location

This technique can certainly work, but will need a render texture per door. So I tried something else.
I used only two cameras, and the stencil buffer. The idea is to first mark (in stencil buffer) the portal pixels on the screen by drawing them from the main camera point of view. Then draw the scene through the portal, by placing the camera at the correct position, and using the stencil as a mask. Then rendering the usual camera above that, without overriding the portal door.
For the player motion himself, I just teleport the player when he pass the middle point of a portal to the relative location in the second portal.

Portal Anatomie

A second trick that I needed is to use a clip plane along the portal door. You want only objects from beyond the portal to be visible. For that, you can use an oblique projection matrix. This technique create a near clip plane in an arbitrary orientation by distorting the camera projection matrix. There is some downside though, as some visual glitch can appear when the camera is near the clip plane. If you stop in the middle of a portal, you can sometimes see the screen edge disappear. Another idea, that I didn’t have time to test, is to send the clip plane to the shader, and use the instruction “clip” to discard pixels that are on the wrong side. That way, no need for a custom projection matrix.

Oblique projection matrix

After having that first version working, there was only one visual glitch when going through a portal. You could not see a portal trough another portal. That was very obvious when walking through a portal : every other portal will pop into existence. To fix that, I needed to display portal through portal, at least for the nearest portal from the camera.
The idea is to use the stencil bit masks to read and write two separate portal indexes. That way I could tag a door, and a door inside a door. This did limit the portal count to only 15, as there is only 4 bits left in the stencil buffer for each index. But this was enough for the small game I had in mind for Ludum Dare. I could also take the nearest 15 portals from the camera, but it was already time to start the level design so I limited myself to 15 total. You may notice that there is 16 doors in the game. In fact the final door that let you leave is not a portal, it’s a regular door. The portal transition is smooth enough that you don’t notice. Since the LD, I improved the tech quite a bit in a post-compo version.

Visual style :
I decided quite early on the visual style I wanted for the game. The reference to Escher’s work is obvious : black and white with thick lines and a shading made by changing line density. I choose a style a bit more sketchy and, of course, animated. The strokes are placed on the screen and move with the camera. The animation is there to hide that fact. I blend 3 layers of strokes, and 3 times per second, each one have a chance to pan and rotate. This give an unpredictable animation. Some people found the effect a bit too disturbing after a while. I want to revisit it later.

The second part of the visual effect is the edge lines. The issue with portals, is that I render everything in “forward” so I don’t have a “normal buffer” to run my edge detection on. I don’t have a proper “depth buffer” either because of the way I render portals. So, I needed to use only the color buffer to make my edge detection. To detect normals, I simply render the absolute value of the pixel normal in the color buffer, modulated by the lighting intensity. So to have the luminosity of a pixel, I can use the value of the color (average of red, green and blue). And I can use offsets in hue to detect edges by sampling a pixel to the right and a pixel to the bottom of the current pixel.
I also wanted to detect depth discontinuities, so I had the idea to modulate the pixel color by the depth, making some sort of fog. Surfaces with the same normal but at different distances will then have a slightly different colors, and could be detected by the edge filter. The fog gave a moody atmosphere to the scene but I liked it. To complete the look, I added a Gaussian bloom filter, to give some gradient to the flat blue interactive objects.

Scenes from the game :
– Penrose infinite stairs

– Twin scenes through portals

– Falling through an empty space

Future post-compo version :
As much as I like the game as it is, a simple exploration game where you make your own path, I wanted to do more. In the beginning, I wanted to change orientation when you go through portals, letting walk on walls and ceiling. But I used the Unity Controller. And that controller cannot be rotated around freely. The collision capsule is fixed on the Z axis. So I did with that constraint. But now I started to extend the game in a Post-Compo version. The idea is to make a second room and exploiting everything I couldn’t in the base game.
– Infinite recursive portals :

– Proper puzzle with blocks (and laser later) + walking on walls :

I hope to complete that second room in early January 2017, with interesting puzzles and a longer playtime.

## “Super Battle Cycle” Timelapse

Wednesday, December 14th, 2016 5:26 pm

Hey everyone, now that the submissions are in, I thought I’d upload Super Battle Cycle’s timelapse video. Take a look (it’s a short video), and if you want to play the entry, go ahead and do so please 😀

I hope you find it interesting.

Thanks!

## Guild Inc timelapse

Posted by
Sunday, September 18th, 2016 12:40 am

## 3-Form timelapse

Posted by
Thursday, May 5th, 2016 1:11 pm

Here’s a timelapse of my seventh Ludum Dare game named 3-Form.

Entry page

If embedded video doesn’t work here’s a link

## My First Post-Mortem – Little Big Dash

Saturday, December 19th, 2015 10:55 pm

As this was my first Ludum Dare, this is my first Post-Mortem, So I hope I cover everything that people generally cover in this! ^_^ I was debating if I should even do one of these but I figure why not, right? So here goes.

Oh and here’s a timelapse if you’re interested!

What went wrong:

• Computer Crashes
• Software Crashes
• Choosing a genre that I don’t enjoy playing

What went right:

• Completed the game
• Fully functional

Details of the Weekend:
So usually I miss ludum dare by a few weeks or sometimes just a few days, but this time I learned the date two weeks ahead of time, and posted notes and reminders to myself all over the place so I wouldn’t forget. At first I was excited, and warming up with my tools, and learning new tools just in case I decided to use them. Then as it got closer the wait got excruciating, I didn’t want to practice anymore I just wanted to get the theme and make something awesome. 😀 Well anyways the waiting was painful, but once the theme was announced I felt great!

I was pleasantly surprised how smoothly the weekend went. I started with a pretty strict time schedule, and I prepared meals ahead of time, because I figured it would be a mad dash and non-stop working once it started. But I was incredibly wrong. Perhaps that was because I had a pretty low bar to reach, my goal wasn’t to make a masterpiece, but to make something fully functional within the time frame. It would ideally have audio and graphics and solid gameplay. I didn’t really care if it was a great game, just that it was complete, and I must say I feel like I accomplished that pretty well.

I only allowed myself an hour and a half for planning and brain storming, because I wanted to have tons of time to work on the first night. The goal being to have some prototype ready before I went to sleep on night 1. That went well, and by the middle of Saturday I had pretty much finished most of the gameplay aspects and mainly had level design, graphics and audio remaining. I felt like I was doing well. Then I lost a lot of my motivation, I spent quite a few hours on Saturday evening watching streamers and I even watched a movie with my roommates.

When I got back to work, I did the basic audio loop for the game, and decided to leave the graphics as simple colors for multiple reasons, I didn’t know what else to make it, and the minimalism seemed to fit for the style of game I was making.  Once that was done I slacked off again, returning to Twitch to check in on the progress some streamers were making.

I’m pretty sure I know why I slacked off so much, and at one point I even considered not finishing at all. It’s simple really, I chose to make a platformer, knowing that I don’t like playing platformers. I like them as games, but I’m terrible at them so once the functionality was implemented, and I was working on the level design I quickly got frustrated having to play test them constantly.

I didn’t get the level design finished until an hour or so before the deadline, and I ended up going with endless generation from premade modules rather than the initial idea of having completable levels. I decided this because I was having trouble coming up with ideas for the levels, and I didn’t think I had time for true procedural generation. Instead I just made 10 segments that the game randomly chooses from as the player progresses. It’s not the best, but each segment it completable and they’re long enough that you’re not likely to survive to see all 10. ^_^

Anyways I feel like I succeeded in my initial goal but I feel like I didn’t have enough faith in myself. I feel like I took the easy way out when I could have challenged myself to make something more complicated. Regardless though I’m glad I participated and I now have an idea for how to approach the next one.

## Done: Super Lefty Garden Fighty!

Monday, December 14th, 2015 3:18 pm

Hey, so my 6th Ludum Dare compo entry is a two button beat ’em up / tree synthesis simulator. And despite it being the dumbest thing I’ve ever made it’s also possibly the most fun.

Dammit.

I also made a timelapse! Development was surprisingly smooth and easy. I think I just picked a very simple game idea and then spent a day polishing it which makes for happy, stress free Ludum Dareing.

In other exciting news I haven’t had to do any post-compo critical bug fixes this time either. There’s a web version and now there’s a windows downloadable version on Itch.io if you want to use that awesome new itch app  thing to play it.

## PICO-8 Timelapse!

Monday, December 14th, 2015 1:20 pm

Here’s a timelapse of building my game Need For Seed: Undergrowth in/for the PICO-8 fantasy console!

Posted by
Monday, December 14th, 2015 8:34 am

Here’s a timelapse of my game Ram Road Racer. Play/rate here!

## LD32 TimeLapse Photophobia

Posted by
Tuesday, April 21st, 2015 1:01 pm

I made a TimeLapse of my LD32 compo entry “Photophobia”, showing how data are produced to get this gloomy style.

The game is here : http://ludumdare.com/compo/ludum-dare-32/?action=preview&uid=18943

## How to make a 3D game in less than 48 hours

Saturday, August 30th, 2014 10:04 am

People keep wandering – how did I make my entry and comments like: “I don’t understand how you people make something like this in 48 hours. Do you even sleep?”, “Wow for 48 compo your graphics are spectacular!”, “Definitely a good looking game for 48 hours!” and “Thats really great work for 48 hours “. So, timelapse of my Twitch stream condensed to 144 times normal speed may give you hints how.

I used ShiVa3D game engine made by developer “Shiva Technologies” from France – awesome small community with great support and big potential, so check them out. Engine is awesome, it works great, you mostly play with it, it using LUA-like language – very popular gaming scripting language. Using this engine for couple of years now I’m so exited version 2.0 is coming soon to the public, opening more possibilities for developers to create great apps quick. And that the reason I use it for my company projects too – it is fast, especially if you making mobile games. It both simple and advance. Simple usage, compilation, import, export, security and ability to build for multiple platforms. Advanced users (not like me) can mess with theirs games, exporting code to c++, write plugins, make various API integrations like advertising and monetization for mobile platforms. All the things your “standard” game engine can do.

I’m not greatest designer in the world and I don’t even bother to make most of UV mapping for this project, time constrain, laziness, you name it, but ShiVa engine manage to fix it using advance graphic engine, which I didn’t crank up to the max.

Here we go – enjoy the “show”, don’t be to picky. Constructive criticism and job offers are welcomed.

Don’t forget to play the game: http://www.ludumdare.com/compo/ludum-dare-30/?action=preview&uid=35966

## LD#30 (Almost killed me, but I did it :)

Posted by
Sunday, August 24th, 2014 1:32 pm

I will post a more detailed account of what went right, what didn’t, etc. AFTER I get some sleep. But my game has been submitted.

I have also uploaded a TimeLapse Video, which I will also document better later. But if you want to take a peek it’s HERE. And should be viewable in a browser when Google is done processing it.

Congratulations to everybody that has submitted, and have a great day.

## Compo Failure. I guess I’m Jammin’ then?

Sunday, December 15th, 2013 8:30 pm

I mean, what else would I do? Give up? Hah!

Regarding timelapse capturing, I ended up dithering on the capture rate quite a bit. Today ’til time ran out will be up at youtube. I’ll probably record some tomorrow, too.

Micro-postmortem(compo):

Premise: Compo ran from Saturday, 4 AM to Monday, 4 AM.

Saturday was fine, really. Except, I never got the game to work quite the way I wanted it to.

I completely crashed at 3PM for four hours, and then again, at 21:45, which lasted to 1:00 or so. I actually missed some recording there.

After that, it’s been fine. I just ran out of time.

what would I do differently?

I’d probably get a full and complete night’s rest between Saturday and Sunday.  I just don’t work that well on sleep deprivation.

I still had enormous issues coming up with a concept I was happy with. I’m not sure what I would do about that.

Solution?

I guess… If I’d have to say… a bit of behavior forcing. Do not allow yourself to write one row of code before you have your concept. In general, it’s a good idea to know what to do, before tryig to do it.

I would have liked more time to do prep work with HaxePunk – I did have time, waiting for the compo to start, though, so I can only blame myself there.

Next time, I’m likely to go with something targeting JVM, or Löve2d. And yeah, I’m participating next time. That being said, I rather like having collision, entity management and all that being handed to me all ready-like, like this.

like, like.

My entry will be up here:

http://www.ludumdare.com/compo/ludum-dare-28/?action=preview&uid=25313

Now it’s just a question of how far I can get before time totally runs out.

Last time, even if it wa a week late, I did get my game into a shape where I actually enjoyed playing it. A little bit.

So, I’m hoping I’ll get the compo to a similar shape. I’d rather not spend an extra week on this, like I did last time.