Jeff Yaskus

Portfolio


Instructions:

Each gallery below contains images of the games that I have worked on. It is in a slide gallery and when you click on the image it will open up the image in a overlay window with a description of the image. Under each gallery is notes about the game, my involvement, and the source codes for the game. It also has downloadable content to try the game out. Take a look and enjoy.


Mini Maze


Game Notes

Game Idea

This game was simply meant as a means to practice using ascii characters and assembly code to generate a small maze game. My implementation uses ASCII characters and reads the input directly from the keyboard. The map itself is static, however the colored squares are randomly assigned each time the game executes.

My involvement

I created this game myself, using examples from the textbook listed below as reference. From start to finish, it probably took about 4 hours to complete.

Directions

To run the game, just download and unzip the files into a local folder. Then execute maze.exe
To move around the avatar, use the ADSW keys for (left / right / down / up) movement And the goal is to move from lower left, to upper right ... while gaining the most points.

Technologies Used

  • Microsoft Visual Studio 2008 Pro (C++ & Assembler)
  • Irvine 80x86 Assembler libraries

Game Resources

Source Codes

Download Game

x86 assembler ascii game (~ 65 kb)

References

Books
Irvine, K. (2006). Assembly Language for Intel-based computers. New Jersey, Pearson Prentice Hall

Little RPG


Game Notes

Game Idea

This was intended to be a simplified 2.5D role playing game.

The idea was to use available 2d isometric art to create a simple role playing game with randomly generated content. Each time the game starts, it randomly rolls up the offense, defense and hit point values for the player, the enemy Orc and any randomly spawned mushroom-men. I was unable to complete the entire design in the time allotted : however, the game still functions in its current state. The original intent was to add a choice of avatars to the player … such as the typical rogue, warrior or mage classes. Currently, the game is using the mage avatar which included animations for casting spells.

My Involvement

I created this game while taking a 2d game design course. Rather than stick with a simple 2d grid style, I opted to attempt to make a 2.5D style using Isometric tiles. This means the tiles are shifted roughly 45 degrees, giving the appearance of 3 dimensions. This turned out to be a lot more work than a simple 2D map would have been.

There was so much more to consider when drawing the tiles. And it made it difficult to determine which x and y map location the player was actually within since the tiles overlap each other as they are drawn.

I wrote all the code including the Isometric Tile Engine myself, using the DirectX and Isometric programming books are references. The art assets came from "Reiniers Free Tilesets" website and included; moving limbs, built in shadows and animations for walking, spell casting and dying.

Game Directions

How to install and run

  1. Download the zip file from the game resouces
  2. Extract the contents to your desktop
  3. Navigate into the directory
  4. Double click on littleRPG.exe file
Each time the game runs, it reads from a text file to create the base map (easily edited to eventually have multiple levels). The bushes, mushrooms and other content are added randomly to "walk-able" tile squares. And the player & enemy stats are also randomized. (Offense, Defense and HitPoints)

How to Play

  • Arrows Keys control player
  • Space Bar casts fireballs
  • NumKey "0" casts healing spell
  • ESCape exists the game

How to Score

  • Destroy Bush(es)
  • Destroy Mushroom will also sometimes spawn a "Mushy Man"
  • Destroy Mushy Man restores players full health and mana
  • Destroy Orc knocks out the orc for awhile, but a new one will spawn

Game Resources

Download Game

Little RPG release.zip (3.8mb)
You may need to install DirectX 9.0 SDK runtime found here

Technologies used

  1. Microsoft Direct X SDK (March 2009)
  2. Microsoft Visual Studio 2008 Pro (C++)

Source Codes

  1. Game Loop C++ source code
  2. header file for main game loop
  3. C++ source code headers for csprite class
  4. C++ source code for csprite class

Refernces

Art Assets
http://reinerstileset.4players.de/englisch.html

Books
Harbour, J. S. (2007). Beginning Game Programming, Second Edition. Boston: Thomson Course Technology.
Pazera, E. (2001). Isometric Game Programming with DirectX 7.0. Roseville,CA: Prima Tech.

2942


Game Notes

Game Idea

This started out as a simple 2d game for the Westwood College Summer Games competition. The idea was to have (3) different views; Space, Solar System and Planet views.

