lerpz the rocketeer
DESCRIPTION
Lerpz The Rocketeer. Beat It! Games VIVA CS4343 – AY2010/2011 Semester 2. Overview. Full Game 12 levels 2 mechanisms Leaderboard for added incentive No major bugs, minimum minor bugs Full integration with Server Complete data collection and analysis - PowerPoint PPT PresentationTRANSCRIPT
BEAT IT! GAMESVIVA
CS4343 – AY2010 /2011 SEMESTER 2
Lerpz The Rocketeer
Overview
Full Game 12 levels 2 mechanisms Leaderboard for added incentive
No major bugs, minimum minor bugsFull integration with ServerComplete data collection and analysisCompleted observed experiment with 16
testersCollected 50 online player data
PRODUCER QA LEAD
EXPERIMENT LEAD
Jie Hui
Jie Hui – Producer
Weekly meetings Recording minutes Keeping agenda Tracking progress Keeping members updated with status of projects
Reports and presentations Keeping documentation of the design process Drafting of reports Led presentations
Jie Hui – QA Lead
Tested builds extensively as soon as they are out
Tested data collection in games whenever possible
Helped in design process to ensure design stays true to research
Drafted test plans and test cases Led the first iteration of game testingDrafted side documents for any possible
additional features for game Side story
Jie Hui – Experiment Lead
Designed and built website to host game www.crashstart.com/rocket
Researched on academic papers for referencesDrafting of game questionnaires and feedback
formsLed final experiment process
Recruitment of testers Scheduling of testers Collation of data Data crunching Analysis of data
Jie Hui - Challenges
Keeping track of what 3 people are doing all at once
Keeping to deadlinesDesigning a novel test procedure for games
research
PROGRAMMER GUI ARTIST
Luo Lan
Luo Lan - Contributions
1. Data Collection+ Database Design+ Jump Data Collection
2. Login & Sign up System+ Data retrieve+ GUI Design+ Function implementation
3. Menu & Ranking System + GUI Design+ Function implementation
4. Feedback & Profile+ Database
Player Jumpsdoes
Score
sort
Feedback
Profile
name
password track
ID
Level_ID
Attempt_ID
Jump_ID
From Platfor
m
From world
coordinateTo
Platform
To world coordinat
e
Angle
time
ID
name Level_ID
timeTaken
NO. of Attemp
s
1 N
N
1
•Luo Lan - Database Design
•Luo Lan - Database design
Player:
Jumps:
Score:
Luo Lan - Jump Data Collection
Pass jump data from Unity3D to PHP script after player completes or skips the level. (unityPHP.js)
Process jump data in PHP script and insert into database.(rocket_try.php)
Update the number of attempts in player table and score table. (rocket_try.php)
Luo Lan - Data retrieval
• Group all players jump records by levels. (level_Info.php)
Separate expert group and novice group by score for each level. Score is computed from time and NO. of attempts .(rank_final2.php)
Calculate total number and average of success jump and fail jump for each obstacle, grouped by expert and novice. (num.php)
Calculate average time taken for each obstacle, grouped by expert and novice. (timeTaken.php)
Luo Lan - Login & Sign up System
GUI Design Unity3D GUI Component, GUIStyle Button, background image
Luo Lan - Script
Get player name and password from Unity GUI and pass data to PHP script.
PHP script connect database and check the uniqueness and validness.
Create a new account in player table and a new table of jump records if player’s name has not been used.
Return the track number and all levels’ complete status.
• (login.js) •(rocket_logsign.js)
Luo Lan - Menu & Ranking System
GUI Design Layout, Unity3D GUI Component, GUIStyle Button, background image
Luo Lan - Script
Get player information which include name, track and level completed status from database through PHP script.
Calculate and display correct layout according to track. If track is “jump first”, the “Rocket Launcher” column should place at left. If track is “rocket first”, the “Jet Pack” column should place at left.
Calculate and display correct button type (“attempted”, “completed”, “unlocked”, “locked”) according to level completed status data.
Highlight the “recommend level” button by red glow.Get sorted score for a particular level from database through PHP
script. Display the ranking table with the current player name
highlighted. When player clicks the level button, the ranking result of this certain level will be shown.
• MainMenu_backup.js
• rocket_menu.php• rocket_rank.php
Luo Lan - Feedback & Profile Script
Send data of feedback and profile to PHP script. PHP script inserts values to database.
unityPHP.js rocket_feedback.php rocket_profile.php
Luo Lan - Difficulty & Challenge
Compatibility for different Web Browsers
DESIGNERQA
Kenny
Kenny - Contributions
Conceptualising on the possibility of using rocket jump mechanic as a gameplay mechanic in a 2D side-scrolling platformer.
Identifying the possible types of obstacles and platforms that will be clearable by both jumping mechanisms without any biasness as much as possible
Kenny - Balancing Levels and Mechanics
• Balancing both jump mechanics by tweaking parameters such that they take almost the same time to complete each stage
• The level design - incrementally introducing new elements in each stage to allow progressive learning for players
Kenny - Stage 1
Learning Horizontal JumpIncreased Horizontal Jump achieved by-> Run and Jump (conventional jump)-> Move and Fire rocket (rocket jump)
Kenny - Stage 2
Learning Vertical Jump-> Aiming the rocket almost perpendicularly to the groundBoxes act as soft cushion to prevent player from falling
Kenny - Stage 2
Learning to fire off at the opposite direction
Kenny - Stage 3
A hybrid of Stage 1 and 2Introduction of Laser Traps
Kenny - Stage 4
Introduction of moving platforms
Kenny - Stage 5
• Combination of moving platforms and laser traps puzzle element
• ‘Rhythm’ jumps from platform to platform
Kenny - Stage 6
• An unstable platform randomly moving in the y-axis • Many gaps with lesser ground to stand on• Longest stage to test on player’s endurance
Kenny - Aesthetics
An overall sci-fi theme to suit Lerpz’s outfitDissembling and assembling pre-existing
assets to be appropriately used for level design
Indirectly telling a story through the use of props
Escape from jail to finally arriving at the spaceship
Indirectly telling a story through the use of background
propsProgressing from a seemingly deserted
environment to an urban city
Kenny - Aesthetics
Using clouds to make background objects less obvious
Applying random movement to the clouds to make the environment more vibrant
Kenny - Aesthetics
Other minor polish to enhance usability
Back-end particle trail
Rotating glow on goal
Arrow Sign
Kenny - Reasons for GUI Layout
Kenny - Reasons for Leaderboard
Kenny - Other individual contributions
Writing the kind of tips that will be triggered on certain platforms to aid player’s progress
Helping QA with playtesting sessionsHelping Experiment Lead with Observed
Experiment testing sessionsLooking at other possibilities of having
stages/obstacles built specifically for rocket jumping (but was not implemented at the end)
PROGRAMMERQA
Esther
Esther - Rocket Launcher Direction Controls
Rocket launcher obtained from Unity FPS tutorial
Uses RotateWithMouse.js to change launcher direction according to mouse position
Esther - Rocket Launcher Direction Controls: Challenges
Confused launcher direction behavior Finally discovered that the X-Y plane of the mouse
screen coordinates had to coincide with X-Y plane of camera movement in world coordinates after much trial and error
Determining the appropriate character and launcher direction behavior Determining the most appropriate input priority Determining character direction vs. launcher
direction Many rounds of testing required
Esther - Rocket Propelling
RocketLauncher.js modified to add PropellingForce(), used to add an equal and opposite force to weapon holder Also calculates angle information with necessary
offsets for shift data collectionRocket.js modified to activate
PropellingForce() upon collision explosion after a valid distance check (minImpactDistance)
Esther - Rocket Propelling: Challenges
Propelling force initially set to be called upon launcher firing Several rounds of testing revealed exploitable
recoil effectMany rounds of testing required to
determine suitable propelling speed and fall speed to match conventional jump mechanism
Finding appropriate angle calculation and offset method to obtain a meaningful angle format for analysis
Esther - Prediction Emission Trail Generation
Instantiates a tiny, 3D sphere near character’s feet, and applied with a force of opposite direction to rocket propelling force (TrailGeneration.js)
Uses Time.time to check for 0.1 sec intervals
Trail emitted only when no movement controls are activated, and when character is not moving in midair
Trail limited to first 3 rocket levelsTrail particle destroyed upon collision
Esther - Prediction Emission Trail Generation: Challenges
Initiation upon every Update() was too frame rate dependent – emission could get too sparse and unreliable
Use of particle emitter drastically reduced frame rate quickly over time, even with severely limited emission parameters
Force applied to emission particles had to be tweaked manually by trial and error until desired accuracy was achieved
Esther - Prediction Emission Trail Generation: Challenges
Finding appropriate conditions for emitting trail, to reduce distraction, confusion and unreliability
Finding appropriate instantiation position to avoid undesired interactions with rocket launcher missiles – trial and error
Esther - Shift Tracking
Platforms, death zones and laser zones tagged and meaningfully labeled to aid in analysis (PlatformTracking.js)
Each platform transition (AKA shift) recorded upon conditional collision check: Level ID, try #, jump #, initial and destination platform IDs and world coordinates, jump angle and movement type (PlatformerController.js)
Shift data sent to unityPHP for sending to server
Esther - Shift Tracking: Challenges
Ensuring that shift data is recorded at appropriate shift conditions Comparison of initial and destination positions
and movement type Several iterations of testing and tweaking
required before all necessary bases were covered
Esther - Shift Tracking: Challenges
Shift data sent to unityPHP to be sent to server upon every shift – too many connections to the server with limited number of connection retries Latency issues Loss of shift data
Modified to send upon collision with goal or when “Skip Level” is pressed
Sending restricted to occur after gameplay levels More connection retries available –> reduced
data loss
Esther - General Game Flow
Tracking and determining general game flow using Master.js Stores and calculates track, win, attempt,
feedback, platform, level and scene status information
Calculates maximum attempted levels and next recommended level
Used by unityPHP.js and many other scripts to determine game flow, obtain general game status information, and show/hide statuses of GUI elements
Esther - GUI Elements
Modified Timer GUI to show time in MM:SS instead of seconds (unityPHP.js)
Coded scripts and created GUI objects and scenes for basic Start, Main Menu, Game Over, Feedback Form and Profile Form (Start.js, MainMenu.js, GameOver.js, FeedbackForm.js, ProfileForm.js)
Scripted and created basic game objects for Skip Level, Volume, Instruction Pane and Tooltips (SkipLevel.js, Volume.js, Tooltip.js)
Modified all GUI element placements to be compatible with all resolutions above 800x480
Integration of game levels with basic GUI and game flow
Esther - Miscellaneous
Converted all game objects into new prefabs with PlatformTracking where appropriate
Indexed all game objects in linear order to facilitate platform naming and tracking; drew platform numbering level guide
Aided with exploration of observed experiment results: running of MANOVA and analyzing statistical output
Lerpz the Rocketeer video trailer Performed several gameplay recordings to find best video
capture tool Created final game trailer with gameplay video provided by Jie
Hui
BEAT IT! GAMES
ESTHER LUAR – U065084YHO J IE HUI – U077440XKENNY LIM – U077128A
LUO LAN – U077394B
END