Git Product home page Git Product logo

gamebase's Introduction

gamebase

Introduction

This project is mainly the wscript file which downloads, extracts, and compiles some common C/C++ libraries for building games. It will also build your game and link it with those libraries.

But Why??

gamebase serves a few goals for GameBuilders. The most pressing was the need for a common build system a C++ game-build-a-thon. Unlike, say, Lua+LÖVE or Python+pygame, we could not just double click user submitted C++ games and expect them to run. By having a common build script that everybody must use, we can ensure most submissions would compile. We chose that accepting binaries as submissions was unacceptable because of DLL hell, OS lock-in, and other dependency issues.

This project serves another purpose. That purpose is to allow people to quickly get up and running with game development without having to fight the compiler or the libraries. This often happens with new C++ programmers that had just taken a class on it. They know how to program, but they never really had to deal with the compiler or downloading and building external libraries. It's a valuable lesson to learn, but not when just starting out and definitely not as the first 12 hours of a 24 hour game development competition.

What's in the Box

In addition to these libraries, there is an example game using Box2D and SFML. It is located in example/main.cpp.

Setup

Windows

If you already have gcc 4.8+ and Python 2.7 (not 3) installed and accessible from your PATH you are ready to go and can skip setup. Otherwise, gamebase requires you download and extract a MinGW package into the folder so that setenv.cmd works properly. I recommend this one. You'll need to extract it with 7-Zip. After that is done, double click setenv.cmd to open up a command prompt with the PATH set properly to use the compiler. You'll need to use setenv.cmd for every command prompt you wish to open for game development.

Linux

pkg-config, XRandR, X11, OpenGL, OpenAL, libjpeg, and libsndfile must be installed. This is in addition to Python 2.7 (not 3) and gcc 4.8+ in order to compile. Use your preferred package manager to get these.

OS X

XCode and the Command Line tools must be installed. Your XCode must be recent enough to support C++11.

Compile

Simply run this in a console with the game framework folder as the current working directory:

python waf configure
python waf get_deps
python waf build

The first command checks your system for the required libraries and compilers. The second command downloads and extracts various libraries for static linking (e.g. SFML, freetype, etc...). The last command needs to be redone in order to compile any changes to the project. In case you get some Python exceptions, make sure you are using Python 2. Some distros call the binary python2, which you should replace the above commands with.

Usage and Customization

Build/Run Your Game

By default, the build system will compile every file with extension cpp under the src directory. This will get compiled into build/game (build/game.exe on Windows). If you get errors about missing DLLs on windows, copy the DLL files inside of deps/sfml_src/SFML-2.1/extlibs/bin/x86 into the same folder you run the game from or any place within your PATH.

Customize

If you don't like this directory layout, you can customize things by modifying the wscript file. Look for the line starting with targets = for an array of build targets. You'll see that game globs all the files ending in cpp under src and what source files the example is from. You can add or remove whatever targets you want and where their source is located.

Adding Libraries

There is a list of libraries under the get_deps function inside of wscript. To add one, simply add a new dictionary entry to the list. The hash listed in each entry is the SHA-256 hash of the package at the given URL. The hard part is getting the library to build. All of them are different, so I can not say how. Look at the build function for several examples of building external libraries. Afer that is figured out, don't forget to add the name of the library to the array list by use = near the bottom of the wscript.

gamebase's People

Contributors

zachreizner avatar bmenke92 avatar jrkirby avatar

Watchers

 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.