The goal was to cleanse all the infected planets and systems, by destroying the giant aliens that are spawning the infection. These boss creatures resemble a jelly fish and change colors as they take damage. Just before dying they turn red.

My Involvement

For the summer games contest, our team started with (3) programmers and (2) artists. We had 9 weeks to design and complete the project. Half-way through the project, we lost the lead programmer (and all his code changes) and one of the artists. The team was struggling to complete the project.

In the end, I was responsible for about 90% of the programming work on the project itself -- but wasn't willing to see it fail. I put aside a large amount of time to recover the project – and it was a success.

We came in 2nd place for the summer games competition -- which won us each a free license for the new Torque 3D game engine. (Torque 3D)

Game Directions

How to play

  • "+" when docked at a sun or planet (yellow ring appears when docked) ... "zooms" you into that sun/planet view.
  • "-" "escape" from the current view to the next higher view ... or in space, teleports you back to "base" NOTE: It also HEALs the player ship when doing so - hence its the "escape" feature.
  • Spacebar or Left Mouse Button fires main gun (bottom, orange meter under player shows the reload cycle of main gun)
  • Control or Right Mouse Button fires the alt gun (missiles or torpedo)
    1. Switches Main Gun to : Plasma Blaster
    2. Switches Main Gun to : Dual Pulse Laser
    3. Switches Main Gun to : Auto Cannon
    4. Switches Alt Gun to : Missiles
    5. Switches Alt Gun to : Torpedoes

"Status" readouts

Under the players ship are the following "health bars":
  • Shields
  • Armor
  • Hull
  • Solar Power
  • Gun Reload/Recycle Meter
Under the Aliens
  • Total Hit Points
  • Solar Power
  • Gun Reload/Recycle Meter

Game Resources

Game Download

2942
DirectX 9.0 SDK runtime

Technologies Used

  • Microsoft Direct X SDK (March 2009)
  • Microsoft Visual Studio 2008 Pro (C++)

Source Codes

I created most of the engine code myself, using C++ and Microsoft DirectX 9.0 -- and the textbook (listed below) as reference.

References

Books
Harbour, J. S. (2007). Beginning Game Programming, Second Edition. Boston: Thomson Course Technology.

Fantasy RTS


Game Notes

Game Idea

This is a real time strategy game, which uses the Torque 3D Game Engine (TGE v1.5.2) In addition, I have merged many updates into the code base -- as well as merging the content from the "RTS Starter kit".

This allowed me to quickly protoype my game idea - since we were only given 9 weeks total to come up with and build our game ideas for class. Here is a link to My Initial Game Design Document to give some idea of what was planned. There were to be (2) sides to the game ... the classic "orcs vs humans" style.

My Involvement

I worked alone on this project, first creating a rough plan for what I wanted to build. After developing a plan it was applied to the project in an accelerated schedule to meet the class deadline (9 weeks total).

Over the course of the project, I was able to integrate many new features aside from those in the core game. Some of these included;
  • Rotate buildings - ability to rotate building with mouse wheel, when placing them to be built
  • New units - added code and models for new avatars in game including; giant rat, swordsman, warrior woman, ogre and shaman.
  • Animated buildings - added code to utilize the animations built into the buildings for each side. These include "under construction", "idle" and "destroyed" animation sequences. None of this worked "stock".
  • Fireball magic - created scripts and code which allow the shaman to hurl a fireball which does are effect damage.
  • Overland map - this required scripting and code changes to implement. Includes full fog of war functionality and ability to send "pings" to other players which are visible on map.
  • Scoring system - rather than use the stock "kill counter" system, I created a new scoring system which tracks such things as number of units created, damage done, damage taken (per unit or total) as well as units lost / killed.
  • Placement of buildings - updated the stock code to allow placement of (7) different buildings types (for each side).
  • In-game resources - like a classic RTS game, this includes resources such as stone, gold and trees for the player to harvest.
  • Enemy AI - created enemy AI functions via scripting, to automate their build & harvest processes as well as ability to find valid targets to attack and respond to damage taken.
  • Right click targeting - like classic rts games, if you have a unit selected and right click ; it will determine whether to walk to that location, attack that target or collect that resource -- based on unit type and location clicked.

Game Directions

