Skip to content

dannisliang/ActionStreetMap-framework

Repository files navigation

Description

ActionStreetMap is an engine for building real city environment dynamically using OSM data.

The main goal is to simulate a real city, including following options:

  • rendering of different models (e.g. buildings, roads, parks, rivers, etc.) using OSM data for given location and using terrain tiling approach (DONE partially).
  • rendering of non-flat world by using Data Elevation Model (DEM) files (DONE partially).
  • adding a character to the scene, which makes it capable to interact with the environment (DONE partially).
  • filling environment with people, cars, animals, which have realistic behaviour (Not started.)
  • using some external services to extend environment (e.g. weather, famous places, events, public transport schedule, etc.) (Not started).
  • Multiplayer (Not started).

The engine can be used to build different 3D-games (like car simulations or GTA 2/3 ) or for some map tools on top of this framework (target is mobile devices). Actually, in this case the game world can be limited only by OSM maps which means that it will cover almost entire Earth. More info can be found here.

Used technologies: Unity3D, C# (JavaScript is possible for Unity scripting in Demo app)

Structure

ActionStreetMap consists of two repositories:

  • Framework contains source code of ASM framework (Microsoft Visual Studio 2013 solution, .NET 3.5 as target platform, Unity is referenced via UnityEngine.dll assembly).
  • Demo contains source code of showcase (Unity project, ASM framework is referenced via assemblies).

Software architecture

ASM is built using Component Root and Dependency Injection patterns and consists of the following projects:

  • ActionStreetMap.Infrastructure - contains classes which helps to create framework.
  • ActionStreetMap.Core contains classes of core map logic (e.g. MapCSS parser, Scene classes).
  • ActionStreetMap.Osm contains OSM specific classes (e.g OSM parser, element visitors).
  • ActionStreetMap.Models contains classes which builds unity game objects from real world abstractions.
  • ActionStreetMap.Explorer contains application specific logic (e.g. MapCSS declaration rules, model builders).
  • ActionStreetMap.Tests contains unit and integration tests. Also has Main function to run logic as console application (useful for profiling).

Development Tips

  • Do not use Singleton pattern.
  • Do not use DI as Service Locator.
  • Follow GRASP and SOLID principles.
  • Use TDD approach.

About

Framework for building 3D world using OpenStreetMap data and Unity3D game engine

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published