Skip to content

suann-c/Now_you_hear_me

 
 

Repository files navigation

Game Information

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

Title: Now you hear me, Now you don't

Author: Suann Chi (suannc)

Design Document:Now you hear me, Now you don't

Screen Shot:

Screen Shot

How To Play: The game starts with the player waking up in the heart of the dungeon. The player uses arrow keys to move around the map. The monster will growl once every few seconds to assert its dominance. The closer the player is to monster, the louder the growls will be. If the player makes it out of the dungeon without colliding with the monster they win and "you live" will be displayed. If the monster touches the player, they die and "you died" will display instead.

Changes From The Design Document: I simplified the layout of the dungeon because I ran out of time. I added a small cube to represent the monster so you can see the monster this time. The player can be lucky and the monster may be away from the dungeon for that specified round.

Good / Bad / Ugly Code: Writing WalkMesh.cpp is was most challenging part for this homework. I worked on it several days but I still ran out of time to complete its debugging. The logic in WalkMesh.cpp should make sense though. Good code: use of helpers in WalkMesh.cpp

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, size, and maybe the initial Mode).
    • GameMode.*pp declaration+definition for the GameMode, which is the base0 code's Game struct, ported to use the new helper classes and loading style.
    • CratesMode.*pp a game mode that involves flying around a pile of crates. Demonstrates (somewhat) how to use the Scene object. You may want to use this rather than GameMode as the starting point for your game.
    • WalkMesh.*pp starter code that might become walk mesh code with your diligence.
    • Sound.*pp spatial sound code. Relatively complete, but please read and understand.
    • meshes/export-meshes.py exports meshes from a .blend file into a format usable by our game runtime. You might want to also use this to export your WalkMesh.
    • meshes/export-scene.py exports the transform hierarchy of a blender scene to a file. Probably very useful for your game.
    • 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.)
  • Files you should read the header for (and use):
    • MenuMode.hpp presents a menu with configurable choices. Can optionally display another mode in the background.
    • Scene.hpp scene graph implementation.
    • Mode.hpp base class for modes (things that recieve events and draw).
    • Load.hpp asset loading system. Very useful for OpenGL assets.
    • MeshBuffer.hpp code to load mesh data in a variety of formats (and create vertex array objects to bind it to program attributes).
    • data_path.hpp 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.
    • draw_text.hpp draws text (limited to capital letters + *) to the screen.
    • compile_program.hpp 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.

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.

About

Base code for game1 in 15-466, fall 2018.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 75.4%
  • C++ 20.7%
  • Python 3.8%
  • Makefile 0.1%