Kittisap "Sammy" Nimnuch

Hello! I'm a programmer with a passion for software and video game development. As of August 2016, I have finished my Bachelors of Science in Computer Science and Software Engineering at the University of Washington. 

I'm well versed in C++, Java, C#, software engineering, and video game development. I'm currently learning VR Development in Unity.


My Resume is located HERE!

My email is info@kittisap.net




Here are some personal projects I have worked on:

Lightseekers TCG - Reddit API Crawler

Tools:     Python, Reddit PRAW, Google Sheets

Lightseekers is a Trading Card Game (TCG) that I discovered at PAX West 2017. I loved the game so much, that I decided to make a tool to automatically retrieve card details to comments on their subreddit!

Using Reddit's PRAW API, the crawler looks at comments in the Lightseekers Subreddit and responds to a user if they invoke the bot. To do so, a user can type in (for example): {Cassani} into their comment on the subreddit. The bot will search the library of cards (hosted on Google Sheets), retrieve the data, and respond back to the user with the card's information.


This bot is still in development.


Lightseekers Health Counter App 

Platform:      Android and iOS

In addition to the Reddit crawler above, I also made a health counter app to be used with Lightseekers. This health counter app can be used to track each player's health in a multiplayer game, and supports up to 4 players!

It is currently unreleased into the market, pending an approval acceptance from the Lightseekers company.






Omnicats ©2017

Genre:            Real-Time Grid-based Strategy / CCG
Platform:      Android and iOS


Omnicats is a mobile game currently being developed in Unity.



Basic overview:
  • Players can equip nine cats from their collection to be launched as attacks in battle.
  • Players may only stay on their side of the board (either blue or red).
  • Every Cat has a movement type, reminiscent of chess:
    • ROOK || Similar to Pawn, however, it only disappears once it reaches the end of the board.
    • KNIGHT || Similar to ROOK, however, it will stop and attack any enemy it encounters within one column up and down.
    • Bishop-U/D || Diagonal movement, and will automatically bounce once when it touches a boundary. U for Upwards, D for downwards
    • and more...
Each cat has an ATTACK ability and a SUPPORT ability. In the .gif above we can see a Cat being slid to ATTACK mode, and since she has the ROOK movement type, she is launched straight-outward.

As an example, let's say a Cat named "Gimlet" has the attack ability "Pierce+". This means that the cat will pierce through the first enemy it encounters, attacking enemies behind it. When Gimlet is acting as SUPPORT, the next Cat(s) that attack will gain Gimlet's ability Pierce+ for their attack.

Please right-click and open these images in another tab to see them in their full glory!

















VR Functionality Showcase

Genre:            Virtual Reality
Platform:      PC/Mac

This section is just for showcasing some small VR proof-of-concept games. Although the projects are currently on hiatus, I plan to incorporate these functionality into my actual VR game.

UI Menu Head Tracking


When navigating the UI, users will be shown a screen directly ahead of them. When the user is looking at the screen, a pink dot represents what they are currently looking at. If the pink dot hovers over a certain UI element (such as a skill icon) two additional displays will appear which provide information on what the user is looking at.

Racquetball Test


This is the core gameplay of RaCatBall, an upcoming VR game I am currently developing. Players will smack CatBalls using Racquets (currently in the form of a weapon+paddle at the tip) to strike their opposing enemy, who will also be shooting projectiles and other dangers at the player. The player's health is displayed on the racquet itself, and the number denotes the amount of "Special Ability" which a player can activate to slow down time to get that perfect shot.

Players can also "crit" with their racquet, which adds a homing-effect to the smacked RaCat ball. 




Here are some academic projects I have worked on:


DyeHard - Teaching Inheritance Using Real Time Simulations

