No description
Find a file
in0finite 32c0be1af2
new world loading system (#110)
* wip

* much faster world creation

* add StaticGeometryInspector

* disable child/parent logic and fading

* rename

* (de)activate objects based on parent

* set draw distance based on layers

* ...

* wip

* wip

* wip

* remove unused param

* prevent concurrent modification

* ...

* catch exceptions when notifying

* ...

* notify about area, not objects

* limit public access to Area

* ...

* ...

* allow public access

* add public api

* adapt code

* pass callback to ctor

* adapt focus points

* fix

* fix intersection check

* support rectangles

* adjust parameters in prefab

* this should fix IsInsideOf()

* ...

* ...

* fix getting area by index

* create area if not exists

* ...

* ...

* ...

* wip for distance levels

* remove constraint on generic parameter

* add some validation

* fix

* fix draw distance per level

* change time of day in which lights are visible

* add todos

* don't use id for UnRegisterFocusPoint()

* use hash set for storing focus points

* add 1 more level

* mark area for update only if visibility changes

* profile WorldSystem calls

* add some profiling sections

* limit time per frame for LoadingThread

* switch custom concurrent queue

* copy jobs to buffer

* rename

* change max draw distance setting

* wait one more frame

* try to remove 801 distance level to remove holes

* attempt to hide interiors, but failed

* delete no longer needed script

* optimization

* some error checking

* add camera as focus point

* dont add camera as focus point in headless mode

* working on load priority

* fix bug - load priority finished

* ...

* small optimizations

* ...

* ...

* remove unneeded variable

* add fading

* dont do fading in headless mode

* fadeRate available in inspector

* change fade rate

* take into account if geometry is loaded when checking if object should be visible, and if fading should be done

* small optimization

* cache IsInHeadlessMode

* display Instance info in inspector

* move interiors up in the sky

* rename

* adapt code to different y pos of interiors

* refactor

* fix finding matched enex for enexes that lead to the same interior level

* display new world stats

* rename

* rename class

* ...

* ...

* extract function

* extract parameters into a struct

* add focus point to dead body

* add focus point to vehicle

* add focus point to vehicle detached parts

* remove OutOfRangeDestroyer from vehicle, and destroy vehicle if it falls below the map

* dont use focus points on vehicle and vehicle detached parts, when not on server

* add focus point for npc peds

* add possibility to set timeout during which focus point keeps revealing after it's destroyed

* adapt UnRegisterFocusPoint() to timeout

* rename

* adapt code

* cleanup MapObject class

* ...

* converting to `lock()`

* optimize method: use 1 lock instead of 3

* call OnObjectFinishedLoading() instead of AddToLoadedObjects()

* ...

* make sure it's main thread

* AsyncLoader is no longer thread safe

* convert static members to non-static in LoadingThread

* fix

* ...

* store indexes for each area

* impl GetAreaCenter()

* calculate load priority based on distance to area, not objects ; limit time per frame ; sort area in Cell, not in concurrent SortedSet ;

* add support for changing draw distance at runtime

* delay setting the new value by 0.2 s

* have a separate default max draw distance for mobile platforms

* adjust y axis world params so that number of visible areas is reduced

* remove "camera far clip plane" setting

* rename

* document flags

* rename

* disable shadow casting and receiving for some objects

* allow casting shadows for LODs with large draw distance

* remove "WorldSystem" layer

* revert layer
2021-07-18 06:03:43 +02:00
Assets new world loading system (#110) 2021-07-18 06:03:43 +02:00
Docs update docs - remove items which have corresponding github issues 2020-05-31 19:09:57 +02:00
Packages remove unused packages 2020-05-31 19:09:48 +02:00
ProjectSettings new world loading system (#110) 2021-07-18 06:03:43 +02:00
.gitignore improve gitignore file 2021-02-27 16:15:22 +01:00
.gitmodules RCON Support (#96) 2020-11-01 23:51:03 +01:00
LICENSE Initial commit 2020-05-31 19:07:22 +02:00
README.md change videos 2021-03-06 21:44:32 +01:00

San Andreas Unity



   

San Andreas Unity is an open source reimplementation of GTA San Andreas game engine in Unity.

This won't be a complete reimplementation, but the focus is on gameplay features, mutliplayer, and creating a framework which will allow easy game extending and unlimited modding possibilities.

For more information about the project, read this wiki page.

When running for the first time, the game will ask you for path to GTA installation. You need to own GTA in order to play it.

Download

Download it for Windows, Linux or Android.

The game is tested on Linux, Windows, Mac, and Android. It supports both Mono and IL2CPP scripting backends, so it can be built for any platform that Unity supports, provided that you can copy PC version of GTASA to target device.

Multiplayer

Game fully works in multiplayer. You can start the game as dedicated server, as a host (server & client at the same time), or you can connect to a server. This works on all supported platforms, which means you can start a host even on Android device.

If you want to run a dedicated server, take a look at these instructions.

Development setup

  • clone the project, including submodules: git clone --depth 1 --recurse-submodules https://github.com/GTA-ASM/SanAndreasUnity
  • open the project with Unity 2018.3
  • open startup scene located at Assets/Scenes/Startup.unity
  • press Play button

In-game controls

Press Escape while in game to open pause menu. You'll see there a lot of utilities, and among them, there is a window which shows all controls.

Game modes

Game can be extended through plugins/game modes in the form of C# DLLs. More info on wiki.

Contributing

Join us on discord to discuss about development.

You can check out issues for newcomers, issues related to importing assets from original game, or the whole list of issues.

Issues that are in focus right now are those with high priority label and those found in milestones.

Screenshots

Videos