Giter Site home page Giter Site logo

swordlegend / mathforgamedevelopers Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bsvino/mathforgamedevelopers

0.0 0.0 0.0 5.38 MB

Sample code for my YouTube series.

License: Other

Makefile 0.31% C++ 44.43% C 33.37% GLSL 0.11% Shell 0.65% Batchfile 0.39% TeX 5.76% Mercury 0.13% Objective-C 2.23% D 11.82% Pascal 0.80%

mathforgamedevelopers's Introduction

Math for Game Developers Sample Code

This is the source code for the sample code that I use in my Math for Game Developers YouTube series. If you want to follow along with the videos, you can download by clicking the 'ZIP' button in the header near the top of this page.

Overview

You'll find these directories:

game - This is where the main.cpp is, which is the primary bit of code that we'll be modifying.

math - This is where all of the math stuff that we'll be implementing lives.

content - When the game is run, it's run in this directory, even though there's no .exe in here. That means it looks for its textures, models, shaders, etc files here.

renderer - Shaders and rendering are carried out here. All OpenGL code is contained in these files. To render something, first create a rendering context:

CRenderingContext c(Application()->GetRenderer(), true):

If there's already a rendering context open then use that one, don't create two contexts in the same method.

Shaders are loaded from text files in the shaders directory in the SMAK distribution. The shader library will read every .txt file in this directory and compile it as a new shader. The .txt file specifies which file should be used as the vertex and fragment shaders, so files can be reused between shaders. It also specifies parameters which can be specified in the material .mat files. The files header.si and functions.si are imported for you at the beginning of every shader. Some attributes and uniforms are hard-coded. For vertex shaders:

  • uniform mat4x4 mProjection
  • uniform mat4x4 mView
  • uniform mat4x4 mGlobal

And for fragment shaders:

  • out vec4 vecOutputColor

vecOutputColor is the value to which the output value for a fragment shader should be assigned. The rest are up to you.

datamanager - Sometimes data needs to be serialized to and from the hard drive. data.h contains a CData class that is a generic data container, and dataserializer.h can serialize any CData to and from a stream. Data is stored in a simple format that looks like this:

key: value
{
	// Sub-datas
	key: value
	key2: value

	// Values are optional
	key3
	{
		subdata
	}
}

This format is used for things like shader .txt files.

include and lib - This code depends on some third party libraries, and they can be found here.

Compiling

This project has no dependencies and should compile out-of-the-box. If something doesn't work for you please let me know.

  1. Download and install Visual Studio 2010 Express.
  2. Download the MFGD project files and unpack them somewhere to your hard drive.
  3. Double click the MFGD.sln file. Visual Studio should appear.
  4. Press F7 to compile the game.
  5. Press F5 to run the game.

Want to send your game to a sexy friend? You'll need to do some extra steps.

  1. Go to the dropdown in Visual Studio that says "Debug" and set it to "Release" instead. It should be near the top of the screen.
  2. Press F7 to compile the game in "Release" mode.
  3. Find the file MFGD.exe (it's an "Application" file type) and copy it over to the "content" folder.
  4. Send this content folder to your sexy friend.

(The steps are the same for non-sexy friends.)

For Linux the steps are:

  1. Make sure you have GCC installed for your system.
  2. Download the MFGD project files and unpack them somewhere on your hard drive.
  3. Open a terminal and navigate to this directory, eg "cd ~/mfgd"
  4. Type "make"
  5. Type "./run_mfgd"

Tinker

This code is built on top of Tinker, Lunar Workshop's internal game engine. I ripped out a bunch of stuff so that it's much simpler. As MFGD progresses and new things are learned, I'll add those things back into the engine.

If you want the actual thing you can find it in the SMAK source code, it's much more fully featured. It has materials and a console and a GUI and lots of other neat stuff.

Licenses

Tinker is licensed under a permissive MIT-style license, meaning you may use it to build your own projects with no requirement to distribute the source code, but you must give credit to the original author somewhere in your program, like on the "About" or "Credits" page.

The full text of the license is included in the file LICENSE.Tinker and at the top of every source code file to which it applies.

mathforgamedevelopers's People

Contributors

bsvino avatar gemorin 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.