https://github.com/villevli/villevli.github.io
https://github.com/villevli/villevli.github.io
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/villevli/villevli.github.io
- Owner: villevli
- Created: 2025-02-27T19:19:25.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-01-11T17:18:18.000Z (6 months ago)
- Last Synced: 2026-01-11T20:20:06.270Z (6 months ago)
- Language: SCSS
- Homepage: https://villevli.github.io/
- Size: 4 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Hello, I'm Ville Lindblad. I'm an experienced programmer capable of solving problems and building games or apps.
I have several years of professional experience using the **Unity** engine and **C#**.
Other tech I have experience with includes **Git**, **Python**, **Bash**, **Java**, **C++**, **JavaScript**, **HTML** and **CSS**.
I'll learn new technologies when needed.
Some things I have worked on:
- [Dibs](#dibs-๏ธ) - Location based live-service game with multiplayer features
- [Glass Art](#glass-art-) - Hyper casual art game
- [Taxi Dash](#taxi-dash-) - Infinite runner
- [Cubes](#cubes-๏ธ) - Procedural terrain generation and voxels
- [Lockstep networking proto](#lockstep-networking-proto-) - Tech that enables large scale networked games
- [Defender proto](#defender-proto-) - Prototype of the classic arcade game Defender
- [Physics2D JS](#physics2d-js-) - 2d physics simulation in JavaScript
- [Soludus](#soludus-๏ธ) - VR game teaching about the use of renewable energy
- Scroll down for more!
I strive for code that is easy to understand and maintainable and I like building well organized projects.
I help others to solve issues, avoid blockers and improve workflows.
My professional experience is in mobile games but I have interest in developing also for PC, VR or console.
I can also see myself working as a backend or fullstack engineer in the future.
- [My work history in LinkedIn](https://www.linkedin.com/in/ville-lindblad/)
- [My projects in GitHub](https://github.com/villevli)
# Projects
## Dibs ๐บ๏ธ
Playstack - iOS / Android
Gamified engagement with brands in a location-based live-service game. Includes multiplayer and AR features.
- Worked as a Unity developer and C# programmer
- Collaborated in an agile team. Wrote documentation, onboarding guides and tech design (Git, Jira, Confluence)
- Mentored juniors and conducted code reviews
- Character movement on a tile based world map (Mapbox SDK) based on GPS location
- Character customization (import tools for artists, assetbundles, scriptable objects)
- CI/CD pipeline in GitLab to test, build and upload the app to App Store and Google Play (yaml, git, bash, python, xcode, assetbundles, aws cli, self hosted runners)
- Publishing (comply with technical Google Play and App Store requirements)
- Localization system (Google Sheets, CSV)
- Helped design our GraphQL backend api and some MongoDB models
- Social login (Firebase auth, Google, Apple, email/password)
- Seasonal events (remote configuration, assetbundles, scriptable objects)
- Gifting (UI, client side logic, api and db model design)
- Utility code (web request pipeline, UI navigation stack, image downloader/cache, global event system, etc.)
- Runtime tools (Debug menu, console, inspector)
- Editor tools and workflow optimization (editor scripts, scene/user/server selector, etc.)
- Testing (unit tests, mockup backend for UI testing)
- Optimization (profiling, memory usage, build size, eliminating GC allocations, overdraw, draw calls)
- SDK integrations (Firebase Auth, Crashlytics, Analytics, Google sign in, Sign in with Apple, OneSignal, Branch.io)
- Analytics events (designed and implemented client events)
- Prototyped AR minigames (Vuforia, later AR Foundation)
[View details about Dibs](projects/dibs.md)
## Glass Art ๐จ
Playstack - iOS / Android
Artful hyper casual game where you can build stained glass artworks by cutting and combining pieces.
- I worked as a Unity developer and C# programmer
- Algorithm for cutting a 2d mesh / polygon by drawing a line and generating the mesh from the list of edge points
- Firebase Storage and Dynamic Links to share the artworks you create
- Optimized sprites and guided the artist
## Taxi Dash ๐
Playstack - iOS / Android
Infinite runner where you drive a taxi, pick up and drop off passengers and plow through obstacles.
- I worked as a Unity developer and C# programmer
- Floating origin (camera stays still, world moves) to enable infinite run without floating point issues
- "Air resistance" custom physics logic to make physics look correct
- Online leaderboard using Firebase Realtime Database
## Cubes โฐ๏ธ
Personal project - PC / Android
Cube based procedural world in Unity. Inspired by Minecraft.
Source code: [villevli/cubes-unity](https://github.com/villevli/cubes-unity)
- Procedural terrain made from blocks. Includes noise caves under ground
- Generated in 16x16x16 chunks
- Hidden surfaces are culled to make rendering very fast even with larger view distances
- Using the burst compiler for all heavy calculations to make it many times faster
- Using background threads to make traversal in the world smooth even when loading or generating chunks
- Procedural generation with perlin noises is done in a GPU compute shader. 4096 chunks (16.7 million blocks) generates in under 20 milliseconds on RTX 3070
- Raycasting to find block surfaces
- Break and place blocks
## Lockstep networking proto ๐
Personal project - PC / Unity
Implementation of the lockstep networking protocol that allows syncing large scale game simulations over the network.
Ideal for RTS games.
- Relies on determinism so that only player inputs need to be sent over the network
- Commands are buffered and simulation is advanced when commands from all players have arrived for the current tick
- Uses Unity with the ECS framework (Unity Entities) and Burst
- UDP messages over the network are sent using the low level Unity Transport library
- In this project I learned ECS systems and some low level networking concepts
## A-star pathfinding in a grid ๐
Personal project - PC / Unity
Implementation of the a-star pathfinding algorithm in a grid.
- Using Unity Entities, Job system and Burst to enable high performance
- Priority Queue implemented using binary heap and native collections
- Import test maps from images
- Reading about possible optimizations like Jump Point Search
- Reading about alternate solutions like Flow Field pathfinding
## Procedural planet shader ๐
Personal project - Unity
- Shader graph
- 3d fractal perlin noise
- Adapted from a tutorial video for Blender
## Defender proto ๐พ
Personal project - PC / Android
Prototype of the classic arcade game Defender in Unity.
Source code: [villevli/vl-defender-arcade](https://github.com/villevli/vl-defender-arcade)
- Seamlessly looping game area
- Parallax background
- Minimap
- Keyboard, mouse, gamepad and touch controls using the new Input System
## Physics2D JS ๐
Personal project. Started from a game physics course at Metropolia University of Applied Sciences
2d physics simulation in JavaScript.
Try it here: [Physics2D](https://villevli.github.io/physics2d-js/)
Source code: [villevli/physics2d-js](https://github.com/villevli/physics2d-js)
- Physics simulation that calculates collisions and forces between polygons
- Uses no libraries, only the canvas api and JavaScript in browsers
## UnityExtensions
Personal project - Unity Library
Collection of small extensions, utils and property attributes for Unity.
Source code: [villevli/UnityExtensions](https://github.com/villevli/UnityExtensions)
- SingleLineAttribute - Draw a serialized field on a single line even if it's a struct with multiple fields
- EnumDropdownAttribute - Draw a string or int field as an enum dropdown
- CSVParser - A simple utility to parse a csv file
- SDateTime - A DateTime value that can be serialized in Unity and displayed in inspector
- STimeSpan - A TimeSpan value that can be serialized in Unity and displayed in inspector
- SDictionary - Dictionary that can be serialized in Unity and displayed in inspector.
- EventSystemCallbacks - Global callbacks just before any EventSystem event is executed
- SavedPrefs - PlayerPrefs but supports more types like bool, long, enum and DateTime.
## UnityEditorExtensions
Personal project - Unity Library
Collection of small extensions, tools and tweaks for the Unity editor.
Source code: [villevli/UnityEditorExtensions](https://github.com/villevli/UnityEditorExtensions)
- DefaultAssetInspector - Shows the content of unsupported files in the inspector
- GameViewObjectPicker - Left click to select the object that is visible under the cursor in game view.
- GameViewScreenshot - Quickly take screenshots with F12 from the Game View or the Simulator View.
- DockAreaDragAndDrop - Quickly open a tab for assets or objects that are dragged and dropped into the dock area.
## Mirror for firebase packages in Unity
Personal project - Unity Library. Need for this arised when working on Dibs at Playstack
[google-unity-packages-mirror ยท GitLab](https://gitlab.com/google-unity-packages-mirror)
- Built to avoid having to commit the large firebase core package into a project and instead download it from a git repository via the Unity package manager
- Runs a scheduled CI/CD pipeline every night to download the .tgz unity packages published by google and pushes them to gitlab giving each version a tag so it can be used via the Unity package manager
## Soludus โ๏ธ
Metropolia Game Studio - SteamVR
Virtual reality game teaching about the use of renewable energy.
Source code: [Soludus/Soludus2Enercity](https://github.com/Soludus/Soludus2Enercity)
- I worked as the sole programmer in Unity
- VR game controls using the SteamVR plugin
- Drag to move around game map using controls similar to Google Earth VR
- Day night cycle that continually adjusts light settings using curves and gradients. I designed this to fit the needs of our artist
- Integrated dynamically changing FMOD sounds from our sounds guy into the game logic
## Capitalistica ๐ฐ
Metropolia Game Studio - Android
Mobile game teaching maths and financial management.
- I worked as a Unity developer and C# programmer
## Siimes ๐ณ
Metropolia Game Studio - WebGL
Social game for use in elementary schools. Works in browsers using WebGL.
- I worked as a Unity developer and C# programmer
## Procedural voxel terrain โฐ๏ธ
My Bachelor's thesis at Metropolia University of Applied Sciences
Thesis (finnish): [Vokselimaaston kรคsittely ja renderointi](https://www.theseus.fi/handle/10024/349339)
- A tech demo with procedural generation of terrain and chunk based meshing to create an "infinite" world
- Multiple layers of perlin noise to create a signed distance field resembling mountains
- Marching cubes for generating a mesh from the signed distance field
- Multithreaded chunk loading and generation
- Realtime terrain modification using boolean operations on the distance field
## Arkanoid 2016 ๐ฎ
Personal project at Metropolia University of Applied Sciences - PC / Android
A clone of the retro game Breakout/Arkanoid in the Unity game engine.
- Includes a level editor and leaderboard
## Nox Daemonica ๐ธ๏ธ
Team project at Metropolia University of Applied Sciences - PC
- A small 1-4 player LAN co-op action RPG dungeon
- Implemented using the Photon Unity Networking library
## Fleet Commander ๐
Team project at Metropolia University of Applied Sciences - PC
- A space battle simulator where you build your fleet and watch a simulated battle in 3d space
- Ships have "AI" steering and attack routines
## Space Incident ๐
Team project at Metropolia University of Applied Sciences - PC
- A point and click graphic adventure game where you solve a mystery in a space station
- Includes procedurally generated corridors
## Chess AI in C++ โ๏ธ
Pair project at Metropolia University of Applied Sciences
- Pair programming for an AI chess competition
- Alpha-beta algorithm
- Optimizations like storing the 8x8 chessboard states in 64 bit integer bitmasks
- Our program won the competition ๐
## Intro to OpenGL API in C++ ๐
Graphics programming course at Metropolia University of Applied Sciences
- Drawing a mesh with a texture and shader using the OpenGL API
## Embedded ventilation fan controller in C++ ๐
Pair project at Metropolia University of Applied Sciences
- Control the speed of a ventilation fan
- Fan is connected to an ABB frequency converter
- Converter is controlled using Modbus protocol
- Two operating modes: Manual and Automatic
- LCD user interface
- Arduino, LPCXpresso, UART, I2C
## Procedural voxel terrain with LOD โฐ๏ธ
Personal project
- 3d fractal noise
- Marching cubes meshing
- Chunk loading to create "infinite" world
- Octree loading for level of detail based on distance to camera
## Post Effect Mask
Personal project I started when a question at Unity Forums got my interest
[Applying image effects to specific objects - Unity discussions](https://discussions.unity.com/t/applying-image-effects-to-specific-objects/666124/12)
- Mask any camera post effects. Use e.g. to apply a post effect only to defined objects
- Draws an alpha mask and uses alpha blending to blend the processed image on top of the unprocessed image
## Portal mechanics
Personal project
- Created a seamless portal between any 2 points in the 3d world (like in the game Portal)
- Used cameras, shaders, render texture and stencil buffer
- Teleports any objects passing through and keeping the relative orientation and velocity










