Giter Site home page Giter Site logo

megafauna's People

Contributors

agudpp avatar

Stargazers

 avatar

Watchers

 avatar  avatar

megafauna's Issues

Culling system

We can use zone portal system (using a colored graph).
Check if we will be able to fly around all the world.

Investigate units locomotion

How the animals will be moving into the world (using Pathfinding?) they will be free to move around every place? they will just move following a path?

[pathfinding]: Create navmesh main class to handle everything

We will centralize some functionality in this class:

  • Be able to get a node of the TriGraph given a position Vector2.
  • Be able to calculate a path (shortest path) from two positions / TriNodes.
  • Be able to improve the path with funneling for example or any other algorithm.

We will need to create / use some kind of data structure to hold the nodes (space partition). Check kd-trees or try to invent the space partition structure already thought.

Implement Zone classes and logic to draw and load them

Design zones classes.
Design how we will handle it (where we will put them).
We should be able to select / highlight / hide them.

At a first instance we only need to highlight them when the player is over it (so the signal we will receive in the ZoneClasses should be easy, when we enter we highlight it, when we go out then we turn it off again (probably with alpha instead of highlight it)).

Skeleton multiple instances performance

Check for performance if multiple meshes (9999 meshes) invisible and using the same skeleton are killing the performance (this test will check if the meshes are updated being invisible).
Do the same check attaching / detaching from the scene node

Fix cameras design issues for the tools

Create a CameraHandler and create a good interface for the different cameras.

  • Orbit camera.
  • FreeFlight camera.
  • Satellite camera.

Inherit all of them from Camera

Design classes of the path system

  • Design how the paths will be (graphs or just linked node).
  • Create the classes interface to support both.
  • Create the Loader of paths from (.path) file.
  • Create an importer / exporter tool to export .scene / .mesh or whatever and create a .path file.

HeightMap: Add importer from ogre mesh

We aren't using a height map directly since the level itself is made in Blender and is not modeled as a height map...
The importer should:

  • Read a .mesh file and extract its vertices.
  • Remove duplicated vertices
  • Check that they are equidistant.
  • Configure a HeightMap as result.

An idea of how to implement it:

  • Get the number of vertices and get the AABB associated.
  • Remove duplicated vertices.
  • Pick one element of all the vertices and all the other vertices that have the same Y value and put all of them in a vector V (remove all this elements from the original vector).
  • Sort(V) by X and check that all the elements have the same distance between them.
  • Once V contains a valid set of elements, get the size of the vector, that should be always the same for the next iterations. Save the vector for further sorting (this represent a row).
  • Iterate over the main vector removing elements and putting them into V and do the same process again.
  • Once we have all the Vi (rows) sort the vectors (as if they were one element) by Y, and then we have the sorted matrix we need. V0 contain the first row, V1 the second and so on.

Check how to handle LOD

Check for the mesh and material stuff.
Check for the current Ogre implementations.
See if we will use an own implementation (this will let us separate from the RenderEngine).

Pathfinding

We will use constrained Delaunay triangulation as the "navmesh" as base of the pathfinding system.
We will basically need to do this:

  • From a given .mesh, extract its triangles => and transform into a 2D graph (for this we will need to create a Graph structure (generic and be able to serialize directly into memory, using indices instead of pointers) ).
  • Extract the silhouette of the graph (to apply Delauany) if we will use the external C++ library or if we will create a own implementation of the algorithm (n log n).
  • Apply delaunay and use that triangulation as the base of the nav mesh.

After that we need to implement:

  • The A* for triangulation.
  • Check if we will use multiple levels for the graph.
  • Create the "bitset" structure used with shorts and a counter (in the initialize() function) to avoid initialization (more memory but probably faster).
  • Check what we will put in the nodes of the graphs (representing the edges of the triangulation).
  • Check for the funnel algorithm and implementation to improve the last pathfind...

We will need to create also a tool to show this working...

PrimitiveDrawer

Add a primitive drawer to be able to create/add:
Planes (with colors), and also to be able to change them on runtime.
Lines.
PositionedText.
Boxes.
Spheres.

[core/trigger_system] Improve TriggerMatrix stuff

We can improve this just allocating everything contiguous in memory (custom allocator) or modifying the data structures (avoid std::vector). We can do this because we know the whole size before constructing anything.

Implement and test PathExporter

This class will read a .scene file and create the associated path file for it.
create this class and some unit tests using an already created .scene file.

[pathfinding]: Create the TriGraph (for triangles)

This class should contain all the information of the triangle graph (nodes and links). It should detect non connected components and be able to save the information into a binary file (export/import).
Probably it will be a good idea to make some performance tests.

Investigate terrain

Check how we will do to use different chunks of terrain and avoid visual problems when we merge them into the scene.

Path_system: definicion / norma de como se crean en blender

Vamos a definir los paths con meshes usando la siguiente norma:
Cada path esta representado por un conjunto de meshes que siguen la siguiente logica:
Su pongamos que tenemos el "Path" con 4 nodos Nodo1, Nodo2, Nodo3, Nodo4 (donde de Nodo4 vamos directamente a Nodo1 => es ciclico) tenemos que generar 4 meshes (cajas o lo que sea como sigue):
tigre_1.mesh, tigre_2.mesh, tigre_3.mesh, tigre_4.mesh, donde tigre puede ser cualquier otra palabra (PERO IGUAL EN TODOS LOS MESHES QUE CONFORMAN EL PATH).
Basicamente lo que yo uso es solamente el .scene (NO ME IMPORTAN LOS MESHES), asique eso es lo que voy a usar, un .scene.

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.