SlideShare a Scribd company logo
1 of 8
Download to read offline
 (/)
(https://www.facebook.com/profile(http://www.linkedin.com/profi(mailto:yz463@drexel.ed
Home (/) Projects (/projects.html) My Life (/my­life.html) Software (/software.html)
______________________________________________
Procedural Content Generation in A4Engine
The goal of this project is to implement Procedural Content
Generation techniques, which are becoming more and more popular in recent
games, specially in the emergent genre of rogue­likes (or even rogue­like­likes)
In this project I worked with the A4Engine, a very simple engine for browser­
based action RPG games written in JavaScript. 
In this project, I implemented a procedural map generator for generating maps
for the A4Engine. You can choose whether you want to implement a generator
that generates dungeons, one that generates outdoors maps (with grass, rivers,
trees, rocks, paths, etc.), or one that generates in­door maps (like houses with
rooms, furniture, carpets, etc.). The method could be used to generate a playable
level that can be loaded with the A4Engine.
______________________________________________
RTS Game: Lord of Darkness
Lord of Drakness is a Real­Time­Strategy game developed based on Santiago
Ontañón's S3 engine.  LOD looks very simple and has pretty basic graphics, but it
features most of the characteristics of more complex RTS games such as
Starcraft.
Most of the graphics comes from other RTS games such as Starcraft and Age of
Empires Expansion. In order to run the game, please make sure that your
computers have Java JDK installed.
______________________________________________
Strategic Decision Making in MicroRTS
The goal of the project is to implement a strategic module for an RTS
game. MicroRTS is a small implementation of an RTS game, designed to
perform AI research. The advantage of using microRTS with respect to using a
full­fledged game like Wargus or Starcraft (using BWAPI) is that microRTS is
much simpler, and can be used to quickly test theoretical ideas, before moving on
to full­fledged RTS games.
MicroRTS is deterministic and real­time (i.e. players can issue actions
simultaneously, and actions are durative). It is possible to experiment both with
fully­observable and partially­observable games. Thus, it is not adequate for
evaluating AI techniques designed to deal with non­determinism (although future
versions of microRTS might include non­determinism activated via certain flags).
As part of the implementation, I include a collection of hard­coded, and game­
tree search techniques (such as variants of minimax, Monte Carlo search, and
Monte Carlo Tree Search). More (https://code.google.com/p/microrts/)
______________________________________________
PathFinding in S3
  
S3, a simple RTS game designed to test AI techniques. S3 looks very simple and
has pretty basic graphics, but it features most of the characteristics of more
complex RTS games such as Starcraft. 
The goal of this project is to implement a PathFinding algorithm to help unit
move. In this project I implemented A* for PathFinding, A* is a computer
algorithm (http://en.wikipedia.org/wiki/Computer_algorithm) that is widely used
in pathfinding (http://en.wikipedia.org/wiki/Pathfinding) and graph traversal
(http://en.wikipedia.org/wiki/Graph_traversal), the process of plotting an
efficiently traversable path between points, called nodes. Noted for
its performance (http://en.wikipedia.org/wiki/Computer_performance) and
accuracy, it enjoys widespread use.
However, in practical travel­routing systems, it is generally outperformed by
algorithms which can pre­process the graph to attain better performance, although
other work has found A* to be superior to other approaches.
______________________________________________
The Physical Travelling Salesman Problem
The goal of this project is to implement Steering Behaviors, which are very
commonly used in computer games for controling cars, motorbikes, space­ships,
etc.
The game is "played" in a continuous 2D map, similar to the map of many
computer games, where there is a collection of specially marked waypoints. The
goal is to create a controller that can direct a spaceship through a map, and visit
all the waypoints in the minimum amount of time. The spaceship has the typical
controls: accelerating forwards, and turning left or right. 
We are not interested in finding the optimal order in which to visit all the
waypoints, but just in selecting one waypoint, and controling the spaceship
(through an implementation of steering behaviors) to reach such waypoint. Once
the waypoint has been reached, the controller will select another waypoint, and
take the ship there. This process wll continue until all the waypoints have been
visited.
In this version of the game, the objctive is to drive the ship in a maze full of
obstacles in order to visit the waypoints scattered around the maze as quickly as
possible. 
______________________________________________
Mario AI Competition 2014
One of the main purposes of this competition is to be able to compare different
controller development methodologies against each other, both those based on
learning techniques such as artificial evolution and those that are
completely hand­coded. 
This version is played on randomly generated maps, so we have a practically
infinite number of different levels to play or test the AI. We are not interested in
finding the optimal behavior, but with authoring an acceptable behavior for
Mario. 
In the project, I tried to create, using Behavior Trees, a controller for Mario that
tries to collect as many coins as possible, and kill as many enemies as possible. 
As you will discover, Behavior Trees are not the best idea for this kind of game.
But precisely for that reason I've chosen it. The goal of this project is for you to
explore the possibilities of BTs and their limits. Discover what is easy and what is
hard to do with BTs.More (https://code.google.com/p/marioai/)
_______________________________________________________
Music Talks: A GUI­based Multiplayer Game​
A music composing game involves different players in a band partnership
which all players have their own roles in the band; Guitar player, Drummer,
Keyboard players and Vocals, etc. Different roles are responsible for different
part of the music respectively.
A drummer, for example, can compose music based on different parts of a
drum, such as Bass Drum, Closed Hi­hat, Open Hi­hat, Acoustic Snare and
Crash Cymbal, etc. For Keyboard players and Guitar players, they compose
music by adding various notes on proper beats with their own tones.
After each role of a band finish their own part, all the parts of the music will be
combined to generate a complete music. And the music can be played by the
application, user can enjoy the music and change the speed of it. More
(/uploads/2/6/9/8/26981290/project_paper_yibo_zhang.pdf)
_______________________________________________________
Spam Call Mitigation by Machine Learning ­ Caller’s Emotion
Recognition
​I was inspired by the method of a paper that if we are able to enter into the
content of the call, we can even go further to analysis the emotion of the
caller. That is to say, we can decide the legitimacy of the call by analyzing
the emotion of the caller.
One general form of the spam calls is that the spammers try to cheat people
by tell something emergent which can make callees nervous. When callees
are nervous, they are very likely to trust the spammer’s words. That’s why
the emotions, in most of the spam calls, are always active and alert.
Therefore, if we can recognize the emotions of the calls (callers) and classify
them into different groups, then pick out the class whose emotion is always
active or alert, we can determine that calls in this group have very high
probability of being spams.
The variety of human emotional states and affects can be represented in a
three­dimensional space, i.e. arousal, pleasure and power. The arousal
dimension, also named activation, refers to the degree of intensity, the
pleasure or evaluation dimension refers to how positive or negative, i.e.
pleasant, the emotion is perceived, and the power dimension relates to the
sense of control over the emotional state. In this project, I apply the Thayer’s
Arousal­Valence (AV) emotion plane (Thayer, 1989).
After extracting the features we want, we need to scale the features into the
AV plane to perform the emotion recognition. In this part, I implement the
Linear Regression method based on Support Vector Machine (SVM) as the
classifier to estimate the emotion. More
(/uploads/2/6/9/8/26981290/duplicationextension­yibo_zhang.pdf)
_______________________________________________________
A Re­Planning System for Prostate Cancer Adaptive
Radiotherapy​
The software we have developed integrates all algorithms for image
processing, dose calculation and plan optimization, in order to provide a re­
planning system for Adaptive Radiation Therapy (ART), capable of
loading the original treatment plan for a patient (CT data, contours, plan
parameters, dose distribution, etc) and the new Cone Beam CT (CBCT)
images, and process these information to adapt the treatment to patient’s
new geometry.
The program is decomposed into several modules, such as: loading patient
data (original treatment plan, CT and CBCT images), image pre­processing
(structure identification, rigid registration, etc.), deformable image
registration based on demons algorithm, dose calculation and plan re­
optimization. Each module has its parameters that the user can modify, and
a visualization window in order to verify or modify the results.
_______________________________________________________
“Freescale” Smart Car Design​
In June 2011, teamed with another two students, I participated into the “Freescale
Cup” National Smart Car University Design Competition, where student teams
build, program, and race an autonomous model car around a track and compete
for the fastest time. The creation of this autonomous car requires knowledge in
circuitry, software design and control theory. Using Freescale 16­bit micro­
controller MC9S12XS128 as the core control unit, we designed control
mechanism and systems, including sensor signal collection and processing, control
algorithm and execution, driving motor and steering control, etc. We spent five
months in preparing for it.
 
 
_______________________________________________________
Computer Vision Project: Fingerprints Recognition
Fingerprints identification is the most widely used form of biometric
identification method. Everyone is known to have unique, immutable
fingerprints. 
The background of this project is that an unknown person has stolen all the
undergraduate seating chairs from the second 4th floor lounge area after turning
the surveillance cameras off. Fingerprints, however, were taken from the crime
scene (FP1~5.png). The database of fingerprints as well as the fingerprints
extracted from the crime scene, were provided to analyze the fingerprints and
reveal the true identity of the perpetrator. The data base consists of 10
fingerprints (01~10.png) with fingerprints (FP1~5.png) acquired from the crime
scene. The goal of this project is to design an automatic classifier that can classify
fingerprints.
The goal of this project is to design an automatic classifier that can classify
fingerprints. As most Automatic Fingerprint Recognition Systems are based on
local ridge features known as minutiae, marking minutiae accurately and rejecting
false ones is very important. However, fingerprint images get degraded and
corrupted due to variations in skin and impression conditions. A critical step in
automatic fingerprint matching is to reliably extract minutiae from the input
fingerprint images. M
(/uploads/2/6/9/8/26981290/ece_s681_finalproject_winter2014_yibo_zhang.pdf)ore
(/uploads/2/6/9/8/26981290/ece_s681_finalproject_winter2014_yibo_zhang.pdf)
(/uploads/2/6/9/8/26981290/ece_s681_finalproject_winter2014_yibo_zhang.pdf)
(/uploads/2/6/9/8/26981290/ece_s681_finalproject_winter2014_yibo_zhang.pdf)
_________________________________________________
Tencent RTX (Real Time Exchange, Express,
Extension) SDK
Participated in the further development of RTX (Real Time
Exchange, Express, Extension), a kind of enterprise­class
platform for real­time communication. Implemented
RTXServer functions such as SessionKeyLogin, Email
notification as well as Data Synchronization. Developed new
functions of real time video transmission through LAN, file
sharing, Electronic Whiteboard. More
(/uploads/2/6/9/8/26981290/rtxclient__step_by_step.doc)
_______________________________________________________
Operating System Virtual Memory Manager​
This project consists of writing a program that translates logical to physical
addresses for a virtual address space of size 216 = 65,536 bytes.
The program will read from a file containing logical addresses and, using a TLB
as well as a page table, will translate each logical address to its corresponding
physical address and output the value of the byte stored at the translated physical
address. The goal behind this project is to simulate the steps involved in
translating logical to physical addresses. More
(/uploads/2/6/9/8/26981290/designing_a_virtual_memory_manager.pdf)
 (http://www.statcounter.com)
ATE A FREE WEBSITE (HTTP://WWW.WEEBLY.COM/?UTM_SOURCE=INTERNAL&UTM_MEDIUM=FOOTER&UTM_CAMPAIGN=3) POWERED BY (HTTP://W
UTM_SOU

More Related Content

Similar to content

Leaving Flatland: Getting Started with WebGL- SXSW 2012
Leaving Flatland: Getting Started with WebGL- SXSW 2012Leaving Flatland: Getting Started with WebGL- SXSW 2012
Leaving Flatland: Getting Started with WebGL- SXSW 2012
philogb
 
Portfolio_Rolf Huijgen
Portfolio_Rolf HuijgenPortfolio_Rolf Huijgen
Portfolio_Rolf Huijgen
Rolf Huijgen
 
Alan Tennent Resume 2016
Alan Tennent Resume 2016Alan Tennent Resume 2016
Alan Tennent Resume 2016
Alan Tennent
 
Seattle javascript game development - Overview
Seattle javascript game development - OverviewSeattle javascript game development - Overview
Seattle javascript game development - Overview
Grant Goodale
 

Similar to content (20)

Leaving Flatland: Getting Started with WebGL- SXSW 2012
Leaving Flatland: Getting Started with WebGL- SXSW 2012Leaving Flatland: Getting Started with WebGL- SXSW 2012
Leaving Flatland: Getting Started with WebGL- SXSW 2012
 
Angular 2 and NativeScript
Angular 2 and NativeScriptAngular 2 and NativeScript
Angular 2 and NativeScript
 
Joy of Inkscape - at StixCamp
Joy of Inkscape - at StixCampJoy of Inkscape - at StixCamp
Joy of Inkscape - at StixCamp
 
Introduction to html5 game programming with ImpactJs
Introduction to html5 game programming with ImpactJsIntroduction to html5 game programming with ImpactJs
Introduction to html5 game programming with ImpactJs
 
Developing for Plone using ArchGenXML / ArgoUML
Developing for Plone using ArchGenXML / ArgoUMLDeveloping for Plone using ArchGenXML / ArgoUML
Developing for Plone using ArchGenXML / ArgoUML
 
Mozilla Universe - The Mozilla CRM Project
Mozilla Universe - The Mozilla CRM ProjectMozilla Universe - The Mozilla CRM Project
Mozilla Universe - The Mozilla CRM Project
 
Portfolio_Rolf Huijgen
Portfolio_Rolf HuijgenPortfolio_Rolf Huijgen
Portfolio_Rolf Huijgen
 
Alan Tennent Resume 2016
Alan Tennent Resume 2016Alan Tennent Resume 2016
Alan Tennent Resume 2016
 
Descripción Software libre
Descripción Software libreDescripción Software libre
Descripción Software libre
 
Measuring Software development with GrimoireLab
Measuring Software development with GrimoireLabMeasuring Software development with GrimoireLab
Measuring Software development with GrimoireLab
 
Seattle javascript game development - Overview
Seattle javascript game development - OverviewSeattle javascript game development - Overview
Seattle javascript game development - Overview
 
Rive
RiveRive
Rive
 
Perceval, Graal and Arthur: The Quest for Software Project Data
Perceval, Graal and Arthur: The Quest for Software Project DataPerceval, Graal and Arthur: The Quest for Software Project Data
Perceval, Graal and Arthur: The Quest for Software Project Data
 
NativeScript and Angular
NativeScript and AngularNativeScript and Angular
NativeScript and Angular
 
JS digest. February 2017
JS digest. February 2017JS digest. February 2017
JS digest. February 2017
 
つくろう!Firefox OS アプリ
つくろう!Firefox OS アプリつくろう!Firefox OS アプリ
つくろう!Firefox OS アプリ
 
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open web
 
Music and Art with Machine Learning | GDG DevFest Bangkok 2017 (Oct 7th, ...
Music and Art with Machine Learning   |  GDG DevFest Bangkok 2017  (Oct 7th, ...Music and Art with Machine Learning   |  GDG DevFest Bangkok 2017  (Oct 7th, ...
Music and Art with Machine Learning | GDG DevFest Bangkok 2017 (Oct 7th, ...
 
Know your dependencies
Know your dependenciesKnow your dependencies
Know your dependencies
 
WebGL For Game Development Spring 2013
WebGL For Game Development Spring 2013WebGL For Game Development Spring 2013
WebGL For Game Development Spring 2013
 

content