Antonstruyk.com The homepage of Anton Struyk

School Projects

A List of the projects I completed for my courses while earning my Bachelors Of Computer Science with Honors.

OpenGL

This is my first attempt at a FPS style game engine. It involved the creation of both a Rendering engine and a world-building application.

Screen Shots

A rendered scene

A camera rendering the ball from a remote perspective

An outdoor rendering

An outdoor rendering of the scene

A wireframe rendering of the outdoor scene

A wireframe render of the outdoor scene.

The octree representation of the scene

Octree representation of the scene

Features

  • Octree-Based scene graph
  • Sky boxes
  • Animated clouds
  • Spherical collision detection for world-player interaction
  • Simple particle engine
  • Player drivable 'vehicles'
  • Player tracking 'security cameras' and real time updated camera monitors
  • Uses Hammer (formerly Worldcraft) for world editing and uses a builder program to import the worlds from the .map format to the proprietary .wrl format

Files

You can get the files (source and bin) here: Engine Demo

Honors Project

Honors project focusing on the real-time generation of realistic particle snow, as well as a flexible runtime-configured particle engine. This project was written in C++ and compiled in Visual Studio .NET. Although it was written later than the Game Engine (listed above), most of the code was re-written entirely from scratch in order to maintain focus on the particle effects rather than spend lots of time trying to hack the particle system into the other engine.

Screen Shots

Rendering of rain

Rendering rain particles.

Rendering of snow

Rendering rain particles.

Features

  • Dynamic Heightmapped terrain loading (from 8-bit grayscale)
  • Particle system focusing on cheap, numerous entities
  • Easily customized file-based particle effects
  • Simple to extend for effects such as rain and snow
  • Run-Time Configurable particle effects (no recompile needed)
  • Real-Time simulated 'accumulation' through dynamic texture editing to give the impression of the snow 'building up' over time.

Files

You can get the files (source and bin) here: Snow Demo

Networking

ICQ-Like Messenger

A (very) basic ICQ-Like messenger that uses Java RMI and tuple spaces to synchronize and access a shared message-space.

Network TCP-Like Protocol

A simple TCP-Like networking protocol implremented to assure packet-delivery over a non-stable system. Modeled almost directly after TCP, as required for an assignment.

Shared White-Board

A simple distributed White-Board application, that allows two users to draw basic shapes (such as lines and cirlcles) on a whiteboard, which will be seen by the other users. Uses Java RMI for networking and message passing.

Aritificial Intelligence

Ant-Based food collection using GP

This project was to develop a simulation of simple ants, who were tasked with collecting food from their environment. Each ant runs an identical 'program' (using actions defined by the programmer) in an effort to collect the most food for the colony. They drop pheromone to simulate the simple communication that real-world ants use. The programs for the ants can be elvolved from a population of randomly-generated programs in order for the computer to 'learn' the best program using Genetic Programming.

Screenshot of ants GP

Screenshot of pheremone trails left by ants.

Ant-Based TSP (Travelling Salseman Problem)

This project simulates an ant-based approach to solving complex TSP problems. Each ant probabalistically chooses a tour, and drops pheromone proportionate to the fitness (length) of that path. By sharing this pheromone path, good solutions for large TSP problems can be provided in relatively short time.

Screenshot of running the ant TSP program

A screenshot of the pheremone trails

Solving TSP using a GA

This project used a Genetic Algroithm (GA) to solve the TSP. Random paths are generated at first, and evaluated, then the best paths are 'bred' with eachother to produce new child paths. The process is repeated for each generation. Impressive results emerge after only a few short generations for most TSP problems.

Decision Tree Induction

This project builds a decision tree based upon a set of data. It trains on a percentage of the population, and then evalutaes its accuracy on the rest in order to provide efficient and accurate rules for decision making based on a set of data.

Fuzzy-Logic Reactor controller

This project implements a fuzzy-logic controller to regulate water flow through a simulated nuclear reactor, in order to maintain maximum output and prevent meltdowns. The inputs were hot and cold water (of varying pressures in the pipes), and a drainage pipe. The controller was required to mointor the temperature and volume of the reactor core, and adjust the flow of the hot, cold and drainage pipes to ensure the optimum operating temperature.

Visualization of the state of the reactor

Visualization of the state of the reactor in realtime.

Fuzzy-Logic Security Camera Controller

This project was part of the OpenGL game engine. It was used to control 'tracking' security cameras in a smooth way, so that they would remain centered on the target and move in a smooth and efficient manner.

Bridge Crossing Problem

This project used a simple search-based approach to solve the 'bridge crossing problem'. The problem was as follows:

A number of friends are on one side of a chasm. It is nightime, and they must carry a flashlight to see their way. They have only a limited time remaining on the flashlight (user specified). Each of them can walk at a different speed across the bridge, but it can only hold 2 of them at the same time. For various nubmber's of people (with various speeds) find the order in which the friends must cross.

Eight Squares Porblem (using A*)

This project used an A* algorithm to search the space of possible solutions to the Eight Squares problem.