How to play

Game Resources

Game Download

Fantasy RTS Demo In addition, you may need to install the DirectX 9.0 SDK runtime

Technologies Used

  • Torque Game Engine (TGE 1.5.2)
  • Microsoft Direct X SDK (March 2009)
  • Microsoft Visual Studio 2008 Pro (C++)
  • Torsion IDE (for Torque Script & debugging)

Source Codes

References

Books
Finney (2007). 3d Game Programming All In One, Second Edition. Boston: Thomson Course Technology.

Big Hunt


Game Notes

Game Story

It's the year 2942 and humans have expanded into the outer reaches of space. A small space station patrols this entire area of space. Recently, communication was lost to all of the colony planets. Investigation lead to the realization that hostile alien race has moved in and taken control of our planets. They have infected (34) different planets and are attacking anyone who comes near them. The story starts as the player leaves space port.

Game Idea

This is a 2D space shooter game, kind of like asteroids and inspired by the "Bugs" found in popular science fiction like Starship Troopers or "Ender's Game". The player's avatar (ship) starts off in the SPACE view – which shows all of the stars. The player can move close and enter a star system which changes it to the SOLAR SYSTEM view. From there, the player can move around amongst the planets and when close to a planet can "dock" with it and land on the planet. This changes it to the PLANET view. The PLANET view is where the boss bugs can be permanently killed. However, the boss goes through (8) gradual color shifts before it is fully destroyed. When it is finally killed, the players score goes up and the planet is flagged is "cleaned". When all the planets in a system are "cleaned" – the entire system is marked as cleaned and enemy ships will no longer spawn there. In total, there are (8) solar systems infected with ALIEN BUGS. Each infected system contains 2-6 planets, which each contain a BOSS BUG and his minions. To clear the infection, the boss bug on each planet needs to be destroyed. When all planets in a system are cleared, the system is no longer infected.

My Involvement

First of all, it should be noted that this game is a re-make of my previous 2942 game. It makes use of both SDL and OpenGL APIs – for true cross platform compatibility. The goal was to convert a game former written for Windows and convert it to something capable of running on other platforms. Since I personally had written most of the code for the 2942 project, it offered to be the lead programmer and project manager for this. We created this game for a game porting class assignment. Since we had a small team, we split the work up amongst (3) programmers:
  • Dylan Vance re-worked the graphics libraries, creating a generic front end that would access either Direct X or SDL APIs based on global flags
  • Robert Pash re-worked the sound functions, to make use of SDL APIs
  • Jeff Yaskus (myself) re-worked the Timer functions, to use SDL rather than DirectX calls. Also, further extended the graphics to support SDL + OpenGL graphics calls, to make use of the higher 3D functions to rotate 2D objects. I also handled all of the core game mechanic updates, including changes to make use of the new cross-platform sound and graphics APIs
This included profiling the game to determine bottlenecks in performance. In the process, I found redundant function calls that were slowing down the frame rates. Prior to the fix, we were getting only around 5-8 FPS using SDL but 30-50 FPS using Direct X. By streamlining the screen update process, I was able to tweak it to around 30-40 FPS using SDL APIs and 40-50 FPS using Direct X

Game Directions

How to play

The arrow keys are used for movement.
  • Left and Right arrow keys change the direction of the ship.
  • Up and Down arrow keys are used to accelerate or decelerate the spacecraft.
  • Numbers 1-3 select the primary weapons and 4-5 select alternate weapons
  • "-" (minus) key takes the player up one "view"; planet —> system,system —> space
  • "+" (plus) key is used to enter a system or planet; space —> system or system —> planet

How to score

The scoring system is keeps track of the number of shots fired, number of misses and hits. In addition, the over-all progress is based off the number of planets that have been cleared versus the total number to clear. For the player to win, they must successfully defeat the bosses on all infected planets. As it's a casual game, there is no Lose condition. When the player's ship would be destroyed – instead, it re-spawns at the starting location. Perhaps a difficulty setting could be included for those who want more of a challenge.

Game Resources

Game Download

Technologies Used

  • Microsoft Direct X SDK (March 2009)
  • Microsoft Visual Studio 2008 Pro (C++)
  • GCC/G++ (open source C++ compiler used for Linux OS build)
  • SDL APIs (for timers, graphics and sound effects)
  • OpenGL API (supported via SDL function calls)

