Giter Site home page Giter Site logo

lockstepframework's Introduction

Lockstep Framework

The Lockstep Framework (LSF) is a framework designed for games that need lockstep simulations. It includes a deterministic 2D physics engine, pathfinding, behavior system, and more. LSF is integrated with Unity.

Special thanks to Liv Games (http://www.livgames.com), 360 Studio (http://www.360studio.me), and Thoopid (http://www.thoopid.com/) for supporting the development of Lockstep Framework. Also, thank you GladFox (https://github.com/GladFox) and the community for helping with development.

Created by John Pan (https://github.com/SnpM).

NOTE: LSF is no longer being actively developed. The latest commit targets Unity 2019.1f1.

Features

  • Deterministic math library and simulation
  • Custom 2D physics engine on the X-Z plane
  • Behaviour system for both individual agents and globally
  • Lockstep variables - know when and where desyncs happen
  • Size-based pathfinding (big units won't get stuck in narrow gaps)
  • Customizable database system
  • Support for DarkRift and Photon Networking (Forge Networking support deprecated but let me know if you need it)

Quick Setup

  1. Import the framework into a Unity project and open Lockstep-Framework/Example/ExampleScene
  2. Set up the database and settings by navigating to the Lockstep/Database window or pressing Control - Shift - L.
  3. In the Settings foldout of the database window, click Load and navigate to Lockstep-Framework/Example/ExampleDatabase/Example_Database.asset to load the preconfigured database for the example.
  4. Play!

Note: The example only shows the basic functionality of the framework. Comprehensive examples will be added close to the end of core development.

Tutorials and more

To find out more about Lockstep Framework, please explore the wiki (https://github.com/SnpM/LockstepFramework/wiki) and feel free to ask us questions.

Check out tutorial series here: https://github.com/SnpM/LockstepFramework/wiki/Tutorial-Series

License

The MIT License (MIT)

Copyright (c) 2015 John Pan

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

lockstepframework's People

Contributors

danielpunct avatar doctorpangloss avatar gcat avatar gladfox avatar ijustcreate avatar pappapierre84 avatar proepkes avatar snpm avatar tombali avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lockstepframework's Issues

GridManager causing massive GC allocation

In clean LS clone...

  1. Change grid setting in GridSettings class to
    public GridSettings() { Init(512, 512, FixedMath.Create(-256), FixedMath.Create(-256), true); }

  2. Make test script with following code

using UnityEngine;
using Lockstep;

public class Test : MonoBehaviour {
private void Update() {
if (Input.GetKeyDown(KeyCode.G)) {
GridManager.Initialize();
}
}
}

  1. Attach it to some object, hit play with profiler open. After invoking GridManager.Initialize();, wait for CPU spike in profiler. Click on the spike. You should see 72MB allocated to GC.

ls

Desert RTS

Hey developers! If you haven't seen it yet, I'm making a tutorial series/project for Lockstep Framework called Desert RTS.

Unfortunately, it's my first tutorial series and I'm scrambling around a bit to tackle new topics. Are there any big rocks you want me to hit or ideas/feedback to improve the tutorial series?

still alive

Hi,

I'm very interested in using this framework (I already worked on lockstep networking & physics).
So is the project still alive ? Do you need any help ?
Thanks

Using just the physics engine?

Hi,

Is it possible to use this framework just for the deterministic physics engine? Does that require a server?

I have a networking solution to send data between players, player to player, but I don't have a physics engine that can recreate the physics identically on both platforms. I'd like to be able to make sure the physics play back identically on both devices (being simulated on both devices, and just passing the action data between two players in a turn based manner).

Thanks!

example does nothing

I followed the instructions on the front page and when I hit play nothing happens, there's no characters to move, no keys or mouse trigger anything at all.
There's just 2 buttons on screen 'Save' and 'Restart' and some white terrain.

Also when i first opened the example scene the 'Manager' object was a broken prefab link.

Using Unity 5.3.4f1

Error when "Rewind" GUI button pressed.

Hi, when I click the Rewind GUI button (after clicking save) in the example scene I get the following error:

ArgumentNullException: Argument cannot be null. Parameter name: value System.BitConverter.PutBytes (System.Byte* dst, System.Byte[] src, Int32 start_index, Int32 count) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/BitConverter.cs:170) System.BitConverter.ToInt32 (System.Byte[] value, Int32 startIndex) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/BitConverter.cs:228) Lockstep.Reader.ReadInt () (at Assets/LockstepFramework-Master/Core/Utility/Serialization/Reader.cs:69) Lockstep.ReplayManager.Deserialize (Lockstep.Reader reader) (at Assets/LockstepFramework-Master/Core/Game/Managers/ReplayManager.cs:94) Lockstep.ReplayManager+<StreamPlayback>c__IteratorA.MoveNext () (at Assets/LockstepFramework-Master/Core/Game/Managers/ReplayManager.cs:136) UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

It's coming from the sphere primitive object ( created in LockstepManager.Setup() ). As far as I can tell the database is initialized correctly as per the instructions.

I have been pouring over the code to figure out how to use the framework. I have successfully setup my own scene and my own units etc, but I am uncertain as to how to properly implement my own commands (such as creating a building or spawning a unit on demand etc).

Any help is much appreciated, I'm very excited about the project!

(My apologies if this is the wrong place to ask these questions it's my first github issue post).

About me and the state of Lockstep Framework

I started this project 3 years ago at 15 years old after withdrawing from high school. It was an endeavor of genuine passion but the lifestyle I adopted while improving as a programmer and developing LSF took tolls on my physical and mental health. I developed an addiction to video games and locked myself inside most days of the week. After coming back from a month-long backpacking trip, I put my life and future into perspective and decided that I want to join the military.

The past 2 months, I've been mercilessly working on my weight, scrambling through paperwork, getting college credits to make up for high school, and studying for the ASVAB. I've lost 40+lbs, got 18 college credits so far, and scored in the 99th percentile on the ASVAB. I plan to leave on the first available spot to basic training which will be around October.

What does this mean for Lockstep Framework? At the moment there is working multiplayer and deterministic gameplay but documentation is lacking and there are many things I want to clean up and improve on.

Since the beginning, I loved the fact that people cared enough to help develop this Framework and that will always be an option. I value every contribution from GladFox and others who helped with the development of LS. My involvement in development will be based on how much time and energy I have in the coming weeks. I still have many more tests to study and take. I hope that I will be able to commit another few months to LS to complete documentation and polish features (there's also a fast fog of war system I have planned conceptually).

I will post an update the moment I decide to give LS the final sprint it needs.

-SnpM

Room for Simulate() Optimizations?

I notice that when there is a considerable number of agents in the scene (talking about >400 in my case) I start to get lag, and my machine is rather powerful compared to low-end or mobile devices. I'm wondering if this could be improved by not calling Simulate() on every FixedUpdate() but instead keep a "dirty" list of those who need to? This especially considers LSAgent instances and maybe even more specifically their abilitymanager simulation round.

Oh, how I tested this was just the ExampleScene (it's working now, thank you) and spawning default TestAgents as in tutorial part 2.

Example/Tutorial/Documentation

Hello,
is it possible to get a better example/tutorial/documentation? It is a complex project to understand without good help.
(yes, i read the wiki, but its very short)

thanks!

Why was GetStateHash used as a name over GetHashCode?

I am going through the code and cleaning up as many warnings and issues as I can to tidy it up before diving into the project I want to make with it. What was the motivation to use GetStateHash as the name for the hash code method for all objects over the default GetHashCode that should be overriden in all of these objects with the logic implemented in GetStateHash. Is there something special about the StateHash that means it shouldn't be used in all GetHashCode calls? If not I'll make a pull request renaming all instances of GetStateHash to GetHashCode, or if people prefer keep GetStateHash and add a GetHashCode that simply calls GetStateHash.

can not run this framework on unity5.6.3

follow the readme

  1. Import the framework into a Unity project and open Lockstep-Framework/Example/ExampleScene
  2. Set up the database and settings by navigating to the Lockstep/Database window or pressing Control - Shift - L.
    at this step i got follow error ,and can't load Example_Database.asset
    NullReferenceException: Object reference not set to an instance of an object
    Lockstep.Data.EditorLSDatabaseWindow.OnEnable () (at Assets/Database/Editor/EditorLSDatabaseWindow.cs:41)
    UnityEditor.EditorWindow:GetWindow()
    Lockstep.Data.EditorLSDatabaseWindow:Menu() (at Assets/Database/Editor/EditorLSDatabaseWindow.cs:33)

Partition Issue

Units don't collide with other units at certain positions due to incorrect mapping to partition nodes.

Desync in playback

I'm using Unity 5.4.0f3.

Massive desync in playback. I play the example scene and then press save. It tries to playback what happens the first time yet the simulation desyncs from the first frame. The desync can be visually observed but I also used the DeterminismTester.

Also an argument null exception is thrown when I press the rewind button.

here is gif illustrating the issue
http://i.imgur.com/z6XcHNi.gif

Unable to start up project

I am trying to create a custom NetworkHelper for this framewrok. Currently, I am unable to get the project up and running. I am running into errors related to some scriptable database object.

NullReferenceException: No LockstepFrameworkSettings detected. Make sure there is one in the root directory of a Resources folder

I have tried creating the asset using the inspector window, and that is not helping. please advise.

DynamicBlocker

when you call DynamicBlocker.OnDeactivate(),the pathfinding System still believe this block is unpassable.
I resolve it by setting GridNode._clearanceDegree=1
when (unwalkable==false&&_clearanceDegree==0) in the function GridNode.UpdateClearance()

I am confused about changing Time.timeScale

if Call TweakFramerate(); fixedUpdate function will be fater or slower. for expamle snake game , i dont control snake movement, but it still move along last direction. if time.scaleTime is modified, how to
make sure same movement between diff devices.

Merging

I've learned my lesson. Gonna set up a develop branch tomorrow so git explosions can be contained. For now, Master2 is stable and up to date but Master is a bit exploded.

Avoidance Priority

Is there a way to set an avoidance priority?
Just like how it works in Unity3d Navmesh Agent. The high priority agent in away can push low priority agent. And the low priority agent will have to find other path if high priority agent is in a way.

Bug about circle collider

Bug happens when I add a new blocker at ExampleScene. The blocker object is just a wall copy with Unity LS Body Shape circle. It seems circle collider doesnt work correct. Unity 2018.1.3.

ScanNode.BucketsWithAllegiance() causes a dramatically gc?

Hello John,

I uses this framework in mobile game, as issue title describe, when I checked performance via profiler, I found this function had been called in a huge number and making a gc allocate frequently.

This may be not an "issue" for desktop, but this count of gc impacts frame rate dramatically on mobile devices, I've researched it for a while, but can't find a solution, could you please take a look at this function, and give some advice?

thanks
Johnson

unit chasing issue

Hi, I'm testing the demo's pathfinding for my project, everything is fine, but when a unit is chasing another, if I change one's path(select it and hit somewhere else) , the chasing one is still following the old path, until get to the last point where the changed one was, then turn to the changed one.

the behavior I expect is if the one being chased turn to other direction, the chasing one immediately update the chasing direction, could you please point out a way to achieve this?

TerrainData is missing splat texture 0

hi,import the framework into a project , then display “TerrainData is missing splat texture 0”
image

the Material of prefabs is miss.
is there anything uncommitted?
unity version: 5.6.0p4

Example ?

After a little trial I was able to get the project built and running without errors. That said, nothing is happening. I know you had mentioned that better examples are coming, but, I don't see any activity in the included example scene. Can you comment on this ?

ExampleScene broken?

Hey, I just found the framework and I'm excited to see what I can do with it. I'm only wondering if the ExampleScene scene is broken some way. When the game is started the units are scattered in the map in a long line formation (some are outside and complaining "No node at position") and there doesn't seem to be any sort of movement or selection interaction with the units. Also, Manager object prefab connection is missing and it's showing in red in the hierarchy view. I'm using Unity 2017.3.1f1

Watch

I'm watching your project and appreciate it very much.

replay in GUI doesn't replay deterministically

In the example scene, try and move around the objects, collide with each other
then press replay, the result will be 90% the same but not 100%
the longer it will play the more you will notice the desync

Why is the default saver used vs objects self initializing?

I have been pulling the code apart for this project. I'd like to make a reasonable fighting game with it (using a different network structure than what is currently setup for rts). I am trying to make a simple scene as a prototype that is just a 2d world with a bouncing ball on a flat surface. There seems to be some system of registering objects in the scene with a saver object. I want to know why this is the preferred method. I don't understand why I can't edit objects in the scene and have the objects self register on wakeup and to set up their initial positions based on their transforms. Why is the default approach using a saver object and clicking save for the scene in the editor to load all the lsbodies into the saver, then on game start only acknowledging objects that were loaded from the saver and not any that are in the level at game start. The only reasons I can think of are for network synchronization or because the other manager objects aren't guaranteed to be initialized before the lsbody objects but those seem like solvable problems without using the saver mechanism.

Tutorial / Documentation

Hey,
is it possible to get a simple Youtube-tutorial or a better documentation of the LS-Framework?
I am a bit overwhelmed by the project size and missing some information about it.

I know it is on the agenda to do, but maybe a simple youtube video is more efficient in explaining it than a longer wiki. :)

Open Lockstep Data window NullReferenceException

ctrl+shift+L
NullReferenceException: Object reference not set to an instance of an object
TypeReferences.ClassTypeReference.op_Implicit (TypeReferences.ClassTypeReference typeReference) (at Assets/LockstepFramework/Integration/Rotorz/ClassTypeReference/ClassTypeReference/ClassTypeReference.cs:94)
Lockstep.Data.EditorLSDatabaseWindow.get_DatabaseType () (at Assets/LockstepFramework/Database/Editor/EditorLSDatabaseWindow.cs:13)
Lockstep.Data.EditorLSDatabaseWindow.LoadDatabase (Lockstep.Data.LSDatabase database) (at Assets/LockstepFramework/Database/Editor/EditorLSDatabaseWindow.cs:170)
Lockstep.Data.EditorLSDatabaseWindow.LoadInit () (at Assets/LockstepFramework/Database/Editor/EditorLSDatabaseWindow.cs:44)
Lockstep.Data.EditorLSDatabaseWindow.OnGUI () (at Assets/LockstepFramework/Database/Editor/EditorLSDatabaseWindow.cs:63)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:272)
UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:265)
UnityEditor.HostView.InvokeOnGUI (Rect onGUIPosition) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:232)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

ExampleScene input and navigation doesn't work.

First I tried the project with Unity 2018.2.0f2. Didn't work after fixing IndexOutOfBound. It can be played, but agents are not selectable. Even after fixing the layer issue with the terrain(Ground).

Then ran it with Unity 2018.1.7f1. Same goes there. For master, develop, desertRts branches.

What's the current version running the project properly? (Can't recall which version I used when it worked)

