Coder Social home page Coder Social logo

15-466-f18-base1's Introduction

Game Information

(Note: fill in this portion with information about your game.)

Title: (TODO: your game's title)

Author: (TODO: your name)

Design Document: [TODO: name of design document](TODO: link to design document)

Screen Shot:

Screen Shot

How To Play:

TODO: describe the controls and (if needed) goals/strategy.

Changes From The Design Document:

TODO: what did you need to add/remove/modify from the original design? Why?

Good / Bad / Ugly Code:

TODO: provide examples of code you wrote from this project that you think is good (elegant, simple, useful), bad (hack-y, brittle, unreadable), and ugly (particularly inelegant). Provide a sentence or two of justification for the examples.

Using This Base Code

Before you dive into the code, it helps to understand the overall structure of this repository.

  • Files you should read and/or edit:
    • main.cpp creates the game window and contains the main loop. You should read through this file to understand what it's doing, but you shouldn't need to change things (other than window title and size).
    • GameMode.*pp declaration+definition for the Game struct. These files will contain the bulk of your code changes.
    • meshes/export-meshes.py exports meshes from a .blend file into a format usable by our game runtime. You will need to edit this file to add vertex color export code.
    • Jamfile responsible for telling FTJam how to build the project. If you add any additional .cpp files or want to change the name of your runtime executable you will need to modify this.
    • .gitignore ignores the objs/ directory and the generated executable file. You will need to change it if your executable name changes. (If you find yourself changing it to ignore, e.g., your editor's swap files you should probably, instead be investigating making this change in the global git configuration.)
    • Scene.*pp scene graph implementation
  • Files you should read the header for (and use):
    • data_path.*pp contains a helper function that allows you to specify paths relative to the executable (instead of the current working directory). Very useful when loading assets.
    • compile_program.*pp contains a helper function that compiles OpenGL shader programs.
  • Files you probably don't need to read or edit:
    • GL.hpp includes OpenGL prototypes without the namespace pollution of (e.g.) SDL's OpenGL header. It makes use of glcorearb.h and gl_shims.*pp to make this happen.
    • make-gl-shims.py does what it says on the tin. Included in case you are curious. You won't need to run it.
    • read_chunk.hpp contains a function that reads a vector of structures prefixed by a magic number. It's surprising how many simple file formats you can create that only require such a function to access.

Changes from Base0

  • export-meshes.py now supports exporting various subsets of points, normals, colors, textures, and edge lines (based on export filename).
  • export-meshes.py now exports just the referenced meshes (by mesh name).
  • export-scene.py is a new export script which writes the transform hierarchy (by object name) and mesh references for each object (by mesh name).
  • Mode.*pp defines a base class for a full-screen mode (like a menu or game).
  • MenuMode.*pp defines
  • Load.*pp provides helpers for asset loading.
  • CratesMode.*pp shows how to use the included Scene graph code.
  • many, many more changes.

Asset Build Instructions

In order to generate the dist/crates.pnc file, tell blender to execute the meshes/export-meshes.py script:

blender --background --python meshes/export-meshes.py -- meshes/crates.blend dist/crates.pnc

In order to generate the dist/crates.scene file, tell blender to execute the meshes/export-scene.py script:

blender --background --python meshes/export-scene.py -- meshes/crates.blend dist/crates.scene

There is a Makefile in the meshes directory that will do this for you.

Runtime Build Instructions

The runtime code has been set up to be built with FT Jam.

Getting Jam

For more information on Jam, see the Jam Documentation page at Perforce, which includes both reference documentation and a getting started guide.

On unixish OSs, Jam is available from your package manager:

	brew install ftjam #on OSX
	apt get ftjam #on Debian-ish Linux

On Windows, you can get a binary from sourceforge, and put it somewhere in your %PATH%. (Possibly: also set the JAM_TOOLSET variable to VISUALC.)

Libraries

This code uses the libSDL library to create an OpenGL context, and the glm library for OpenGL-friendly matrix/vector types. On MacOS and Linux, the code should work out-of-the-box if if you have these installed through your package manager.

If you are compiling on Windows or don't want to install these libraries globally there are pre-built library packages available in the kit-libs-linux, kit-libs-osx, and kit-libs-win repositories. Simply clone into a subfolder and the build should work.

Building

Open a terminal (or x64 Native Tools Command Prompt for VS 2017 on Windows), change to the directory containing this code, and type:

jam

That's it. You can use jam -jN to run N parallel jobs if you'd like; jam -q to instruct jam to quit after the first error; jam -dx to show commands being executed; or jam main.o to build a specific file (in this case, main.cpp). jam -h will print help on additional options.

15-466-f18-base1's People

Contributors

ixchow avatar

Watchers

James Cloos avatar  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.