PROGRAMMING PHYSICS
Assignment 2
Lessons Learned:
Force & Impulse
Shooting the Caram disc adds a force to it that changes the momentum which changes the velocity of the game object. Impulse checks when the disc collides with another game object to check for that object's change in momentum.
Acceleration & Retardation of a game object
The velocity changes the position of the game object. A constant force causes acceleration. Friction subtracts from velocity over delta time to cause Retardation.
Collision Detection
3 different types of collision detection, ball to ball(distance-check collision), ball to wall and ball to pillar collisions. The ball will reflect off an angled surface at a calculated angle.
Predictive Collision checking(Ray Tracing)
for if the game object is moving at such fast speed, that its position never touches another game object's position it just passes through​
Checks based on time, if collision time happens lesser than delta time(1/ fps), the objects are assumed to have collided.
![]() | ![]() | ![]() |
|---|---|---|
![]() |
ADVANCED GAME DEVELOPMENT & TECHNIQUES
Assignments 1 & 2
Lessons Learned:
Scene Graph
Categorizing game objects in the scene to improve performance during runtime. Also allows Easier manipulation of Child and parent nodes. Such as, shooting off both legs of the enemy and causing them to fall to the ground as seen in the pictures below.
Spatial Partitioning
Only search collision for gameObjects within the same grid space. Saves computation load during run time.
Level of Detail
Objects at a further distance can be rendered with/at a lower poly rate. This also improves performance when rendering.
Waypoints for AI
Creating specific waypoints for enemies to move around instead of just charging towards the player will make the game feel more realistic.
Lua Scripting
Lua scripting allows the editing of codes during runtime, creates lesser bugs, allows level designers to work with changing game object data without touching the programmers' codes.
​
![]() | ![]() | ![]() |
|---|
GAME DEVELOPMENT & TECHNOLOGY
Assignment 2
Lessons Learned:
Proper 1st person Camera Controls
Weapon Manager (Inventory)
able to store data of multiple weapons​. Like shooting speed, range, explosive, bullet speed, etc...
Hardware abstraction
able to bind controller inputs into a game​ that has keyboard inputs
Frame-Independent movements
more accurate movements from different hardware types (Faster computer = move lesser between frames, Slower computer = move more between frames)
Minimap
![]() | ![]() |
|---|
Assignment 1
Lessons Learned:
Singleton Instance
Ability to transfer player data from one scene to another​
Parallax scrolling with Constrain (Does not move the camera when at the edge of the map)
Saving & Loading into a text file
Animated Sprites
In Game Audio (Irrklang)
Map editing from a .csv file
![]() | ![]() | ![]() |
|---|
ADVANCED DATA STRUCTURE & ALGORITHM

ASSIGNMENT 2
Lessons learned:
Searching Algorithms (Listing from fastest to slowest searching speed)
Binary Search - divides search range by half then half, until it finds the target. (only possible if the list is sorted)
Linear Search - incremental/decremental loop until it finds the target​
Sorting Algorithms (Listing from fastest to slowest sorting speed)
Quick Sort​ - (Incremental Ver.) Quicksort chooses a pivot and has two indexes that are marked. For example, one called small index and another called temp index. Small index will only increment if temp index is smaller than a pivot, then swaps the value in small index with the value in temp index, finally swaps the pivot with the new small index value and repeats the check again. otherwise, temp index increments and checks with pivot once again.
Insertion Sort - Marks the first index and compares it to the next index and next and so forth till a value bigger/smaller (Incremental/decremental) is shown. Then the value is marked and will be placed in the index of the previously marked, while the rest of the index between gets pushed back by +1.
Bubble Sort - Compares between the current index and next index on the list and swaps the two depending on sorting by incremental or decremental

ASSIGNMENT 1
Lessons learned:​
Overloading
Unary Operators (+, -, =, etc...), to allow classes to: Vector3() + Vector3().​
Using Templates for functions to support multiple data types
Exception Handling for error checking
Using Try, throw and Catch blocks​
Usage of C++ Exception classes (Out_of_range, runtime_error, etc...)
C++ Preprocessors
#Define​
#Pragma​
MULTIPLAYER GAME PROGRAMMING
Assignment 1
TCP/IP​
Server Side: WSAStartup()​ -> sock() -> bind() ->listen() -> acept() -> send() or recv() -> closesocket() -> WSACleanup()
Client Side: WSAStartup() -> socket() -> connect() -> send() or recv() -> closesocket() -> WSACleanup()
UDP/IP
Server: WSAStartup() -> socket() ->bind() -> send() or recv() -> closesocket() -> WSACleanup()​
Client: WSAStartup() -> socket() -> sendto() or recvfrom() -> closesocket() -> WSACleanup()
Packet Transmission
messages/data is sent via packets to the server then back to other clients
Multi-threading
server is able to accept multiple connections while receiving data from a client with multithreading​

MOBILE GAME PROGRAMMING (ANDROID STUDIOS)
Assignments
Lessons Learned:
Programming in Java. Android studios recommend that developers program in Java
Touch Events
Java uses an onClickListener​() that runs whenever an input on the screen is detected
Custom assets & Vibrations
custom assets enable the use of custom made fonts​
Audio & Pop up alert notifications
Facebook access from in game
enables sharing of scores​
setting up developer's facebook
![]() | ![]() | ![]() |
|---|---|---|
![]() |
