LSBody changes

I made some big changes to LSBody. It still has the same API and functionality for the most part but now it no longer inherits from MonoBehaviour so it can be created without the additional overhead.

On the Unity side, instead of using LSBody as the component, use UnityLSBody. It has identical behavior in the inspector.

All data from the previous LSBody will be kept in a legacy script. I made a tool to automatically map all the data from the legacy LSBody to UnityLSBody so you (hopefully) won't have to redo all those values.

Let me know how it goes. This is a pretty big change. Currently keeping it in Develop until I know it's squeaky clean. If the updating is working for everyone, I'll close this issue and ship the new LSBody off to Master.

How can I set the move speed with script?

I need to set the speed in () with code. So I tweak the code a bit:

public virtual long Speed { get { return _speed ; } set { _speed = value;} }

However, whatever number I send in, it will give me some funny floating number:

instance.GetComponent<Move>().Speed = 6; //I will get 9.1552734375e-05, I don't know why

This is the first time I am using long number and based on my research it should only give me back 6.

What seems to be the problem here?

Or is there a better way for me to set the Speed ?

PanLineAlgorithm not found

Line 3 and 4 of RaycastTestHelper.cs are raising an design time error. No reference for PanLineAlgorithm

using UnityEngine;
using System.Collections;
using PanLineAlgorithm;
using CCoordinate = PanLineAlgorithm.FractionalLineAlgorithm.Coordinate;
namespace Lockstep.Test
{
    public class RaycastTestHelper : MonoBehaviour
    {
        public bool testPartitions = true;
        public bool testBodies = true;
        public Transform start;
        public Transform end;
        Vector2d startPos;
        Vector2d endPos;
        void OnDrawGizmos () {
             startPos = new Vector2d(start.position);
             endPos = new Vector2d(end.position);
            if (testPartitions)TestPartitions ();
            if (testBodies)TestBodies ();
            Gizmos.DrawLine(startPos.ToVector3(0),endPos.ToVector3(0));
        }
        FastList<LSBody> lastBodies = new FastList<LSBody>();
        void TestBodies () {
            if (Application.isPlaying == false) return;
            for (int i = 0; i < lastBodies.Count; i++) {
                lastBodies[i].GetComponentInChildren<Renderer>().material.color = Color.white;
            }
            lastBodies.FastClear();
            foreach (LSBody body in Raycaster.RaycastAll (startPos, endPos)) {
                body.GetComponentInChildren<Renderer>().material.color = Color.red;
                lastBodies.Add(body);
            }
        }
        void TestPartitions () {
            int width = Partition.Nodes.Width;
            int height = Partition.Nodes.Height;
            bool[,] casted = new bool[width,height];

            foreach (CCoordinate coor in Raycaster.GetRelevantNodeCoordinates (startPos,endPos)) {
                if (Partition.CheckValid(coor.X,coor.Y))
                    casted[coor.X,coor.Y] = true;
            }

            Vector3 size = new Vector3(1 << Partition.AdditionalShiftSize, .1f, 1 << Partition.AdditionalShiftSize);
            for (int i = 0; i < width; i++) {
                for (int j = 0; j < height; j++) {
                    if (casted[i,j])
                        Gizmos.color = Color.red;
                    else
                        Gizmos.color = Color.green;
                    Vector3 drawPos = new Vector2d (Partition.GetWorldX(i), Partition.GetWorldY(j)).ToVector3(0);
                    Gizmos.DrawCube (drawPos, size);
                    Gizmos.color = Color.black;
                    Gizmos.DrawWireCube(drawPos,size);
                }
            }
        }
    }
}

