LaneMaker

Lightweight road editor & simulator

A free 3D editor for creating ASAM OpenDRIVE-format road network, and running traffic simulation on top of it.

Inspired by the famous title Cities:Skylines, this work is focused on replicating its most fun part: traffic planning.

In comparison with the all-rounder MathWorks RoadRunner, this software is intended for casual users and hobbyists, providing solid core functionalities and easy experience, leaving behind steep learning curve and money investment.

Debian built for
Ubuntu 24.04 LTS

Dedicated GPU recommended for scaled simulation
Special Thanks to

LaneMaker

Lightweight road editor & simulator

OpenDRIVE integration

Powered by the industrial-standard, you can conveniently export your work to popular simulators and game engines, such as SUMO and Unity.

Smart geometry


Arcs and Spires are preferred over cubic spline due to smoother change in curvature.
An iterative algorithm is implemented to connect two endpoints with a spire given their position and tangent, and falls back to cubic spline if the constraint is too hard to satisfy.
Normally, very little to no hand-tuning is needed to achieve a satisfactory road geometry.

Lightweight engine

Implemented straight up from Qt + OpenGL using tailored render pipelines, the 3D view is significantly more efficient than Qt's default 2D graphics.
One can work on a fairly large scene with basic integrated graphics.

Large-scale traffic simulation


Instead of wandering randomly at junctions, each vehicle has its own destination set and route planned out at the moment they are spawned. All destination choices are random but can be seeded as well.
This configuration makes it easier to evolve to a true city simulation, where cars go between home, workplace and commercial facilities.

Auto junction & signal


Connecting roads are hidden lanes that connect all (incoming, outgoing) combinations of a junction. Even a simple 4-way junction made up of simple dual-lane road needs 4*4=16 such connections, so there are a lot of those!
To avoid rendering artifacts caused by overlaps, they are covered by a separate junction boundary layer unless you hover the mouse onto them.

Hwy ramp made easy


One of the biggest complaints of the original Cities:Skylines was you can't make a real highway ramp on city roads.
Although this problem has been gradually solved by various MODs, it's never been as convenient as using the dedicated mode provided by LaneMaker.
Lane/ramp mode allows you to create highway entrances/exits as well as road split/merge points in an intuitive, unified manner.

Undo/redo

What if you accidentally pulled two roads together and resulted in a weird junction? Or if you wished to remove a lane but accidentally added one instead?
One-click undo and redo will make your life so much easier so that you don't need to clean up this mess yourself.

Driving behavior at junctions


Traffic light phases are automatically generated to avoid conflicts from different directions.
When traffic merges at highway entrance, alternate/zipper merge is performed to make sure traffic from either direction won't be blocked.

LaneMaker

Lightweight road editor & simulator

Input

Menu

Modes

I-95 Exit 41. Waltham, MA
Bridge carrying I-90 over I-95. Weston, MA
Lupu Bridge Approach Ramp (North). Shanghai, China
I-90 / I-95 exchange, looking East. Weston, MA
N. Zhongshan Rd underpass. Shanghai, China.
2010 World Expo Site. Shanghai, China.
Nanpu Bridge. Shanghai, China

LaneMaker

Lightweight road editor & simulator

The idea of making a road editing tool came from the time when I was learning Unity during my graduate study.
Tired of all kinds of FPS or platformer games as Unity bootcamp projects, I really wanted to try making something different. I'm a big fan of Simcity games, and was especially motivated by the huge success of Cities:Skylines. It would be super cool if I could program something like that, I always spoke to myself.

I launched the first project in late 2018, named RoadBuilder. Soon I found it's a much bigger kind of challenge than popular entry-level games, due to the nature that most of its content was player-defined: there's no pre-built scene or content, while I need to provide the player with robust and convenient editing tools. In this sense, the game engine itself is less useful than usual: rather than leveraging Unity, I'm largely building an engine within it.
On the other hand, performance is always a concern for this kind of game, and without proper optimization, one can easily end up with thousands and thousands of game objects, gradually overwhelming the hardware as the map expands.

As a newbie in Unity and game development, I underestimated these challenges at that time. The 1-year development ended up with an editor that appeared useable, but one never knows when it will crash or freeze due to random bugs. Even if you got lucky and triggered no issues, it's guaranteed the frame rate will become intolerable within 30 minutes, if you don't have the most powerful graphics card.

After four years in the industry as a simulation engineer, I believe I've got enough experience and skills to stand up to the challenge. This time, I chose the combination of C++ due to its unbeatable performance, and Qt for more straightforward UI development. Instead of reinventing the wheel, I followed ASAM OpenDRIVE and found an extremely useful xodr library to start playing with.

Then the journey of LaneMaker began as year 2024 arrived...

LaneMaker Dev RoadMap (Until Jan 25)