Coder Social home page Coder Social logo

vorb's Introduction

discord travis appveyor

Vorb

This repository contains the source code for Regrowth Studios Vorb Game Engine.

Getting Started

NOTE: If you are wanting to set up Vorb to work with Seed of Andromeda, then visit follow the intructions on the SoA github page.

This guide will walk you through setting up as a contributor to or user of the Vorb project. There is a basic requirement of having several packages installed prior to being able to develop. We support all three major operating systems: Windows, Mac and Linux.

Using

If you're intending to just use the Vorb engine, great! Be sure to check out the Vorb wiki and feel free to add any issues you have with the engine for the awareness of the engine contributors.

Contributing

Before beginning to make pull requests for the engine, please take a moment to use the following resources to get an idea of how to contribute, what you might be able to contribute to specifically, and to meet some of the other contributors.

Setting Up:

IMPORTANT: Before following any of the instructions linked below for the platforms we support, please do take a second to fork the repository! If you are new to GitHub, you can do so by clicking the "fork" button on the top right of this page.

If you have cloned the repository before forking, no worries! We can fix it, by following these instructions.

Now we're forked, follow the link to the section on setting up for your OS of choice:

Building:

Now you have a copy of the code, and perhaps have played with it a little, why not give it a whirl?

Setting Up

Windows

Prerequisites

Setup

  1. Open a dos window.
Windows + R
cmd
  1. Create a folder to hold the repositories
cd c:\
mkdir -p repos
  1. Clone the Seed of Andromeda repositories
c:\
cd c:\repos
git clone --recurse-submodules https://github.com/YOUR_GITHUB_NAME/SoACode-Public.git soa
cd c:\repos\soa

Mac

Prerequisites

Setup

  1. Open a terminal.
cmd + space
Terminal
  1. Create a folder to hold the repositories
mkdir ~/repos
  1. Clone the Seed of Andromeda repositories
cd ~/repos
git clone --recurse-submodules https://github.com/YOUR_GITHUB_NAME/SoACode-Public.git soa
cd ~/repos/soa

Linux

Prerequisites

  • Compiler: gcc or clang
    • Install per your preferred operating system package control...
    • Portage:
    sudo emerge -DuNqa gcc   # for gcc
    sudo emerge -DuNqa clang  # for clang
    • PacMan:
    sudo pacman -S gcc
    sudo pacman -S clang
    • Apt:
    sudo apt-get install gcc
    sudo apt-get install clang
    • Yum:
    sudo yum install gcc
    sudo yum install clang
  • Software Version Control: Git
    • Portage:
    sudo emerge -DuNqa git
    • PacMan:
    sudo pacman -S git
    • Apt:
    sudo apt-get install git
    • Yum:
    sudo yum install git

Setup

  1. Open a terminal.
  2. Create a folder to hold the repositories
mkdir ~/repos
  1. Clone the Seed of Andromeda repositories
cd ~/repos
git clone --recurse-submodules https://github.com/YOUR_GITHUB_NAME/SoACode-Public.git soa
cd ~/repos/soa

Building

  1. Pull latest code
cd ~/repos/soa
git checkout develop    # or whichever branch you want
git pull --recurse-submodules
  1. Run CMake
mkdir build
cd build
cmake ../    # plus whatever options you'd like to select.
  1. Build with CMake
cmake --build ./    # plus whatever options you'd like to select (e.g. --clean-first)

Fixing a Pre-Fork Clone

So, you've accidentally cloned the repository before forking it, eh? No problem. Just run the following git commands inside of the repository and everything will be as it should be!

Firstly, if you still haven't, fork the repository!

Now you have a fork we want to set origin of each of your local repository (which is the default remote repository to push changes to) to your corresponding forked repository on GitHub:

# Assuming we're already inside the top-level directory of your Vorb repository.
git remote set-url origin https://github.com/YOUR_GITHUB_NAME/Vorb.git

That's it! It's all fixed. :)

vorb's People

Contributors

barnold1953 avatar brianbruggeman avatar caseymcc avatar czaloj avatar jessenic avatar vyomfadia 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

Watchers

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

vorb's Issues

ColorRGB(A) Downcast

Use static_cast(v) or (ui8)v ?

Currently one is used for color3 and the other for color4. Which is the correct one? I believe we ran into an issue with YAML parsing that caused us to use one over the other.

ValueMediator.h Issue

Having an issue with popValues on line 215.
template<typename ...Types>
std::tuple<Types...> popValues(Handle state) {
// Initialise tuple with default values for each type of Parameters.
std::tuple<Types...> values{ ValueMediator::defaultValue()... };
impl::rpopValues(state, &values);

            return std::move(values);
        }