grouping units near a polygon LSBody

While grouping units near a polygon LSBody like in the picture
the units push each other into a LSBody polygon object

this bug won't occur if the LSBody is a Circle / AA Box, only in a Polygon

screenshot 2016-03-22 20 46 35

it will also cause an error
OverflowException: Number overflow. Lockstep.Array2D 1[Lockstep.PartitionNode].Resize (Int32 newWidth, Int32 newHeight) (at Assets/LockstepFramework-Develop/Core/Utility/Array2D.cs:113)

Pathfinding causes stopped frame

If you were to block out a box of unavailable path, with available path on the inside (but no route to the path), it causes a massive frame drop.

I.E.

image

You can replicate by clicking on a green node inside the square of red nodes.
Any way to remove this drop?

关于Quick Setup

hi,最近我在学习Lockstep,很高兴看到这个框架。有些问题想请教你,希望你能解答。另外我从你的名字,猜想你是一名**人,因此选择用中文。你为什么不用一个unity的工程(包含Assets和ProjectSettings目录)?是有什么特别的原因吗?另外我按你的说明(Quick Setup),结果打开ExampleScene,显示Game窗口 Displayer 1 No cameras rending,控制台显示TerrainData is missing splat texture 0. 并且在Hierarchy窗口有显示Missing Prefab,简单说就是没跑起来。望指导。另外,你用的Unity什么版本?