Source Codes

  • winmain.cpp - Main program (DirectX)
  • SDLmain.cpp - Main program (SDL)
  • game.cpp - Main game loop
  • game.h - Associated headers
  • CPTimer.cpp - Cross plarform timer functions (SDL)
  • CPTimer.h - Cross plarform timer headers (SDL)
  • CPSound.cpp - Cross paltform sound functions (SDL)
  • CPSound.h - Cross platform sound headers (SDL)
  • CPGraphics.cpp - Cross platform graphics headers (SDL)
  • CPGraphics.h - Cross platform graphics headers (SDL)
  • References

    Books
    Harbour, J. S. (2007). Beginning Game Programming, Second Edition. Boston: Thomson Course Technology.

    Pac Man AI


    Game Notes

    Game Idea

    This small 2D game was created to test and understand simple AI and gameplay akin to the classic PACMAN. Rather than do another re-make of pacman itself, I opted to create something more original. Since it was intended for kids, I opted to change the avatar to a cute bunny rabbit and the dots to carrots. I also replaced the power dots with yummy red apples, to encourage the rabbit to eat healthy.

    My Involvement

    I created this game while taking a course on Game AI programming. Rather than start from scratch, I was able to reuse some of my code from the littleRPG project. The main goal was to tests and demonstrate the basic AI states which include; SPAWN, CHASE, EVADE and (re)SPAWN. In addition, I implemented A* pathfinding to allow the ghosts to navigate around the maze effectively.

    Game Directions

    How to install and run

    1. Download and unzip the game into a new folder
    2. Navigate to the whatsupdoc.exe and run the file.
    3. It may also require for you to download and install DirectX 9.0 SDK runtime

    Controls

    • W - up
    • A - left
    • S - down
    • D right
    Or it might be necessary to use the arrow keys

    Game Play

    Eating the carrot "dots" scores you 1 point. Eating an apple turns the ghost into large carrots that you are able to eat. The ghosts will flee for a short time while the player's speed is increased. The game is over when the rabbit has no lives left.

    Game Resources

    Game Download

    What's Up Doc Download for the executable game

    Technologies Used

    • Torque Game Engine (TGE 1.5.2)
    • Microsoft Direct X SDK (March 2009)
    • Microsoft Visual Studio 2008 Pro (C++)
    • Torsion IDE (for Torque Script & debugging)

    Source Codes

  • game.cpp - Main game loop C++ source code
  • game.h - Header file for main game loop
  • csprite.cpp - C++ source code for csprite class
  • game.cpp - Headers file for csprite class
  • References

    Books
    Harbour, J. S. (2007). Beginning Game Programming, Second Edition. Boston: Thomson Course Technology. Bourg, D. M., & Seemann, G. (2004). AI for Game Developers. Sebastopol: O'Reillly Media Inc.

    Outdoor Survival


    Game Notes

    Game Idea

    "Imagine for a moment, that you are the sole survivor of a small plane crash. You have no idea where you are exactly and at the moment are just glad to be alive. However, there are no roads or people within sight. Using only the clothes on your back and your wits – you must survive long enough to be rescued or find your way back to civilization."

    It started with the idea of creating a semi-natural environment where the player can learn the important aspects of survival. In a split from the traditional (cliché) first-person genre, the game is not about gunning down bad guys. Instead, the player must stay alive in the wilds while trying to find their way to safety. The will need to manage the following concerns; heat or cold, thirst and hunger. In addition, there is no map or compass to guide them so they also need to use basic navigation skills to determine the direction they are going.

    My Involvement

    This is a game idea that I have been building upon for the last couple years. I used it as the basis for a game documentation course, which helped create a good amount of game design details.

    I then partnered up with another student to make a prototype using the general game idea. Since we only had ~8 weeks to complete the work, I simplified the design greatly so we would have reasonable chance of completing it. As such, this version is a very rough prototype which is missing much of the intended content.

    However, we were able to get some of the basic mechanics working and design environments to continue to tweak and test the mechanics better. This includes a frozen mountainside, dense woodlands and a desert environment. We used the Torque 3D Game engine to create this prototype which included both source code and torque Script additions. Since I have a license for the engine, I personally handled all of the changes to the engine Source code. My team mate, George, was a big help with creating the desert level, adding level-specific startup scripts and getting in-game sound working. I created the (2) mountainous levels using actual Google-Earth height map data, which turned out to be challenging because of the different scales involved.

    Over the course of 8 weeks there was a lot of work to be done. Between George and myself we split up the tasks that needed to be done to meet the class deadline.

    The following is what George worked on:
    • Created Desert Level
    • Level Specific startup scripts (torque script)
    • Added functions to control THIRST checks
    • Added functions to control HUNGER checks
    • Added functions to control HEAT checks
    • Setup functions to query the Day/Night cycle objects in each level
    • Added new splash screen for CREDITS
    • Added camera controls to follow the plane as it crashes
    These are the tasks that I was responsible for:
    • Game Design Document & Project Plan
    • Created Crash site Level
    • Created Wilderness Level
    • Tweaked functions to control THIRST checks
    • Tweaked functions to control HUNGER checks
    • Tweaked functions to control HEAT checks
    • Created logic to consume WATER by standing in water tiles
    • Created logic to consume FOOD when player runs over mushrooms or cactus
    • Added new GUI elements and functions to make a persistent SCORE board
    • Created scripts to animate the plane crash scene
    • New trigger to prevent players from walking off the map (ZONE WALL trigger)
    • New trigger to load the next level (LOAD LEVEL trigger)
    • New trigger to acknowledge the player has reached the exit area (EXIT AREA trigger)

    Game Directions

    How to install and run

    1. Download the installer
    2. Double click on OutdoorSurvival.exe
    3. Follow the prompts to install the game
    4. Approve any updates needed for DirectX (it will download them automatically)
    5. Click on the game shortcut it creates on desktop

    How to play

    Game Start up
    1. Start up the game
    2. Set you video options (under options/settings menu)
    3. Select a level to start
    Controls
    • Move around: Arrow keys, WASD keys, or game controller
    • Jump: Space bar
    • Punch: Left Mouse to punch something in front you
    • Sprint: Holding the Left Shift will cause player to sprint foward
    Game Screen
    • Score slider bar - Shows the current overall score
    • Temperature Bar - Current amount of body heat. Try to keep it in the middle. Too much or little will cost health damage
    • Thirst Bar - Current degree of thirst. It starts at 0 on the left and goes up, reducing health as it rises.
    • Hunger Bar - Current amount of hunger. Starts at 0 and goes up. Reduces health as player gets more hungry.
    General Tips

    Key to keep in mind is that in Real Life you have (3) hours before cold could kill you, (3) days before thirst kills you and (3) weeks before you die from hunger. So the bars are listed in order of importance.

    • Too hot - Night time will get cold and cool you down or find water and stand in it
    • Too cold - The day heats up towards NOON and sprinting will generate a little heat
    • Thristy - Find water and stand in it. It is assumed that you are drinking when in the water
    • Hungry - Eat a cactus or mushroom to provide food and a small amount of water

    Game Resources

    Game Download

    Outdoor Survival 98mb

    Technologies Used

    • Torque 3D professional game engine
    • Microsoft Direct XSDK (June 2010)
    • Microsoft Visual Studio 2010 Pro (C++)
    • Torsion IDE (for Torque Script & debugging)

    Source Codes

    Art Datablocks Weapons
  • melee.cs - Datablocks for melee arracks
  • Scripts GUI
  • Scripts Levels
  • loadLevelScripts.cs - Loads a unique script for each level at runtime
  • gameUpDates.cs - Function to update player's health bar
  • survival.cs - Function calculates the effects of survival checks (Heat/Hunger/Thirst)
  • desert.cs - Loads at the start of a new level to set level's specific values
  • Scripts Server
  • melee.cs - Server side script to handle the melee attack
  • plants.cs - side torque script to handle spawning stumps for edible plants
  • proj_plane.cs - server side torque script that handles the scripted animation of the plane crash scene
  • References

    Web sites
    http://www.garagegames.com/community/forums http://www.garagegames.com/community/resources

    Books
    Finney (2007). 3d Game Programming All In One, Second Edition. Boston: Thomson Course Technology.