Final Project:        [Poster Presentation]  [Powerpoint Presentation
Grade :                    N/A       

For my final capstone project, I was tasked with revamping a game project called DyeHard (made by students in previous years) to utilize Java Reflection in order to teach basic inheritance to beginner level coders.

Some of the tasks include:
  • Performing basic error-checking
  • Analyzing a class at runtime in regards to its constructor and members
  • Streamlining the grading/evaluating process for class functionality
  • For the student, assist in preliminary code submission

In order to show the validity of the program, I made several "Labs" which act as exercises for both the student and the professor utilizing Dyehard:

LAB 0 – Student creates a DyehardException class that handles java exceptions.
LAB 1 – Student defines basic inheritance and define float fields “width” and “height”.
LAB 2 – Student defines a new texture for the Hero. Test method overriding.
LAB 3 – Verify and validate a class’ fields, methods, and constructors with another “correct” class file.
LAB 4 – Student creates Debris and Debris Generator subclasses. Validate and verify fields, methods, constructors. Invoke new student methods.
LAB 5 – Student creates PowerUp and Weapon subclasses. Invokes multiple methods overridden by Student.
LAB 6 – Combine all concepts thus far to create a new level  using all student subclasses.







GALACTICAT - Game Development

Final Project:        [Download] [Video]
Grade :                     3.9 GPA

Please click the Video hyperlink to see the trailer I made for the game.

For my Game Development class, our cumulative project involved creating a game in Unity with a group of three/four other students. The primary requirement was to exclude violence (no guns, no gore, etc.)

We decided to develop a Bullet-Hell game where the player controls a cat in space named "Galacticat", who uses their tail to block enemy projectiles. The game features two different levels, and two unique bosses (Vacuum Cleaner and Ping-Pong Cat). The player controls the cat using the mouse, and SPACEBAR to activate an ability to clear the screen from projectiles.

I was in charge of developing the core mechanics of the game, the tail, and the levels. Aside from the art assets, I had a part in all aspects of the game development. This shows that I am able to work efficiently in a team.




Ship Escape - Network Design

Final Project:        [Intro Doc]  [Network Architecture]  [PC Download] [Video]
Grade :                    >100% (extra credit awarded)
Extra:                       Awarded "Best Game" by classroom poll.            

For my Network Design class, our cumulative project involved creating a game with functional socket-level networking. The primary requirements were: to build a game using an efficient networking protocol using no external protocols or network packages beyond the socket-level

We decided to code a game similar to the Helmsman in the board game "Space Cadets". For our engine and networking protocols, we used Game Maker Studio. 

In this turn-based game, you and up to three other players controls a single unit labeled “The Caravan”, which must traverse across a grid-like board to reach safety from the evil Dragon. 

To control the Caravan, each player is randomly generated three “Movement Runes” per turn to direct the Caravan’s movement. These runes can range from moving the caravan three squares forward, turn one square left and two squares forward, or even performing a u-turn. However, there are some limitations to these runes:
    1.  You can only submit one rune per turn. 
    2.  If you don’t put down a rune, one will be put down randomly for you
    3.  You only have 10 seconds to select a rune. 
    4.  Once you put down a rune, you can’t take it back. 

After turn 3, the dragon will begin its hunt and follows the Caravan by moving 2 squares towards it at the end of each round. If the dragon reaches the Caravan, it’s game over. Once you reach the End Zone (denoted by a checker boarded square), you win! 
After showcasing our game to the rest of the class, we were given the title of "
Best Game" from a classroom poll -- earning us a lot of extra credit. 

For my part in the group, I coded over half the game functionality and network design. I designed the engine, sprites, and overall logic. In addition, I also filmed and edited the entire video, an extra feature of our presentation that earned us a lot of the votes.

A screenshot of the game is shown below (click to see full image):




Coup - Game Design and Analysis

Final Project:         [Design Doc]  [PC Download]
Grade:                       GPA 3.8
Working Demo of Coup

For our final project in CSS 490, we were tasked to "convert" a board game into a video game. We decided to convert the game Coup into a video game using Game Maker Studio.

Coup is a game about lies and deceptions. It is a turn-based, free-for-all game where the goal is to eliminate the other players. It is similar to BS, Liar, or other psychological-based card games. The game itself is unique because power is not heavily dictated on what resources a player has, but rather on the deceits that the player can portray.

Each player begins with two Influence cards. These cards represent who the player has influenced at court, and must be hidden from the other players. Each Influence has a unique action associated with it. If a player loses an influence, they must turn over and reveal one of their face down Influences. When a player has lost all their influence, they are out of the game.

Aside from the Influence actions, there are general actions which all players can choose from: Income (gain one coin), Foreign Aid (gain two coins, but blockable by the Duke Influence card), and Coup (pay seven coins to eliminate another player’s influence). 

The game is played in a clockwise fashion with each player performing only one action per turn. Since this game is about deception, a player may lie about which Influence card(s) they possess and perform an action from another Influence card which they do not have. Other players may Challenge that player’s claim, and if so that player must reveal their claimed Influence card. If they were caught bluffing, they must eliminate one of their Influence cards. If that player was not bluffing, they must reveal the claimed Influence card and replace that card with a random one from the deck of cards.

As this was a design class and not a development class, we were only expected to talk about what we would change in our conversion. However, we went above the expectation and created a working demo with semi-functional networking.

For my part in the group, I was the Project Manager. I spearheaded the documents, designed and implemented the game's core functionality, and played a part in the User Interface/Experience design.





68k Disassembler - Hardware and Computer Organization

Final Project:         [Document]  [Code]
Grade:                       95/100

For our final project in CSS 422, we were tasked to develop a assembly-language based disassembler (also known as an inverse assembler) that converts a given set of instructions in memory and translate it back into 68K assembly language. The valid sets of instructions were in proper 68k syntax, while non-valid instructions consists of anything else. 
Example output

Although not all 68K instructions and addressing modes are supported, unknown instructions must be properly handled by printing out to the screen “XXXX DATA $YYYY”. Where XXXX is the address of the unknown instruction and YYYY is the hex for the opcode word. Currently, our project only supports MOVE, MOVEA, MOVEM, ADD, ADDA, SUB, SUBQ, MULS, DIVS, LEA, OR, ORI, NEG, EOR, LSR, LSL, ASR, ASL, ROL, ROR, BCLR, CMP, CMPI, Bcc (BCS, BGE, BLT, BVC) , BRA, JSR, and RTS. 

For my part in the group, I coded a large portion of identifying OPCodes and directing the code back into the main loop.












Personal Projects I am currently working on:





 


 

ą
Sammy Nim,
Aug 23, 2015, 10:50 PM
Comments