GithubHelp home page GithubHelp logo

insomniacsnorlax / object-pooling-in-unity-demo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from keypax/object-pooling-in-unity-demo

1.0 0.0 0.0 80 KB

This demo project shows custom implementation of Object Pooling used in our upcoming game: Pelagos: Rise of Greece

Home Page: https://www.reddit.com/r/pelagos

License: MIT License

C# 100.00%

object-pooling-in-unity-demo's Introduction

What is Object Pooling?

Object Pooling is an optimization technique that focuses on reusing objects instead of creating and destroying them. In this solution objects are only displayed if they are inside camera view and released after being outside.

More info + example

Alt Text

https://www.youtube.com/watch?v=vGq9RtnU9tg

Real life example

In our game we have created a lot of GameObjects (trees, rocks, buildings). Even with built-in Frustum Culling there was a big drop in game performance. After some investigation we figured out that Unity has a problem even with empty GameObjects if they number in hundreds of thousands.

Object Pooling gave us 3x more FPS than before (from 40 to 120).

About this repository

This demo project showcases a custom implementation of Object Pooling used in our upcoming game:

Pelagos: Rise of Greece.

It contains a working example scene and commented source code.

Requirements

Unity 2019.3.2: go to Unity download archive page and download Unity 2019.3.2 version.

Installation

Just download ZIP of this repo or use GIT client and open in Unity. That's all :)

Implementation

This is a demonstration of a solution that we're using in our project. This is not an out of the box plugin that you can download and make work in 2 minutes. Object Pooling requires specific code architecture approach that is unfortunately not taught on Unity tutorials. In this example we're using Dependency Injection. We also try to use Unity components only if necessary.

It may be scary, but don't worry and take a look :)

Where to start

Good places to start understanding the code are:

ObjectPooler.Application.ObjectPoolerDisplayer

ObjectPooler.Application.Displayers.BuildingsDisplayer

ObjectPooler.Application.Displayers.PeopleDisplayer

and

Map.Application.MapGenerator

Benchmark

Buildings: 22064

People: 16914

Object Pooling ON Object Pooling OFF
148 FPS 30 FPS

Click on screenshot to resize Object Pooling ON Object Pooling OFF

object-pooling-in-unity-demo's People

Contributors

keypax avatar

Stargazers

Ben avatar

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.