GithubHelp home page GithubHelp logo

donnhenry / weave_engine Goto Github PK

View Code? Open in Web Editor NEW

This project forked from benjafriend/weave_engine

0.0 0.0 0.0 123.24 MB

Game engine using DirectX 11 working towards being cross platform and networked.

License: GNU General Public License v3.0

C++ 66.55% HLSL 1.00% C 6.15% C# 0.81% Batchfile 0.15% SourcePawn 20.62% POV-Ray SDL 2.52% Assembly 0.89% Pascal 1.19% Lua 0.02% CMake 0.08% Objective-C 0.02% Shell 0.01%

weave_engine's Introduction

Weave Engine

The Weave Engine is a game engine that utilizes Boost ASIO to create a cross platform server authoritative network stack written in C++. The engine aims to provide an interface for you to build a game on including Lua script bindings, an asset importing pipeline, and an extensible entity component system.

The capabilities of the engine are demonstrated in a Tank shooter game, where players can fire upon their enemies.

This engine aims to accomplish the following:

  • Server authoritative network architecture with a headless server
  • LLVM/Clang compatibility
  • Basic gameplay demo that showcases the networking features of the engine
  • As cross platform as possible (input, graphics, filesystem, etc.)

Getting Started

What do you need?

* is an optional item that you can configure yourself

  1. Download the most up to date release build from the master branch:
  1. Initalize the submodules
  • Run git submodule update --init --recursive at the root directory
  1. Install Boost
  • Download the latest release at [https://www.boost.org/users/download/]
  • Unzip to your desired location
  • From PowerShell or command line run bootstrap.bat
  • Run ./b2 --with-system --with-thread --with-date_time --with-regex --with-serialization --with-filesystem stage
  • NOTE That you may have to specify your toolset if you have multiple MSVC installs. For Visual Studio 2017, append the argument toolset=msvc-14.1
  • This will take some time
  1. Set Enviornment variables
  • Set BOOST_ROOT to your Boost root location (i.e. C:/dev/boost_1_69_0)
  • Set BOOST_LIBRARYDIR to your compiled Boost library location (i.e. C:/dev/boost_1_69_0/stage/lib)

Starter Code

I was provided some starter code in Found. of Game Graphics Programming (IGME 540), Fall 2018 at RIT with Professor Chris Cascioli. We were given a "core" DirectX 11 framework to build upon throughout the semester.

The starter code included initial versions of:

  • DXCore class
  • Game class
  • Main.cpp
  • SimpleShader class
  • PixelShader.hlsl and VertexShader.hlsl

The goal of this course is to explore the use of an advanced graphics API to access hadrd-ware accelerated graphics in a real-time graphics engine context.

Chris Cascioli, Course Syllabus

All of these items have since been heavily modified, but it is worth noting for the begining architectural decisions that had to be made.

The reason that I am using this core framework for this project is because the focus is not on graphics, and it provided a good starting point to go off of.


Creating art assets

If you want to create models, textures, or other art assets for the Weave Engine there are a couple of things you should be aware of.

Assets folder

The assets of the engine are all available to the engine through the Assets folder. In code, you can access the Assets folder with a relative path, as the folder is copied to the output directory with every change to it. Note Depending on how xcopy decides to behave, this can get a little finicky when making changes to existing files.

Material files

The Weave Engine has a material file format to help you when creating PBR materials called wmat. It is a simple JSON file format, making it easy to edit and more readable for none-programmers. The format is as follows:

{
	"MaterialName" : "Cobblestone_Mat",
    "VS" : "VertexShader.cso",
	"PS" : "PixelShader.cso",
	"albedo" : "Assets/Textures/cobblestone_albedo.png",
	"norm" : "Assets/Textures/cobblestone_normals.png",
	"roughness" : "Assets/Textures/cobblestone_roughness.png",
	"metal" : "Assets/Textures/cobblestone_metal.png"
}

In this example a material with the name Cobblestone_Mat will be created using the given arguments.

3D models

When creating 3D models, there are a couple of things to take into consideration. First, while the engine does use Assimp for loading in models, the implementation is a bit limited as it was not really the main focus of the project. Hopefully we can make some post-production improvements to this feature of the engine.

I would recommend using Blender for modeling and exporting to .obj files. Make sure that you calculate your normals and UV unwrap the model, otherwise it will just be black! Furthermore, I would recommend the following blender export settings:

Blender export settings

Branches

master is where we cut our releases staging is what devs merge their feature branches into

weave_engine's People

Contributors

benjafriend avatar ethannichols 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.