error: implicit instantiation of undefined template

Hiding unused parameters behind VORB_UNUSED.

In order to get compilation to issue fewer warnings without disabling the warnings themselves, we have hidden all unused parameters behind a macro "VORB_UNUSED". This is a temporary measure and we want to review each location VORB_UNUSED is used, and follow the sequence:

  1. Do we want to reimplement/revise the system in which the function resides?
    • If yes, do so or go to step 3.
  2. Is the parameter unused in all compilation and logic paths of the code?
    • If yes, make the parameter anonymous;
    • If no, mark the parameter with VORB_MAYBE_UNUSED;
    • In either case remove the VORB_USED tag.
  3. Find the next VORB_UNUSED-tagged parameter you want to tackle and go to step 1.

Path:isNice()

It returns false with drive letters. Add some option for semi-portable path.

Window backbuffer and size

Investigate discrepancies and creation of windows whose backbuffer resolutions do not match their size.

Templates issue in "Script.h"

In file included from /home/damir/repos/soa/SoA/MainMenuScriptedUI.cpp:3:

In file included from /home/damir/repos/soa/SoA/SoaEngine.h:20:

In file included from /home/damir/repos/soa/SoA/OptionsController.h:20:

In file included from /home/damir/repos/soa/SoA/Vorb//script/Environment.h:40:

/home/damir/repos/soa/SoA/Vorb/script/Script.h:136:24: error: call to 'fRCall' is ambiguous

                return fRCall<Ret, Args...>(s, (RDelegate<Ret, Args...>*)del);
                       ^~~~~~~~~~~~~~~~~~~~
/home/damir/repos/soa/SoA/Vorb/script/Script.h:153:26: note: in instantiation of function template specialization 'vorb::script::impl::luaDRCall<unsigned long>' requested here

            return impl::luaDRCall<Ret, Args...>;
                         ^
/home/damir/repos/soa/SoA/Vorb//script/Environment.h:149:32: note: in instantiation of function template specialization 'vorb::script::fromRDelegate<unsigned long>' requested here

                ScriptFunc f = fromRDelegate<Ret, Args...>();
                               ^
/home/damir/repos/soa/SoA/MainMenuScriptedUI.cpp:34:10: note: in instantiation of function template specialization 'vorb::script::Environment::addCRDelegate<unsigned long>' requested here

    env->addCRDelegate("size", makeRDelegate(*this, &MainMenuScriptedUI::getNumInputs));
         ^
/home/damir/repos/soa/SoA/Vorb/script/Script.h:112:17: note: candidate function [with Ret = unsigned long]

            i32 fRCall(EnvironmentHandle h, RDelegate<Ret>* del) {
                ^

/home/damir/repos/soa/SoA/Vorb/script/Script.h:117:17: note: candidate function [with Ret = unsigned long, Args = <>]

            i32 fRCall(EnvironmentHandle h, RDelegate<Ret, Args...>* del) {
                ^

Can't resolve this by my own.

Model file loader

Loads file of at least format .obj into an indexed-interleaved-vertex mesh format. It would be preferable to load other types .dae, .fbx and a raw binary type. Should support Pos, Norm, TexCoord, BoneIndex, BoneWeight, and Color attributes for vertices.

Event Ownership

Figure out a way to not expose Event::setSender for better-defined behaviors. Also, separate listener lists for different events. A way to swap listener lists and optionally still keep original senders would be nice:


class A {
    A() : 
    myEvent(this) {
        // Empty
    }
    Event<> myEvent;
}
// ...
A a; // Sender for a is &a as expected
A b = a; // The sender for b should not be &a, but &b. Both should have the same listener lists, yet discrete from each other.

Getting rid of copy methods for events may be the way to go?

Array Functionality

Add more functionality to ArrayBase to support correct object construction and destruction.

Hunter's Yaml-CPP Version Can't Compile In VS2017

We need to keep an eye on yaml-cpp for its next release. When it releases we then need to get Hunter to accept that new version as an option for building with. This will enable compilation on VS2017.

Alternatively, we could heed the issues raised by Cristian in this issue and look for an alternative yaml solution.

Cristian

I take issue on the fact I ended up in some freaking stupid relationship with a girl I didn't even really like and I got dragged away from this project for the last couple years.

Fix:
Get best girl instead

Sound System

Load various formats (mp3, wav, ogg)
Library-Cue format (see XNA)

Script namespaces

Add function into lua "namespaces" (tables):

Current: BulletObject_addForce()

New: BulletObject.addForce()

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.