In progress realtime renderer for learning, made with Rust and wgpu.

  • PBR
  • Shadow mapping & PCF
  • Volumetric fog
  • Runs on WASM and native desktop

Source: https://github.com/laurirasanen/wgpu-renderer
Demo: https://rasanen.dev/wgpu-renderer/
(Note: Demo may take a while to load -- 50MB Sponza scene embedded in WASM.)
(Note: shadowmaps and volumetric fog are not enabled on WebGL.)

  • WASD - Move horizontally
  • Ctrl/Space - Move vertically
  • Mouse - Look around
  • Scrollwheel - Increase/Decrease movement speed
wgpu-renderer - Sponza

UE5 FPS experiments

Experimenting with UE5 FPS mechanics in C++.

Gun model is third-party but has no animations. All animations, handling, movement, etc. are implemented in C++ code.

Post-process material for glitch-effect that responds to player input.

UE5 FPS - Gun handling and post-process effects
UE5 FPS - Gun handling and leaning around obstacles


A game made in less than 48 hours for Finnish Game Jam 2023. C#, Unity.

Brewed in the toxic cauldron of a witch, you are a magical root spreading all across the land. You have been sent forth by your creator to slay all humans of the nearby village.

Source: https://github.com/laurirasanen/fgj23
GGJ: https://globalgamejam.org/2023/games/rootbrew-8


  • Piia Kemppainen - Art
    • https://www.artstation.com/piiakemppainen
  • Lauri Räsänen - Code, Audio
    • https://rasanen.dev
  • Janne Viitala - Art
    • https://www.artstation.com/rarrix
Rootbrew - gameplay


Plugin for exporting assets from Quixel Bridge to Source 2. C#.

  • Exporting geometry & textures
  • Automatic VMAT and VMDL creation
  • Automatic compiling of exported assets with resourcecompiler.exe
  • Automatic VMDL LOD setup from all exported LODs
  • Automatic .spray -prefab creation from assets with multiple variations
  • Option to specify shaders to use in materials
  • Option to change export scale of 3d assets

Source: https://github.com/laurirasanen/BridgeSource2Plugin

BridgeSource2Plugin - Asset Sprayer demo
BridgeSource2Plugin - Model exporter demo


A heightmap to displacement exporter for Source 2 Hammer editor. C#.

Source: https://github.com/laurirasanen/Shovel

Shovel - World Creator heightmap to Source 2 Hammer


In progress retro FPS in C99.

  • BSP rendering, lighting, collisions
  • MD3 models
  • Console, commands, cvars
  • Model viewer tool
  • Basic AI
  • Quake style movement

Source: https://github.com/laurirasanen/my_game

Basic AI
Models in game, testing with Q3 assets
Game console
Model viewer


SDF rendering experiment. C++, bgfx.

Source: https://github.com/laurirasanen/blobby

signed distance fields


A modified renderer for Xash3D FWGS (Half-Life) for testing post-processing effects. C, OpenGL.

Source: https://github.com/laurirasanen/hl-renderer

Color grading
Chromatic aberration


A Quake Live strafe bot for solving defrag maps (PQL/Turbo). C, Python.

  • Updated version of minqlx for C and Python API
  • Reversing Linux server and game binaries with IDA and Quake 3 arena source
  • User defined path through level for fitness
  • Strafe algorithm for (mostly) optimal speed gain
  • Simple brute force solver with short lookahead for now, maybe something smarter later
  • Likes to put itself in unrecoverable positions

Source: https://github.com/laurirasanen/qlsb

Quake Live defrag strafebot - stonestrafe2 (PQL/Turbo)
Quake Live defrag strafebot - dfwc2017-6 (PQL/Turbo)


A genetic algorithm implemented in SourceMod that generates input sequences for playing TF2 surf maps.

Source: https://github.com/laurirasanen/GA-input

Genetic algorithm plays surf_beginner stages 1-4
Genetic algorithm plays jump_haze segmented

Tempus Records

Automated TF2 rocket/sticky jump speedrun recording & uploading to YouTube. JavaScript, Node.js.

  • Game & API automation with Node.js
  • ffmpeg for compression & video effects

Source: https://github.com/laurirasanen/TempusRecords
YouTube: https://www.youtube.com/tempusrecords

TempusRecords - newjuls on jump_keep_final - 01:17.699


In progress moba gamemode for TF2. Vscript.

  • Robots as creeps
  • Sentries as towers
  • Leveling, custom damage, health, etc. for player classes

Source: https://github.com/laurirasanen/domc

Lane pathfinding
Melee and ranged creep test


An incomplete shaderapi project aimed at adding Vulkan support to the Source 1 engine. C++.

  • Wireframe only, no other shaders, textures, etc.

Source: https://github.com/laurirasanen/shaderapivulkan

Hammer editor running on Vulkan
Hammer editor running on Vulkan

Unity 5.2 - 2D line of sight shader

Unity shader experiment from 2016.

Unity 5.2 - LOS shader

Hammer maps


jump_2d showcase


jump_wallrun_b1 showcase



i will send you a randomly sized and shaped room, and you have to put a jump in it. it won't be a boring hollow cube but something vaguely jump shaped. if you think you can fit more than one good jump in, go for it.

you can put anything you want inside your box, but nothing can stick out and you can't change the box i give you. (if it's stuff like regen, nonade or disp edges it can stick out, just make sure your jump and detail is in the box) the box i give you seals the map. if you add map wide entities or a bunch of logic things, please put them all next to each other. you don't have to fill up the box entirely, block off a section if you want.

the detail/theme is quarantine, but the interpretation is up to you. skybox is mpa115, light_env included in the zip.




A very dumb Rocket League reinforcement learning bot trained with rlgym. Python.

Source: https://github.com/laurirasanen/goliath

Goliath playing against itself


A barebones C# modding api for Noita.

  • DLL injection
  • Read/write process memory
  • Byte pattern scanning

Source: https://github.com/laurirasanen/NoitaMod