IndexOutOfRangeException in fresh example

Started a new project in Unity 2018.01, set up the example database and started the example scene

The green units appear and then the game pauses because of the following exception:

IndexOutOfRangeException: Array index is out of range.
FastCollections.FastList`1[System.Int32].get_Item (Int32 index) (at Assets/LockstepFramework/Core/Utility/FastCollections-master/FastList.cs:150)
Lockstep.PhysicsTool.CircleCast (Vector2d position, Int64 radius, FastCollections.FastList`1 output) (at Assets/LockstepFramework/Core/Simulation/Physics/Core/PhysicsTool.cs:31)
Lockstep.InfluenceManager.ScanAll (Vector2d position, Int64 radius, System.Func`2 agentConditional, System.Func`2 bucketConditional, FastCollections.FastList`1 output) (at Assets/LockstepFramework/Core/Simulation/Grid/Influence/InfluenceManager.cs:82)
Lockstep.InfluenceManager.Scan (Vector2d position, Int64 radius, System.Func`2 agentConditional, System.Func`2 bucketConditional) (at Assets/LockstepFramework/Core/Simulation/Grid/Influence/InfluenceManager.cs:67)
Lockstep.Scan.DoScan () (at Assets/LockstepFramework/Core/Game/Abilities/Essential/Scan.cs:673)
Lockstep.Scan.ScanAndEngage () (at Assets/LockstepFramework/Core/Game/Abilities/Essential/Scan.cs:619)
Lockstep.Scan.BehaveWithNoTarget () (at Assets/LockstepFramework/Core/Game/Abilities/Essential/Scan.cs:359)
Lockstep.Scan.OnSimulate () (at Assets/LockstepFramework/Core/Game/Abilities/Essential/Scan.cs:197)
Lockstep.Ability.Simulate () (at Assets/LockstepFramework/Core/Game/Abilities/Ability.cs:143)
Lockstep.AbilityManager.Simulate () (at Assets/LockstepFramework/Core/Game/Abilities/AbilityManager.cs:50)
Lockstep.LSAgent.Simulate () (at Assets/LockstepFramework/Core/Game/Agents/LSAgent.cs:401)
Lockstep.AgentController.Simulate () (at Assets/LockstepFramework/Core/Game/Agents/AgentControllerSystem/AgentController.cs:158)
Lockstep.LockstepManager.Simulate () (at Assets/LockstepFramework/Core/Game/Managers/LockstepManager.cs:220)
Lockstep.GameManager.FixedUpdate () (at Assets/LockstepFramework/Core/Game/Managers/GameManager/GameManager.cs:23)

https://i.imgur.com/Qx3E1cL.png

Same happens in Unity 2017.4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.