Coder Social home page Coder Social logo

runshoot's People

Watchers

 avatar  avatar

runshoot's Issues

Switch to tinygltf

Tinygltf is meant to make it really straight forward to plug into opengl. It has the concept of primitive that have attributes. Need to figure out a good way to integrate.

Optimize away maps in component accessors

In ECS, each entity currently has an accessor that keeps a map of component bit to the memory address of the component for that entity.

This kind of defeats the purpose of the whole system, since each entity now has some heap data that it uses, and there's no cache coherence.

Come up with a way of storing component offsets within the entity's memory chunk, and implement an accessor for that.

Cut down Assimp lib size

The static lib for assimp is massive. It's only a debug build, but still. There's a way to specify whether or not to build individual importers. We really only need glTF2, but should also support:

OBJ
FBX

Fix alignment calculation in archetype_pool

archetype_pool.hpp

The alignment handling is wrong. alignment is calculated on ptr_offset, but should be calculated for the actual raw aligned address + ptr_offset. This will be different for different addresses.

Create a system for prototypes.

Like Unity's prototypes, you should be able to create files for some 'preset' entities, which have a certain archetype, and are stored in files like spaceship.json. Entity factory should then be able to read these, and give you an initialized entity.

This should have the ability to pre-cache all prototypes used in a scene, so that we have a bunch of json objects, which we don't have to read at runtime.

See creator registration from lectures. It would be pretty good to support something like:

entity_world.register_creator(archetype_id, my_entity_creator);

So, you could have both json prototype files that specify how to build that entity, and hard-coded objects that might have preference. Serialized files can contain a entity creator id.

Keep data inheritance in mind - it's good to have prototypes that refer to other prototypes, but override some values.

Create a "client-components" interface

Currently, the client has to know about scene_loaders (or entity_component_loader's, after scene loader has been split up). The client has to fill the map of component loaders with their own loaders, and the map of bit_metas in component_meta with the metas for their custom compoents.....

I know how to do all this, but another programmer will never know. We need an interface that the client has to implement, which explicitly requires all this startup stuff. In particular:

A method for taking the bitshift_to_component_loader map, and filling it with custom loaders for custom components.

A method for taking component_meta::bit_metas, and filling that with custom component metas as well.

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.