James Ni – Video Game Programmer
Cell: 321-***-**** <> Email: ********@*****.***
QUALIFICATIONS:
Two and a half years C++ programming experience. One year Java, JavaScript, HTML, and CSS programming experience
Proficient in creating system algorithms to solve any type of problem. Examples: AI, Puzzle Features, Rendering
Complete understanding of object oriented and structured programming. Quick at learning any programming language.
Easily assimilated into large projects with little to no prior knowledge of the project’s source code
Able to help, teach, learn, and complete my own work in an efficient and timely manner
Team player, prompt, problem Solver, sense of urgency, motivated
Strong in mathematics, statistics, calculus, and physics. Extensive knowledge of mechanical systems, motion laws, and states of equilibrium. Quick to program real life physics, which include: velocity, acceleration, impact, collisions, vibrations, oscillations, and gravitational forces. Full understanding of probabilities and random number generation.
Life time gamer. Years of experience due to hands-on testing. Unlimited ideas for improvement of existing franchises. Aspirations of new game creation.
Have experience programming games for a Gameboy Advanced.
EDUCATION:
Full Sail University Orlando, FL Graduated: November 2012
GPA: 3.1
Major: Bachelor Degree in Game Development
Merritt Island High Merritt Island, FL Graduated: May 2010
GPA: 4.1
Four Year Basketball Career (One Year Freshman, Two Years JV, One Year Varsity)
TECHNICAL EXPERINCE:
Programming Languages: C++ <> C# <> C <> Java <> JavaScript <> HTML <> CSS <> JQuery
API's: DirectX <> OpenGL <> Unity <> Wwise <> XML <> GWT <> AngularJS <> JasperReports <> Tomcat <> Glassfish <> ANT <> SQL <> Struts(minor)
Academics: Calculus <> Physics <> Mathematics
IDE’s: VisualStudio <> Eclipse <> iReports
Workflow Applications: Jira
WORK/PROJECT EXPERIENCE:
Project Vulcan : Point and Click Puzzler 2D
Tile editor for map creation, item placement, collision placement, and event placement
oItems, collisions, and events would save position and name data when placed onto any map and would be loaded in via that data in the actual game using XML files originally for testing but then changed to binary files for the final product.
Lead in story progression
oOut of our four man group, I had the most say in how the story progressed throughout the game.
Created a box type puzzle that required the player to move boxes to solve the puzzle:
oThe player was required to move boxes onto buttons, which would activate an event
ousing height data saved from the tile editor, boxes could be placed on top of each other or in pits to climb over
Goupe: 2.5-D Plat-former -Survival Game
Gameplay Programmer Screenshots and Download => http://www.indiedb.com/games/goupe
Gib creation and explosion of player death
oCreated as small sphere when Goupe dies and uses an algorithm to explode them into a semi-circle with the same angle in-between each one as well as dotting Goupe's opposite direction with the spikes direction to determine the way the semi-circle explosion should face.
oGibs themselves will explode into a smaller tier if they strike a spike as well
Spawn animation when player revives:
oSpawn pipe opens, large gibs are created and shot out of the spawn pipe to simulate goop and an animation of Goupe reviving as well as a 2D splashing animation are played at the same time, and the pipe closes.
Creation of fake shadows for dynamic objects (no lighting code):
oShadows are 2D images placed on the ground beneath dynamic objects to give the illusion of lighting with the use of ground clamping.
oShadows will grow and shrink depending on how high the object is
oWhen shadows go over ledges, an algorithm is used to determined how far off the edge they are and two new shadow images are created then projected as the correct size and on the correct surface
By using a recursive function this effect goes on indefinitely until the end of the shadow doesn't overlay a ledge.
All aspects of player movement including: jumping, moving, sliding, sticking, etc…
oUses a series of booleans to determine what state Goupe is in.
oConstant acceleration downwards to simulate gravity.
oDepending on what action is taken, certain specific values of velocity are given to Goupe in certain directions
Exception: While Goupe is in the air and the player wants to switch directions, deceleration is applied.
Wrote entire collision system:
oA list of dynamic objects and a list of static objects contained all visual objects in the level behind you, the level you are in and the level in front of you. Each dynamic object is looped through both lists checked for collision against all dynamic and static objects within its own level.
Creation of animated cards: flipping through multiple 2D images that are very similar
oGives the illusion that still images are animating. Examples in Goupe: Fire, Splashes, Smoke, Fan wind
Alt-Tab and full screen functionality during game play:
oTook all active index, vertex, and texture buffers along with all other DirectX objects(bitmap font, etc..) and saved them to an empty buffer. The D3D is reset and the buffers are refilled.
PIP Printing : Employer: April Balmer / 321-***-**** From-> May 2007 to October 2010
From->November 2012 to January 2015
Bindery Expert
Cut business cards, post cards, book guts, brochures, book edges, flyers
Manufactured soft and hard bound books, Spiral bound books, and comb bound books
Padding, Numbering, and Perforating NCR type paper
Operate folding, tabbing, stuffing and scoring machines
Laminating or mounting of normal, small, and large format prints
Shrink-wrapping, boxing, and delivering of finished products
Newscycle Solutions - AdManagerPro: Employer: Per-Ola Rydgren From-> January 2015 to Now
Software Developer
Participate in Agile/Scrum ceremonies for team AMP (AdManagerPro, the name of the product I develop for)
Grab user stories from the current sprint, complete them, and submit them in a timely manner
oMake sure my code is safe, and optimized to a certain point
oIf I can, apply my knowledge to shorten the time it will take for future stories
Was able to with one ticket save 12-15 days of development time with the completion of one ticket, templating the solution to that one into many.
Teach myself any new technologies or languages and apply them to AMP
oDuring my tenure here I had to learn: Java, JavaScript, HTML, CSS, AngularJS, GWT, Struts, Tomcat, Glassfish, JasperReports, iReports, and SQL. All of which was, for the most part, self-taught without formal training, along with little points in direction here and there.
Help and teach new hires after me how to navigate through our source code and, if I can, how to get their ticket done
oWas not actually given this responsibility, but one that I took on my own. After only 3 months with the product, I began teaching a new hire how to use technologies I myself just learned.
Review code that is submitted by other developers on the same team
Help and work with QA on tickets that are not passed or tickets they are having trouble testing
Participate in and give my input in design meetings for product change or future development
Report bugs that I find while coding for or testing AMP
Help customs team create custom reports for AMP
REFERENCES:
Amanda Jentz / Manager PIP Printing / 321-***-**** (work)
Mitchell Howell / Programmer, Teammate for Project Vulcan / 904-***-**** (cell)
Dennis Norton / Programmer, Teammate for Goupe / 321-***-**** (cell)
Ryan Newton / Artist, Teammate for Goupe / 540-***-**** (cell)
Jabari Hosey / QA, Teammate for AMP / 321-***-**** (cell)
Brian McDerment / Advanced Support, Teammate for AMP / 734-***-**** ext. 2183 (work)
John West / Developer, Teammate for AMP / 859-***-**** (cell)