tag:blogger.com,1999:blog-31887218287423045362024-03-05T16:36:52.505-06:00Team Laser CombatA project journal for the Team Laser Combat game by Michael Henson.Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.comBlogger111125tag:blogger.com,1999:blog-3188721828742304536.post-91527444341819657362015-07-22T21:17:00.000-05:002015-07-22T21:17:40.807-05:00Reconsidering TLC's Game Theory (and Other Stuff)Ever since I used TLC to satisfy my master's degree capstone requirements, I've had one big question on my mind:<br />
<b><i><br /></i></b>
<br />
<div style="text-align: center;">
<b><i><span style="font-size: large;">Could Team Laser Combat work as a console game? </span></i></b></div>
<br />
I believe it could, but it may require a fundamental change in its game theory elements. The design, as it stands right now, is based heavily on imperfect information in which there are things about your opponents that you do not know. However, as a console game, the competitors would sit side-by-side and see all of each other's resources, upgrades, and token selections. It would be sort of like playing cards with all of the players' hands exposed.<br />
<br />
Over the last couple of years, I have been considering ways to change the game rules in such a way to maintain the fundamental aspects of the game while also making it work as a console game. (Perhaps it could even be a mobile game with a hot-seat mode, but let's not get ahead of ourselves.)<br />
<br />
These are the changes that I believe would transform the game from its current design into one that would work in a local multiplayer setting.<br />
<br />
<h3>
<b>Remove the networking functionality.</b></h3>
<br />
This is a change that I am quite eager to make as this is the reason why the project "failed". The unreliable networking code was the thing that made the software so hard to test, and the challenge upon which I got stuck before taking a break from the project. Local multiplayer, as you would have on a console, eliminates the need for remote communication. I would probably keep the client/server arrangement, but communication would happen through the MHFramework engine's messaging system rather than broadcast network messages.<br />
<br />
<h3>
<b>Redesign the control scheme to use key presses instead of (or in addition to) mouse clicks.</b></h3>
<br />
The OUYA controller, for instance, uses a key listener to respond to buttons pressed on the controller. One of the first things to do would be to change the current mouse-driven interface to one that uses key presses instead.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvsrub7WNhlOsZa2WmAnFlvkIjbze16RRZGBQq4CTXrUbqK61pf1VShyOVTqADrcSoY-nP9yOd5nbUeTWvzoQPqkMBzD_JoK_QPev13np2BNrqVLiDoe7VkIZ7-RUYvCMq6bWDE7IMH_R/s1600/ouya-controller.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvsrub7WNhlOsZa2WmAnFlvkIjbze16RRZGBQq4CTXrUbqK61pf1VShyOVTqADrcSoY-nP9yOd5nbUeTWvzoQPqkMBzD_JoK_QPev13np2BNrqVLiDoe7VkIZ7-RUYvCMq6bWDE7IMH_R/s320/ouya-controller.jpg" width="320" /></a></div>
<br />
<h3>
Redesign the Actions menu to make it more linear for easy selection by key presses.</h3>
<br />
Since the Actions menu was designed for mouse clicks, there was no reason not to make it a cool little hexagon that highlighted the current unit and displayed its available actions. If we change the input device to an OUYA game controller, this layout will no longer be intuitive. We would need to either change it to a menu from which we could select commands, or just display a controller reference to show which buttons map to which commands.<br />
<br />
Here's one possible control scheme, but I'm open to other ideas as well.<br />
<br />
<table align="center" border="0">
<tbody>
<tr><td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5NCxz3GiA6GXMEf5X8u03qm2wG84rkf18TZal3iCv2erIWqsOGmnia6Kn3nc0T3uOiSOC9T3-cK6y1Rsbt9Aonl1yM5Og94l8XGO_2wHUidqRmquSpEqGex2wnBV-usu0MYLSzBmsh5Ds/s1600/OUYA_O.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5NCxz3GiA6GXMEf5X8u03qm2wG84rkf18TZal3iCv2erIWqsOGmnia6Kn3nc0T3uOiSOC9T3-cK6y1Rsbt9Aonl1yM5Og94l8XGO_2wHUidqRmquSpEqGex2wnBV-usu0MYLSzBmsh5Ds/s1600/OUYA_O.png" /></a>
</div>
<div style="text-align: center;">
<b>Attack</b><br />
</div>
</td><td style="text-align: center;"><div class="separator" style="clear: both;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcuiqUgpuD8Rj7UgqQs6EJP_VDbsb5PDh1G8aAOnY1mLFbzrvKqU0mK2lkNdbRyCBFznWqYSqakB702GjR-ZoR1AvRw0a1xHtZBSzDDcsm2LycgC2DNs3Lln5_UymAus67xAam0egpv_K2/s1600/OUYA_U.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcuiqUgpuD8Rj7UgqQs6EJP_VDbsb5PDh1G8aAOnY1mLFbzrvKqU0mK2lkNdbRyCBFznWqYSqakB702GjR-ZoR1AvRw0a1xHtZBSzDDcsm2LycgC2DNs3Lln5_UymAus67xAam0egpv_K2/s1600/OUYA_U.png" /></a> </div>
<div class="separator" style="clear: both;">
<b>Heal</b></div>
<div class="separator" style="clear: both;">
<br /></div>
</td><td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7h7B1cBW5u4DUJX-9g-Ef7cD8ov59B61WzdY-muDzIFx_UDCTT608J9P8qKBhsRC3mFETeVTj7B_YTTQmwd22zffwPqhsVSJ9JsascYFOtK6nKWaBgjMjgawlKOIRl35vYpqwA1P581-Q/s1600/OUYA_Y.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7h7B1cBW5u4DUJX-9g-Ef7cD8ov59B61WzdY-muDzIFx_UDCTT608J9P8qKBhsRC3mFETeVTj7B_YTTQmwd22zffwPqhsVSJ9JsascYFOtK6nKWaBgjMjgawlKOIRl35vYpqwA1P581-Q/s1600/OUYA_Y.png" /></a></div>
<div style="text-align: center;">
<b>Draw Token</b><br />
<b><br /></b></div>
</td></tr>
<tr><td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKmQ1D-W2VEMhyEWKBExAGb9B9z0WZW1Y2l4XlqXhdT-PBvl2FNmTzYtHz3wWjb0WFIJdCfsZJT_lnTKLWEDGjA4YD8a-6xMlkfn9_Y4BdQznnDrh93OVStQnwwqdh2QWvwSM0pUCs78kQ/s1600/OUYA_A.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKmQ1D-W2VEMhyEWKBExAGb9B9z0WZW1Y2l4XlqXhdT-PBvl2FNmTzYtHz3wWjb0WFIJdCfsZJT_lnTKLWEDGjA4YD8a-6xMlkfn9_Y4BdQznnDrh93OVStQnwwqdh2QWvwSM0pUCs78kQ/s1600/OUYA_A.png" /></a></div>
<div class="" style="clear: both; text-align: center;">
<b>Move </b></div>
</td><td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZJi-WQSmxF-kDPiA_92GqEZxubdKG6ImSFXT8njHA2ETUtH-Qu9vgzmm1XqSpA9c8euRMDQc9LC35CLKg3iDNO-01HssarfGiVX99O8baJx58onqsl_asxnmg4khsAHFhPqosRXvGvtss/s1600/OUYA_L1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZJi-WQSmxF-kDPiA_92GqEZxubdKG6ImSFXT8njHA2ETUtH-Qu9vgzmm1XqSpA9c8euRMDQc9LC35CLKg3iDNO-01HssarfGiVX99O8baJx58onqsl_asxnmg4khsAHFhPqosRXvGvtss/s1600/OUYA_L1.png" /></a>
<b>Select Previous Unit</b></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZs3YSIloavLKDzJe_wp9jFsmUONM1gnsvTL8g7FwLe3RFlQg5JeSr1Ri8LygSHBHjjFW0ccwtHIJ7S2h3Jd4pHu2UDIolNqpXw4vlOj0x64b-kPTXaEVbS3k2edI8BWmxqwsjO_Ld54Lt/s1600/OUYA_R1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZs3YSIloavLKDzJe_wp9jFsmUONM1gnsvTL8g7FwLe3RFlQg5JeSr1Ri8LygSHBHjjFW0ccwtHIJ7S2h3Jd4pHu2UDIolNqpXw4vlOj0x64b-kPTXaEVbS3k2edI8BWmxqwsjO_Ld54Lt/s1600/OUYA_R1.png" /></a>
<b>Select Next Unit</b></div>
</td></tr>
</tbody></table>
<br />
<h3>
Take away the Auto Attack option and make it the normal behavior.</h3>
<br />
The real problem with making this a local multiplayer game is the unfortunate necessity to reveal a player's combat tokens to his/her opponent when selecting an attack or a defense. If I took away the Auto Attack option and just made that the normal behavior of the Attack command, then the mystery would be somewhat preserved. I would leave Auto Defense as an option like it is now so that players can speed up and simplify the game if they so desire.<br />
<br />
<h3>
Separate the global game options from the player-specific options.</h3>
<br />
The final major piece that I would be forced to change would be the game options. Some options would be global, such as the sound options, while others could be set differently for each player, such as the Auto Defense option.<br />
<br />
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-2618528506660715282012-06-02T20:59:00.000-05:002012-06-02T20:59:26.428-05:00Final Delivery Checklist (Complete!)AT LAST IT IS DONE! All I have to do now is turn it in.<br />
<br />
No, not the game. Just the capstone phase of it. There is still quite a bit left to do in order to make this into an actual, desirable product. Lots of threading issues mostly, but also a little refactoring and a TON of testing and asset creation.<br />
<br />
But let's not think about that now. Tonight we celebrate! <a href="http://www.youtube.com/watch?v=6qSvSYwrGec&feature=youtu.be" target="_blank">See my final video on YouTube</a>.<br />
<br />
<br />
<table align="center" border="1"><tbody>
<tr><td colspan="2"><h1>
Final Delivery Checklist</h1>
</td></tr>
<tr><th>Deliverable</th><th>Done?</th></tr>
<tr><td align="LEFT" valign="TOP">Demo video showing all major features and gameplay.</td><td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span>
</td></tr>
<tr><td align="LEFT" valign="TOP">Project blog (You're lookin' at it.)</td><td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span></td></tr>
<tr><td align="LEFT" valign="TOP">5-8 page post mortem / reflection paper on the project</td><td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span>
</td></tr>
<tr><td align="LEFT" valign="TOP">Executable build</td><td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span></td></tr>
</tbody></table>Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-38000856012585960212012-05-29T22:48:00.000-05:002012-05-29T22:48:18.796-05:00Final Delivery Checklist (3/4 Complete)<br />
The postmortem is complete! <a href="http://www.michaeljhenson.info/tlc/TLCPostmortem.pdf" target="_blank">Click here to read it</a> if you'd like. Only one more bit of "homework" to do and then I can graduate!<br />
<br />
<br />
<table align="center" border="1"><tbody>
<tr><td colspan="2"><h1>
Final Delivery Checklist</h1>
</td></tr>
<tr><th>Deliverable</th><th>Done?</th></tr>
<tr><td align="LEFT" valign="TOP">Demo video showing all major features and gameplay.</td><td align="CENTER" valign="TOP"><span style="color: red;">No</span></td></tr>
<tr><td align="LEFT" valign="TOP">Project blog (You're lookin' at it.)</td><td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span></td></tr>
<tr><td align="LEFT" valign="TOP">5-8 page post mortem / reflection paper on the project</td><td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span>
</td></tr>
<tr><td align="LEFT" valign="TOP">Executable build</td><td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span></td></tr>
</tbody></table>
<br class="Apple-interchange-newline" />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-26467265198606273652012-05-28T09:45:00.000-05:002012-05-28T09:45:00.127-05:00Final Delivery Checklist (1/2 Complete)The build scripts have been repaired and updated to reflect the new package structure of the <a href="http://www.michaeljhenson.info/mhframework.html">MHFramework </a>engine and the newly added directories in <i>Team Laser Combat</i>. I can once again build a stand-alone version of the game.<br />
<br />
<table align="center" border="1">
<tbody>
<tr>
<td colspan="2"><h1>
Final Delivery Checklist</h1>
</td>
</tr>
<tr>
<th>Deliverable</th>
<th>Done?</th>
</tr>
<tr>
<td align="LEFT" valign="TOP">Demo video showing all major features and gameplay.</td>
<td align="CENTER" valign="TOP"><span style="color: red;">No</span></td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Project blog (You're lookin' at it.)</td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span></td>
</tr>
<tr>
<td align="LEFT" valign="TOP">5-8 page post mortem / reflection paper on the project</td>
<td align="CENTER" valign="TOP"><span style="color: red;">No</span></td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Executable build</td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span>
</td>
</tr>
</tbody></table>
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-18161462394017732262012-05-27T15:56:00.002-05:002012-05-27T15:56:12.393-05:00Final Delivery Checklist (1/4 Complete)In order for my work on TLC to be evaluated as my Master's capstone, I must submit the following deliverables per the independent study agreement with Professor Keenan. This is my primary objective for the week...along with my suffocating workload, of course.<br />
<br />
<br />
<table align="center" border="1">
<tbody>
<tr>
<td colspan="2"><h1>
Final Delivery Checklist</h1>
</td>
</tr>
<tr>
<th>Deliverable</th>
<th>Done?</th>
</tr>
<tr>
<td align="LEFT" valign="TOP">Demo video showing all major features and gameplay.</td>
<td align="CENTER" valign="TOP"><span style="color: red;">No</span></td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Project blog (You're lookin' at it.)</td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Yes</span></td>
</tr>
<tr>
<td align="LEFT" valign="TOP">5-8 page post mortem / reflection paper on the project</td>
<td align="CENTER" valign="TOP"><span style="color: red;">No</span></td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Executable build</td>
<td align="CENTER" valign="TOP"><span style="color: red;">No</span></td>
</tr>
</tbody></table>
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-77596159287603263032012-05-26T23:57:00.000-05:002013-09-19T16:54:46.547-05:00Milestone 3 Complete!Milestone 3 is complete! It took about 16 hours of effort today plus about another six or so last weekend. So, about 20 to 25 hours total. Funny, that's less than one week's worth of effort when I couldn't complete Milestone 2 in a month and a half.<br />
<br />
So now I have a choice to make:<br />
<br />
<ol>
<li>Start wrapping up the documentation and the gameplay video now to make sure I hit next week's deadline. This is the stuff I'm getting graded on for my capstone requirement.</li>
<li>Try to fix those defects in some of Milestone 2's Power Tokens. There are just a few that don't work quite right.</li>
<li>Add some better graphics for the items on the floor from Milestone 3. The placeholders I have now are confusing.</li>
</ol>
<br />
I'll decide later. Too tired now. <br />
<br />
Here's the recap of Milestone 3:<br />
<br />
<table border="1">
<tbody>
<tr>
<td colspan="3"><h1>
Milestone 3: The Game World Environment</h1>
</td>
</tr>
<tr>
<th>Requirement ID</th>
<th>Description</th>
<th>Status</th>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.1</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>coin</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.2</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>token</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.3</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>snack</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.4</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>weapon upgrade</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.5</b></td>
<td align="LEFT" valign="TOP">The system shall place an <b>armor upgrade</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.6</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>boots upgrade</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.1</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>coin</b>, the system shall add one coin to that unit's team's budget.</td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Complete</span> </td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.2</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>token</b>, the system shall draw one random token from the team's token source and add it to the team's inventory.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.3</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>snack</b>, the system shall add one point to the unit's health up to that unit's maximum.</td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Complete</span> </td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.4</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>weapon upgrade</b>, the system shall apply a free upgrade to that unit's weapon.</td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Complete</span> </td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.5</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by an <b>armor upgrade</b>, the system shall apply a free upgrade to that unit's armor.</td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Complete</span> </td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.6</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>boots upgrade</b>, the system shall apply a free upgrade to that unit's movement stats.</td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Complete</span> </td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.3</b></td>
<td align="LEFT" valign="TOP">The system shall remove a bonus item from the board after its effect has been applied. </td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.4</b></td>
<td align="LEFT" valign="TOP">The system shall place one invisible hazard in a random, unobstructed location on the game board at the start of each match. </td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.5</b></td>
<td align="LEFT" valign="TOP">When a unit travels into the space occupied by the random hazard, the system shall deduct one hit point from the unit. </td>
<td align="CENTER" sdnum="1033;" sdval="3.2" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.6</b></td>
<td align="LEFT" valign="TOP">When a unit is damaged by a random hazard, the user interface shall display a notification to all players indicating which unit was damaged but not revealing which space contains the hazard. </td>
<td align="CENTER" sdnum="1033;" sdval="3.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.7</b></td>
<td align="LEFT" valign="TOP">While loading the data from a map file, the system shall recognize identifiers for destructible containers and instantiate them onto the board accordingly. </td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Complete</span> </td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.8</b></td>
<td align="LEFT" valign="TOP">The attack validator shall recognize destructible containers as valid targets to be attacked. </td>
<td align="CENTER" sdnum="1033;" sdval="1.1" valign="TOP"><span style="color: lime;">Complete</span> </td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.9</b></td>
<td align="LEFT" valign="TOP">When a container is attacked, it is removed from the board and replaced by a random bonus item: a coin, a token, a snack, a weapon upgrade, an armor upgrade, or a boot upgrade. </td>
<td align="CENTER" valign="TOP"><span style="color: lime;">Complete</span> </td>
</tr>
</tbody></table>
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-85977084732920605012012-05-24T20:21:00.000-05:002013-09-19T16:54:38.009-05:00Milestone 3 in ProgressNearly a week after starting Milestone 3, a good number of the requirements are either complete or well on their way. <br />
<br />
What's my secret, you wonder? First of all, Milestone 3 was the simplest milestone by design. I did that on purpose just in case the monstrous Milestone 2 overflowed its bounds...which it did. And second, I went out of town last weekend to a place with no internet access, so I couldn't work on my job duties. That meant that the only productive thing I could do was work on TLC, so I hit it hard and fast!<br />
<br />
In summary, there are 19 individual requirements in all, of which:<br />
<ul>
<li>11 are completely finished</li>
<li>5 have been implemented but not yet tested</li>
<li>3 have not yet been started</li>
</ul>
<br />
<table border="1">
<tbody>
<tr>
<td colspan="3"><h1>
Milestone 3: The Game World Environment</h1>
</td>
</tr>
<tr>
<th>Requirement ID</th>
<th>Description</th>
<th>Status</th>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.1</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>coin</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.2</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>token</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.3</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>snack</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.4</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>weapon upgrade</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.5</b></td>
<td align="LEFT" valign="TOP">The system shall place an <b>armor upgrade</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.6</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>boots upgrade</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.1</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>coin</b>, the system shall add one coin to that unit's team's budget.</td>
<td align="CENTER" valign="TOP">Untested</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.2</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>token</b>, the system shall draw one random token from the team's token source and add it to the team's inventory.</td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.3</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>snack</b>, the system shall add one point to the unit's health up to that unit's maximum.</td>
<td align="CENTER" valign="TOP">Untested</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.4</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>weapon upgrade</b>, the system shall apply a free upgrade to that unit's weapon.</td>
<td align="CENTER" valign="TOP">Untested</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.5</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by an <b>armor upgrade</b>, the system shall apply a free upgrade to that unit's armor.</td>
<td align="CENTER" valign="TOP">Untested</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.6</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>boots upgrade</b>, the system shall apply a free upgrade to that unit's movement stats.</td>
<td align="CENTER" valign="TOP">Untested</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.3</b></td>
<td align="LEFT" valign="TOP">The system shall remove a bonus item from the board after its effect has been applied. </td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.4</b></td>
<td align="LEFT" valign="TOP">The system shall place one invisible hazard in a random, unobstructed location on the game board at the start of each match. </td>
<td align="CENTER" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.5</b></td>
<td align="LEFT" valign="TOP">When a unit travels into the space occupied by the random hazard, the system shall deduct one hit point from the unit. </td>
<td align="CENTER" sdnum="1033;" sdval="3.2" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.6</b></td>
<td align="LEFT" valign="TOP">When a unit is damaged by a random hazard, the user interface shall display a notification to all players indicating which unit was damaged but not revealing which space contains the hazard. </td>
<td align="CENTER" sdnum="1033;" sdval="3.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.7</b></td>
<td align="LEFT" valign="TOP">While loading the data from a map file, the system shall recognize identifiers for destructible containers and instantiate them onto the board accordingly. </td>
<td align="CENTER" valign="TOP">Not started</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.8</b></td>
<td align="LEFT" valign="TOP">The attack validator shall recognize destructible containers as valid targets to be attacked. </td>
<td align="CENTER" sdnum="1033;" sdval="1.1" valign="TOP">Not started</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.9</b></td>
<td align="LEFT" valign="TOP">When a container is attacked, it is removed from the board and replaced by a random bonus item: a coin, a token, a snack, a weapon upgrade, an armor upgrade, or a boot upgrade. </td>
<td align="CENTER" valign="TOP">Not started</td>
</tr>
</tbody></table>
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-28906922627169587742012-05-18T14:25:00.000-05:002013-09-19T16:54:19.429-05:00Milestone 3, Here I ComeBad news about Milestone 2. Apparently, in order to correct the defects listed in the last post, I will have to redesign the combat evaluator to separate more of the functionality into different methods for handling the more specialized Power Tokens. Since the project is already behind schedule, what can I do about this?<br />
<br />
Nothing, I'm afraid. My current strategy is to document the defects in the Milestone 2 requirements and move on to Milestone 3. I will return to the combat evaluator at the end of the capstone phase if there is time. Otherwise, the capstone version of TLC will simply be known to be defective, and these defects will be corrected post-graduation.<br />
<br />
So I'm turning my attention to Milestone 3 now, which is defined as follows:<br />
<br />
<table border="1">
<tbody>
<tr>
<td colspan="3"><h1>
Milestone 3: The Game World Environment</h1>
</td>
</tr>
<tr>
<th>Requirement ID</th>
<th>Description</th>
<th>Dependencies</th>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.1</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>coin</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" valign="TOP">None.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.2</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>token</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" valign="TOP">None.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.3</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>snack</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" valign="TOP">None.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.4</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>weapon upgrade</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" valign="TOP">None.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.5</b></td>
<td align="LEFT" valign="TOP">The system shall place an <b>armor upgrade</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" valign="TOP">None.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.1.6</b></td>
<td align="LEFT" valign="TOP">The system shall place a <b>boots upgrade</b> bonus item in a random, unobstructed location on the game board at the start of each match.</td>
<td align="CENTER" valign="TOP">None.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.1</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>coin</b>, the system shall add one coin to that unit's team's budget.</td>
<td align="CENTER" valign="TOP">3.1.1</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.2</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>token</b>, the system shall draw one random token from the team's token source and add it to the team's inventory.</td>
<td align="CENTER" valign="TOP">3.1.2</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.3</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>snack</b>, the system shall add one point to the unit's health up to that unit's maximum.</td>
<td align="CENTER" valign="TOP">3.1.3</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.4</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>weapon upgrade</b>, the system shall apply a free upgrade to that unit's weapon.</td>
<td align="CENTER" valign="TOP">3.1.4</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.5</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by an <b>armor upgrade</b>, the system shall apply a free upgrade to that unit's armor.</td>
<td align="CENTER" valign="TOP">3.1.5</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.2.6</b></td>
<td align="LEFT" valign="TOP">When a unit travels onto a space occupied by a <b>boots upgrade</b>, the system shall apply a free upgrade to that unit's movement stats.</td>
<td align="CENTER" valign="TOP">3.1.6</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.3</b></td>
<td align="LEFT" valign="TOP">The system shall remove a bonus item from the board after its effect has been applied. </td>
<td align="CENTER" valign="TOP">3.2</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.4</b></td>
<td align="LEFT" valign="TOP">The system shall place one invisible hazard in a random, unobstructed location on the game board at the start of each match. </td>
<td align="CENTER" valign="TOP">None.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.5</b></td>
<td align="LEFT" valign="TOP">When a unit travels into the space occupied by the random hazard, the system shall deduct one hit point from the unit. </td>
<td align="CENTER" sdnum="1033;" sdval="3.2" valign="TOP">3.2</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.6</b></td>
<td align="LEFT" valign="TOP">When a unit is damaged by a random hazard, the user interface shall display a notification to all players indicating which unit was damaged but not revealing which space contains the hazard. </td>
<td align="CENTER" sdnum="1033;" sdval="3.5" valign="TOP">3.5</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.7</b></td>
<td align="LEFT" valign="TOP">While loading the data from a map file, the system shall recognize identifiers for destructible containers and instantiate them onto the board accordingly. </td>
<td align="CENTER" valign="TOP">None.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.8</b></td>
<td align="LEFT" valign="TOP">The attack validator shall recognize destructible containers as valid targets to be attacked. </td>
<td align="CENTER" sdnum="1033;" sdval="1.1" valign="TOP">1.1</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>3.9</b></td>
<td align="LEFT" valign="TOP">When a container is attacked, it is removed from the board and replaced by a random bonus item: a coin, a token, a snack, a weapon upgrade, an armor upgrade, or a boot upgrade. </td>
<td align="CENTER" valign="TOP">3.1, 3.8</td>
</tr>
</tbody></table>
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-62689013231813515722012-05-17T00:46:00.000-05:002013-09-19T16:53:53.692-05:00Milestone 2 Inches ForwardAs another night comes to a close, Milestone 2 draws ever closer to completion. Here's an updated view of the status of the requirements.<br />
<br />
In summary:<br />
<br />
<ul>
<li>13 complete</li>
<li>3 defective</li>
<li>2 inconclusive</li>
</ul>
<br />
<br />
<table border="1">
<tbody>
<tr>
<td colspan="3"><h1>
Milestone 2: Combat Resolution</h1>
</td>
</tr>
<tr>
<th>Requirement ID</th>
<th>Description</th>
<th>Status</th>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.1" valign="TOP"><b>2.1</b></td>
<td align="LEFT" valign="TOP">When a unit is attacked, the system shall notify the player controlling the unit by presenting a Defend UI which allows selection of a defensive combat token from the player’s inventory. </td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.2" valign="TOP"><b>2.2</b></td>
<td align="LEFT" valign="TOP">The game server shall resolve combat interactions by evaluating the stats of the characters and their selected combat tokens and updating the data model accordingly. </td>
<td align="CENTER" sdnum="1033;" sdval="2.1" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.1</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process Combat Tokens for their basic attack and defense values.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.2</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Vampire Power Token | If the attack does damage, the attacker heals one hit point per unit of damage dealt.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP"><span style="color: red;">Defective</span>
</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.3</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Lucky Shot Power Token | If the attack does damage, the damage amount is doubled.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.4</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Desperation Power Token | The attack value is normally 4, but if the attacker is the only remaining member of the team, then the attack value is 10.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.5</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Blaze of Glory Power Token | If the attack does damage, the damage amount is doubled, but if the attack is blocked, the attacker takes 5 points of damage.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.6</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Reflection Power Token | Any attack, regardless of power, is reflected back at the attacker. The defender takes no damage. </td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: red;" valign="TOP">Defective</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.7</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Resolve Power Token | Defense value goes up as the character health goes down. DF = maxHP - currentHP</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Inconclusive</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.8</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Lucky Break Power Token | If the attack is blocked, any excess defense points are converted to health points for your unit.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Inconclusive</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.9</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Shatter and Scatter Power Token | If the attack is blocked, each member of the attacking team takes two points of damage.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: red;" valign="TOP">Defective</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.10</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process Grenade Tokens | The attack functions like a Combat Token but cannot be blocked, has no defense value, and does two points of damage to all characters or containers within a two-meter radius of the primary target.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.3" valign="TOP"><b>2.3</b></td>
<td align="LEFT" valign="TOP">The game server shall broadcast a summary of combat results to all connected players. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.4" valign="TOP"><b>2.4</b></td>
<td align="LEFT" valign="TOP">The system shall provide a Combat Results toggle that allows players to opt out of seeing the detailed combat summaries at the conclusion of each combat interaction. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" style="color: red;" valign="TOP"><span style="color: lime;">Complete</span>
</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.5" valign="TOP"><b>2.5</b></td>
<td align="LEFT" valign="TOP">The user interface shall display a combat summary screen when combat results are received from the game server IFF the Combat Results option is turned on. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.6" valign="TOP"><b>2.6</b></td>
<td align="LEFT" valign="TOP">The system shall provide an Auto Defense option that players may activate if they would rather have the game select their tokens for them automatically when their units are attacked. </td>
<td align="CENTER" sdnum="1033;" sdval="2.1" style="color: red;" valign="TOP"><span style="color: lime;">Complete</span>
</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.7" valign="TOP"><b>2.7</b></td>
<td align="LEFT" valign="TOP">The system shall display an event log on the HUD which records the actions taken by all units in the game. </td>
<td align="CENTER" sdnum="1033;" sdval="2.3" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.8" valign="TOP"><b>2.8</b></td>
<td align="LEFT" valign="TOP">AI players shall be able to defend against attacks subject to the same rules as the human players. </td>
<td align="CENTER" sdnum="1033;" sdval="2.6" style="color: lime;" valign="TOP">Complete</td>
</tr>
</tbody></table>
<br />
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-21876412410720721552012-05-16T15:41:00.000-05:002013-09-19T16:53:39.167-05:00Milestone 2: A New HopeI'm feeling better about things now. The project is recovering, though it's still at risk because the Milestone 2 effort has consumed about one-third of the Milestone 3 budget so far, with more to come. My goal for the remainder of this week is to finish testing all of the Power Tokens, fix the Auto Defense and Combat Results toggles, and correct any other issues discovered in the meantime.<br />
<br />
If I cannot get all of Milestone 2 accomplished by the end of the week, I'm going to shelve it temporarily and move on to Milestone 3. I figure that it's better to have all three milestones <i>mostly</i> complete than to have one that's entirely absent.<br />
<br />
Below is an updated status of the Milestone 2 requirements as they stand right now. In summary, here are the stats:<br />
<ul>
<li>All <b>18 </b>requirements of Milestone 2 have been verified. </li>
<li><b>11 </b>requirements have been validated successfully.</li>
<li><b>3 </b>requirements had inconclusive test results.</li>
<li><b>4 </b>requirements are defective.</li>
</ul>
<br />
<br />
<table border="1">
<tbody>
<tr>
<td colspan="3"><h1>
Milestone 2: Combat Resolution</h1>
</td>
</tr>
<tr>
<th>Requirement ID</th>
<th>Description</th>
<th>Status</th>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.1" valign="TOP"><b>2.1</b></td>
<td align="LEFT" valign="TOP">When a unit is attacked, the system shall notify the player controlling the unit by presenting a Defend UI which allows selection of a defensive combat token from the player’s inventory. </td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.2" valign="TOP"><b>2.2</b></td>
<td align="LEFT" valign="TOP">The game server shall resolve combat interactions by evaluating the stats of the characters and their selected combat tokens and updating the data model accordingly. </td>
<td align="CENTER" sdnum="1033;" sdval="2.1" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.1</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process Combat Tokens for their basic attack and defense values.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.2</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Vampire Power Token | If the attack does damage, the attacker heals one hit point per unit of damage dealt.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Inconclusive</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.3</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Lucky Shot Power Token | If the attack does damage, the damage amount is doubled.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.4</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Desperation Power Token | The attack value is normally 4, but if the attacker is the only remaining member of the team, then the attack value is 10.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.5</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Blaze of Glory Power Token | If the attack does damage, the damage amount is doubled, but if the attack is blocked, the attacker takes 5 points of damage.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.6</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Reflection Power Token | Any attack, regardless of power, is reflected back at the attacker. The defender takes no damage. </td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: red;" valign="TOP">Defective</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.7</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Resolve Power Token | Defense value goes up as the character health goes down. DF = maxHP - currentHP</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Inconclusive</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.8</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Lucky Break Power Token | If the attack is blocked, any excess defense points are converted to health points for your unit.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Inconclusive</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.9</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Shatter and Scatter Power Token | If the attack is blocked, each member of the attacking team takes two points of damage.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: red;" valign="TOP">Defective</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.10</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process Grenade Tokens | The attack functions like a Combat Token but cannot be blocked, has no defense value, and does two points of damage to all characters or containers within a two-meter radius of the primary target.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.3" valign="TOP"><b>2.3</b></td>
<td align="LEFT" valign="TOP">The game server shall broadcast a summary of combat results to all connected players. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.4" valign="TOP"><b>2.4</b></td>
<td align="LEFT" valign="TOP">The system shall provide a Combat Results toggle that allows players to opt out of seeing the detailed combat summaries at the conclusion of each combat interaction. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" style="color: red;" valign="TOP">Defective</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.5" valign="TOP"><b>2.5</b></td>
<td align="LEFT" valign="TOP">The user interface shall display a combat summary screen when combat results are received from the game server IFF the Combat Results option is turned on. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.6" valign="TOP"><b>2.6</b></td>
<td align="LEFT" valign="TOP">The system shall provide an Auto Defense option that players may activate if they would rather have the game select their tokens for them automatically when their units are attacked. </td>
<td align="CENTER" sdnum="1033;" sdval="2.1" style="color: red;" valign="TOP">Defective</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.7" valign="TOP"><b>2.7</b></td>
<td align="LEFT" valign="TOP">The system shall display an event log on the HUD which records the actions taken by all units in the game. </td>
<td align="CENTER" sdnum="1033;" sdval="2.3" style="color: lime;" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.8" valign="TOP"><b>2.8</b></td>
<td align="LEFT" valign="TOP">AI players shall be able to defend against attacks subject to the same rules as the human players. </td>
<td align="CENTER" sdnum="1033;" sdval="2.6" style="color: lime;" valign="TOP">Complete</td>
</tr>
</tbody></table>
<br />
It just occurred to me as I was updating the requirements status list that the inconclusive Power Token tests all involve a specialized modification or referencing of a unit's health in a way that is beyond the basic processing of a combat interaction. I wonder if that's a coincidence or if there's a common root cause of a defect. More testing will happen ASAP to find out.Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-50623327500220526032012-05-15T23:45:00.000-05:002012-05-16T15:09:43.858-05:00Combat Results ScreenI'm trying hard to catch up to the project timeline, and though I'm making some decent progress, I'm not there yet. Tonight I implemented the Combat Summary screen, though it's not 100% finished yet.<br />
<div>
<br /></div>
<div>
Specifically, the things that are not finished are:</div>
<div>
<ul>
<li>The "Close" and "Don't Show Again" buttons are still missing.</li>
<li>The Power Token descriptions are not yet being populated.</li>
<li>The Combat Results toggle is currently being ignored.</li>
</ul>
</div>
<div>
Once these things are finished, then Requirements 2.3, 2.4, and 2.5 will be complete. Aside from these, the screen is working beautifully! Here are two examples:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuAHY5u3l0uneGcBjOGMMqZMNbHbYVALhQMl-y_7mJ6ko9rji5ETbOjTPmEYA7PnbejE1smNHdzrPRCkznpLZNj9R4_O5pjFyIc7oD12Xh0xH9Zn6txSMLFQ-v8jXBmbBJQPy27fG9o74f/s1600/javaw+2012-05-16+00-32-54-71.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuAHY5u3l0uneGcBjOGMMqZMNbHbYVALhQMl-y_7mJ6ko9rji5ETbOjTPmEYA7PnbejE1smNHdzrPRCkznpLZNj9R4_O5pjFyIc7oD12Xh0xH9Zn6txSMLFQ-v8jXBmbBJQPy27fG9o74f/s400/javaw+2012-05-16+00-32-54-71.jpg" width="400" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd64QhZxV8vqJZNq2941Uc-pgZtaKbguyWspLXgjzu684bu_9K7E6KRRVj7FZ8e92h83GUeLTUwgUlKj2CE6_fzgMYX0FezfOA9fyYnz9_F-YK5Sy_SWAwHu3GsTk0PhcBcP4DASPn9Yo7/s1600/javaw+2012-05-16+00-32-10-22.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd64QhZxV8vqJZNq2941Uc-pgZtaKbguyWspLXgjzu684bu_9K7E6KRRVj7FZ8e92h83GUeLTUwgUlKj2CE6_fzgMYX0FezfOA9fyYnz9_F-YK5Sy_SWAwHu3GsTk0PhcBcP4DASPn9Yo7/s400/javaw+2012-05-16+00-32-10-22.jpg" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-48404571699463821502012-05-13T19:08:00.000-05:002013-09-19T16:53:04.392-05:00Timeline Threatened!I have no more time today to work on TLC. I must stop and get back to my job. I made some progress and did some testing, but the milestone has not yet been reached.<br />
<br />
This unavoidably impacts the timeline by eating into the Milestone 3 budget. My only hope is to get through my work as quickly as I can this week so I can spend as much time as possible on the completion of Milestone 2...and, of course, the subsequent start on Milestone 3.<br />
<br />
Here's a status report of all Milestone 2 requirements as I'm leaving them today.<br />
<br />
<table border="1">
<tbody>
<tr>
<td colspan="3"><h1>
Milestone 2: Combat Resolution</h1>
</td>
</tr>
<tr>
<th>Requirement ID</th>
<th>Description</th>
<th>Status</th>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.1" valign="TOP"><b>2.1</b></td>
<td align="LEFT" valign="TOP">When a unit is attacked, the system shall notify the player controlling the unit by presenting a Defend UI which allows selection of a defensive combat token from the player’s inventory. </td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.2" valign="TOP"><b>2.2</b></td>
<td align="LEFT" valign="TOP">The game server shall resolve combat interactions by evaluating the stats of the characters and their selected combat tokens and updating the data model accordingly. </td>
<td align="CENTER" sdnum="1033;" sdval="2.1" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.1</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process Combat Tokens for their basic attack and defense values.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.2</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Vampire Power Token | If the attack does damage, the attacker heals one hit point per unit of damage dealt.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Test inconclusive</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.3</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Lucky Shot Power Token | If the attack does damage, the damage amount is doubled.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.4</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Desperation Power Token | The attack value is normally 4, but if the attacker is the only remaining member of the team, then the attack value is 10.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Untested</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.5</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Blaze of Glory Power Token | If the attack does damage, the damage amount is doubled, but if the attack is blocked, the attacker takes 5 points of damage.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.6</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Reflection Power Token | Any attack, regardless of power, is reflected back at the attacker. The defender takes no damage. </td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Test inconclusive</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.7</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Resolve Power Token | Defense value goes up as the character health goes down. DF = maxHP - currentHP</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Complete</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.8</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Lucky Break Power Token | If the attack is blocked, any excess defense points are converted to health points for your unit.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Test inconclusive</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.9</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Shatter and Scatter Power Token | If the attack is blocked, each member of the attacking team takes two points of damage.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Test inconclusive</td>
</tr>
<tr>
<td align="RIGHT" valign="TOP"><b>2.2.10</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process Grenade Tokens | The attack functions like a Combat Token but cannot be blocked, has no defense value, and does two points of damage to all characters or containers within a two-meter radius of the primary target.</td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.3" valign="TOP"><b>2.3</b></td>
<td align="LEFT" valign="TOP">The game server shall broadcast a summary of combat results to all connected players. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" valign="TOP">In progress</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.4" valign="TOP"><b>2.4</b></td>
<td align="LEFT" valign="TOP">The system shall provide a Combat Results toggle that allows players to opt out of seeing the detailed combat summaries at the conclusion of each combat interaction. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" valign="TOP">In progress</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.5" valign="TOP"><b>2.5</b></td>
<td align="LEFT" valign="TOP">The user interface shall display a combat summary screen when combat results are received from the game server IFF the Combat Results option is turned on. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" valign="TOP">Designed; not implemented</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.6" valign="TOP"><b>2.6</b></td>
<td align="LEFT" valign="TOP">The system shall provide an Auto Defense option that players may activate if they would rather have the game select their tokens for them automatically when their units are attacked. </td>
<td align="CENTER" sdnum="1033;" sdval="2.1" valign="TOP">Test failed</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.7" valign="TOP"><b>2.7</b></td>
<td align="LEFT" valign="TOP">The system shall display an event log on the HUD which records the actions taken by all units in the game. </td>
<td align="CENTER" sdnum="1033;" sdval="2.3" valign="TOP">Complete</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.8" valign="TOP"><b>2.8</b></td>
<td align="LEFT" valign="TOP">AI players shall be able to defend against attacks subject to the same rules as the human players. </td>
<td align="CENTER" sdnum="1033;" sdval="2.6" valign="TOP">Complete</td>
</tr>
</tbody></table>
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-11369346381303041942012-05-13T13:27:00.000-05:002012-05-13T13:27:05.818-05:00Milestone 2 Target is TodayMy fears may be coming true. Today was the target completion date for Milestone 2 and I didn't quite make it. The day's not over, but I also have a considerable task list of things to do for my job today, so I'm going to work on Milestone 2 this afternoon and see how far I can get before switching over to work-related tasks this evening. It was, in fact, my oppressive work load that has keep me from progressing on Team Laser Combat in these last two weeks, so I desperately need to catch up to the project timeline.<div>
<br /></div>
<div>
There was a huge breakthrough this morning, however. I spent all day yesterday working on a series of horrible bugs that seemed invincible. From the time I woke up until the time I went back to bed, it was nothing but troubleshooting (intermixed with taking care of my baby son, of course). But this morning, I had an epiphany that included multiple solutions to multiple bugs. I tried the ideas, and they worked on the first try!</div>
<div>
<br /></div>
<div>
Details will follow in the next official progress report, after I get a chance to try my hand at those last remaining requirements in Milestone 2.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgd6xE0OrVQW7hMEp55vjZdu6aqkQ9oP7ca3Ifa1G-89241Yek5VqR2xZ1cOWSIsqzSa9Y9MEjD2ABjoIaJbXjacg0dwJZOysM7xDTYghdUmNvvy2WNZG9EbB4KFc-7ouulN9BGYVXXfKK/s1600/There+should+be+a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgd6xE0OrVQW7hMEp55vjZdu6aqkQ9oP7ca3Ifa1G-89241Yek5VqR2xZ1cOWSIsqzSa9Y9MEjD2ABjoIaJbXjacg0dwJZOysM7xDTYghdUmNvvy2WNZG9EbB4KFc-7ouulN9BGYVXXfKK/s1600/There+should+be+a.jpg" /></a></div>
<div>
<br /></div>Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-7141182836530619832012-05-04T23:52:00.000-05:002012-05-05T00:04:38.778-05:00Grenades Work!I'm having a teeny tiny little celebration here because I now have proof that GRENADES WORK!<br />
<br />
Look at the screen shot below. The Blue Team was lucky enough to have a grenade in the troopers' inventory from the initial token draw before the match began. The Pink Team had not yet moved, so all of their members were standing together in a group. Trooper Lucien had a clear shot at them, so he launched a grenade over there and voila! All Pink Team members took damage!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMl-havhcLmXI7t6uMI7Y5e7suU0dQRP945vQiNfiouQZMxxAbE529ETXmBshfNp3MDq8m87Y0pAUBDtb6ZTOIJMOCwFI35cf7bPgGTxg9SC5CJEzvFPYXqNU66m0w_4G8D53h9GFzX_QW/s1600/GrenadeAftermath.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMl-havhcLmXI7t6uMI7Y5e7suU0dQRP945vQiNfiouQZMxxAbE529ETXmBshfNp3MDq8m87Y0pAUBDtb6ZTOIJMOCwFI35cf7bPgGTxg9SC5CJEzvFPYXqNU66m0w_4G8D53h9GFzX_QW/s400/GrenadeAftermath.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">One attack by Trooper Lucien of the Blue Team damaged every member of the Pink Team. <b><i>Grenades FTW!</i></b></td></tr>
</tbody></table>
<br />
<br />
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-39929031571146609102012-04-28T23:00:00.000-05:002012-04-28T23:08:23.221-05:00Progress Report (04/28/2012)First, <b><i>happy birthday</i></b> to my dear friend Genny! I'm sorry I can't celebrate with you, GM, but my love and best wishes are with you nonetheless. Have a good one!<br />
<br />
OK, getting down to business: This entire week was sort of a micro-sabbattical/vacation to take a break from my job and other responsibilities so I could spend some time relaxing and some time focusing on my capstone. Both of those efforts were mostly successful.<br />
<br />
The vacation aspect of this week involved exploring the American southwest in New Mexico and Arizona. I finally visited Roswell, enjoyed a lot of parks, trails, caves, and historical sites, and got to experience all kinds of great new things. As a game designer, I feel that it's vital to have a variety of real-life experiences because every single one of them has the potential to someday contribute to the design of a compelling player experience.<br />
<br />
The sabbatical aspect involved making some tremendous progress on Milestone 2. My laptop makes my work portable, so I took advantage of the travel time in the car and quiet evenings in hotels and campgrounds to concentrate on one task at a time. Check this out:<br />
<div>
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<b style="line-height: 18px;">Accomplishments:</b><br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<ul>
<li><span style="line-height: 18px;">Implemented Combat Tokens</span></li>
<ul>
<li><span style="line-height: 18px;">Includes functionality for attack and defense.</span></li>
<li><span style="line-height: 18px;">Is usable by humans and AI alike.</span></li>
</ul>
<li><span style="line-height: 18px;">Implemented Grenade Tokens</span></li>
<ul>
<li><span style="line-height: 18px;">The human troopers use them perfectly. </span></li>
<li><span style="line-height: 18px;">Has not yet been tested for AI troopers.</span></li>
</ul>
<li><span style="line-height: 18px;">Implemented Power Tokens</span></li>
<ul>
<li><span style="line-height: 18px;">All eight power tokens are now supported, but very little testing has taken place yet.</span></li>
</ul>
<li><span style="line-height: 18px;">Fought <i>violently</i> with an issue where the character objects are being accidentally duplicated somewhere so that the unit being used by the player (AI or human) and the unit on the server were two separate objects. This problem has not yet been resolved.</span></li>
</ul>
<b style="line-height: 18px;"><br /></b><br />
<b style="line-height: 18px;"><br /></b><br />
<b style="line-height: 18px;">Known Issues:</b></div>
</div>
</div>
</div>
<ul style="list-style-image: initial; list-style-position: initial; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 18px;">Several intermittent bugs with taking turns, but all seem to be related to the same root cause -- the bug where character object references are somehow diverging onto different objects.</span></li>
<ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 18px;"><u>Symptoms</u>:</span></li>
<ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 18px;">Units sometimes do not get their action points reduced when performing actions.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 18px;">Drawn tokens may end up in the captain's inventory no matter who drew them.</span></li>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 18px;"><u>Proposed fix</u>:</span></li>
<ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 18px;">Reacquire the reference to character object on each iteration through the AI loop and on each "advance" of the actions menu.</span></li>
</ul>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="font-family: inherit; line-height: 18px;">Sometimes Client 0, the default name of the first network connection, appears as a player on the Lobby screen.</span></li>
<li style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="font-family: inherit; line-height: 18px;">The game gets stuck in the lobby if the host is a spectator rather than a player.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Several bugs specific to Join LAN mode:</span></li>
<ul style="line-height: 1.4;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Network latency causes character upgrades to not show up right away. The client needs to wait for the updated character to return from the server before returning to the team screen.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;">The lobby doesn't turn control over to the player until the host has signaled ready. (I believe this is the exact same bug mentioned above that traps players in the lobby.)</li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Chat messages get lost when switching between the lobby and the team/character configuration screens.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">When a player drops off, their team data is orphaned. The server needs to recognize this and place the orphaned team under AI control.</span></li>
</ul>
</ul>
<div style="line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b><br /></b></div>
</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b>Next Steps:</b></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="line-height: 18px;">
<i><u><span class="Apple-style-span" style="font-family: inherit;">High Priority:</span></u></i></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<ul style="list-style-image: initial; list-style-position: initial; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li><span style="line-height: 22px;">Broadcast combat results from the server.</span></li>
<li><span style="line-height: 22px;">Display the Combat Results Summary screen. </span></li>
<li><span style="line-height: 22px;">Implement the Combat Results toggle.</span></li>
<li><span style="line-height: 22px;">Fix the character reference bug listed above.</span></li>
</ul>
<div style="line-height: 18px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<span class="Apple-style-span"><i><u><span class="Apple-style-span" style="font-family: inherit;">Medium Priority:</span></u></i></span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<ul style="list-style-image: initial; list-style-position: initial; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li><span style="line-height: 1.4;">Implement destructible containers.</span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;">Add hazards and bonus spaces to the game board.</span></span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;">Fix the broken map editor. </span></span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;">Record gameplay video.</span></span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;">Write preliminary postmortem (capstone edition).</span></span></li>
</ul>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="line-height: 18px;">
<span class="Apple-style-span"><i><u><span class="Apple-style-span" style="font-family: inherit;">Low Priority:</span></u></i></span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<ul style="list-style-image: initial; list-style-position: initial; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit; line-height: 1.4;">Investigate ways to dynamically</span><span class="Apple-style-span" style="font-family: inherit; line-height: 1.4;"> color the team uniforms. Experiment on the placeholders.</span></li>
<ul style="line-height: 1.4; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="line-height: 1.4;">If this works, add the ability to dynamically color MHFont objects too.</span></li>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Finish the level design guide.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Finish asset lists for current set of level designs.</span></li>
<li style="line-height: 1.4;"><span style="font-family: inherit; line-height: normal;">Create the in-game chat component.</span></li>
<ul style="line-height: 1.4;">
<li><span style="font-family: inherit; line-height: normal;">But first, fix the issue with the lost messages by making the data structure static.</span></li>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Model the characters.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;">Animate the characters using Shaun Hager's animations.</li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;">Add sound effects to the actions menu buttons.</li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Implement the Heal action.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="font-family: inherit; line-height: 1.4;">Finish the "whose turn" display.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span">Finish voice scripts for narration.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Finish the team creation screen.</span></li>
<ul style="line-height: 1.4; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Put in the floor image for the captains to stand on.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Replace plain gray buttons with captain character images.</span></li>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Let's see if we can allow the player to change video modes dynamically from the options screen so they don't have to close the program and rerun it to change resolutions.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Design the web site.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Get coin display graphics from the former art team.</span></li>
<ul style="line-height: 1.4; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Add it to the team configuration screen.the character configuration screen and the recruitment screen.</span></li>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Replace the temporary column header graphic on the character equip screen.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Test and troubleshoot the multiplayer modes.</span></li>
</ul>
</div>
<div style="line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<br /></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="font-family: tahoma, verdana, 'sans serif'; font-size: 12px; line-height: 18px; text-align: center; width: 214px;">
<div style="color: white; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<a href="http://flash.meetup.com/169/?track=i3/mu_yudewnrtsk" style="color: #888888; text-decoration: none;">Click here to check out<br />The Indie Video Game Developers Association!</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-47222379724730531262012-04-20T23:28:00.000-05:002013-09-19T16:52:15.272-05:00Redefining Milestone 2, Phase 2I have made a decision regarding the missing requirements that I explained in my last post. Implementation of the Heal Action will be postponed until the relevant Milestone 3 requirements have been implemented and verified, and the Grenade Token functionality will be incorporated into Milestone 2, Phase 2, which I am currently working on. Grenade Tokens have been assigned their own requirement statement as follows:<br />
<blockquote class="tr_bq">
<b>Requirement 2.2.10</b>: The combat evaluator shall process Grenade Tokens | The Grenade Token cannot be blocked, has no defense value (can only be used for attacking), and does two points of damage to all characters or containers within a two-meter radius of the target object. </blockquote>
So Milestone 2, Phase 2 is now defined like this:<br />
<ul>
<li><b>Phase 2</b>: Combat using basic Combat Tokens.</li>
<ul>
<li>Requirements 2.2, 2.2.1, and 2.2.10</li>
</ul>
</ul>
<div>
<br /></div>
Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-14742378625587136452012-04-16T12:52:00.000-05:002012-04-18T12:53:37.791-05:00Missing Requirements?Today I was doing some requirements verification by looking over the game design document to make sure that my Milestone requirements are actually correct. From the perspective of my capstone, they <i>have </i>to be because they've been incorporated into a binding contract with DePaul University, but that doesn't necessarily mean that they're properly aligned with the game's design.<br />
<div>
<br /></div>
<div>
Thankfully, all of the requirements that I included are indeed correct. But there is a potential problem: I may have omitted two requirements that maybe should have been specified: Grenades and the Heal action. So the question is this: Do I write them in anyway even though they're not part of my independent study agreement, giving myself extra work to do before the deadline and possibly, hypocritically, exposing myself to further scope creep? Or do I hold off until the capstone phase is over and throw them in later? I love and hate both choices.<br />
<br /></div>
<h3>
<b>Grenade Tokens</b></h3>
<div>
Trooper units may have Grenade Tokens in their inventory that they can use during an attack. These are played like normal Combat Tokens, but have special rules for how they affect the defending side. (Specifically, that they do area damage and can't be blocked by the defender.) The implementation of Grenade Tokens was omitted from Requirement 2.2, but it definitely belongs there.<br />
<br /></div>
<h3>
<b>Healing</b></h3>
<div>
The Heal action on the Actions Menu has not been implemented. One complication here is that it doesn't seem to fit within any of the stripes defined by the three milestones.</div>
<div>
<br /></div>
<div>
<ul>
<li><b>Milestone 1: Combat Initiation</b></li>
<ul>
<li>This is about validating player actions, setting up the attacker's input to the combat evaluator, and shipping the data off to the game server. Healing doesn't belong here.</li>
</ul>
<li><b>Milestone 2: Combat Resolution</b></li>
<ul>
<li>This is about getting the defender's response to an attack, computing the results according to the game rules defined in the GDD, and notifying the players of what happened. Healing doesn't belong here either.</li>
</ul>
<li><b>Milestone 3: The Game World Environment</b></li>
<ul>
<li>This is about interactive things in the game world that influence the units or the teams in some way. Healing happens straight from the inventory except when...hey, wait a minute. One of the random events in the game world is "Found a snack" which restores one hit point to the unit who encounters it. That's the same thing that the Heal action does except it doesn't require the player to sacrifice a Heal Token. </li>
</ul>
</ul>
Maybe I'll slip this requirement into Milestone 3...or maybe I'll just let it slide and implement it when the capstone phase is over because it doesn't really fit here either.</div>
<div>
<br /></div>
<div>
<br /></div>Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-77628956289921226172012-04-15T23:52:00.000-05:002012-04-16T01:03:55.613-05:00The Very First Successful Attack!My friends, this is a momentous occasion in the history of <i>Team Laser Combat</i>. Just now, for the very first time ever, an attack was successfully processed in its entirety. My character, Captain Karen of the Blue Team, attacked Officer May of the Green Team. As you can see by May's health bar in the lower left corner of the screen, she actually took damage!<div>
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3bc3WGV1a8Wt7u-D1wC5ybkya9T4wlUN5yiYDCo6nsy1ymCXIdbXSmVVJ50K4uByRf3plzrW_wtI-uyqpfwupR5pkqq_fQA2NDEYHxVga9mdGuml4uGMYVxe-BYjm7i4V1bQKxkwvGWys/s1600/javaw+2012-04-16+00-22-15-14.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3bc3WGV1a8Wt7u-D1wC5ybkya9T4wlUN5yiYDCo6nsy1ymCXIdbXSmVVJ50K4uByRf3plzrW_wtI-uyqpfwupR5pkqq_fQA2NDEYHxVga9mdGuml4uGMYVxe-BYjm7i4V1bQKxkwvGWys/s400/javaw+2012-04-16+00-22-15-14.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Coincidentally, this also shows that the health bars work.</td></tr>
</tbody></table>
<div>
<br /></div>
</div>
<div>
<div>
Here's exactly what happened: When it was my turn, I moved Karen so she had a clear shot at May. I clicked the Attack button, clicked the arrow pointing toward May, and then chose my most powerful offensive Combat Token. As a result, May's health was decreased by a lot!</div>
<div>
<br /></div>
<div>
Success!</div>
</div>Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-38016598679565363852012-04-14T23:15:00.000-05:002012-04-14T23:15:34.044-05:00Progress Report (04/14/2012)I haven't been doing these "traditional" progress reports lately because the project and I are now in "capstone phase." So, as you may have noticed, we're doing things a little bit differently. The sprints are now more tightly focused and the urgency of progressing each week has multiplied exponentially.<br />
<br />
Still, I think it's important that the quality of the project management documentation is maintained if not improved. Milestone 1 of 3 concluded last week and Milestone 2 is now being planned, so this seems like a good time to post one of my regular progress reports to mark the occasion and bridge the three-month gap between pre-capstone and post-capstone development phases.<br />
<br />
So here's a progress report in the old, familiar style.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<b style="line-height: 18px;">Accomplishments:</b><br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<ul>
<li style="line-height: 18px;">Fixed the bug where AI players would continually ask the server for movement points even when it wasn't their turn.</li>
<li style="line-height: 18px;">Made the inventory screen customizable for attacking and defending.</li>
<li style="line-height: 18px;">Added validation to the Actions menu.</li>
<li style="line-height: 18px;">Implemented the Attack action on the client side. Server side support still needs to be completed and tested.</li>
<li style="line-height: 18px;">Implemented the Auto Attack option.</li>
<li style="line-height: 18px;">Uncovered several more defects for the bug list. </li>
</ul>
<b style="line-height: 18px;"><br /></b><br />
<b style="line-height: 18px;">Known Issues:</b></div>
</div>
</div>
</div>
<ul style="list-style-image: initial; list-style-position: initial; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="font-family: inherit; line-height: 18px;">AI players occasionally perform more actions than they should be allowed.</span></li>
<li style="border-style: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: inherit; line-height: 18px;">Sometimes Client 0, the default name of the first network connection, appears as a player on the Lobby screen. </span></li>
<li style="border-style: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: inherit; line-height: 18px;">The only action that appears in the Event Log for AI players is movement. Drawing tokens and attacking are not being reported correctly to the Event Log.</span></li>
<li style="border-style: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: inherit; line-height: 18px;">The game gets stuck in the lobby if the host is a spectator rather than a player.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Several bugs specific to Join LAN mode:</span></li>
<ul style="line-height: 1.4;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Network latency causes character upgrades to not show up right away. The client needs to wait for the updated character to return from the server before returning to the team screen.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;">The lobby doesn't turn control over to the player until the host has signaled ready. (I believe this is the exact same bug mentioned above that traps players in the lobby.)</li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Chat messages get lost when switching between the lobby and the team/character configuration screens.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">When a player drops off, their team data is orphaned. The server needs to recognize this and place the orphaned team under AI control.</span></li>
</ul>
</ul>
<div style="line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b><br /></b></div>
</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b>Next Steps:</b></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="line-height: 18px;">
<i><u><span class="Apple-style-span" style="font-family: inherit;">High Priority:</span></u></i></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<ul style="list-style-image: initial; list-style-position: initial; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li><span style="line-height: 1.4;"><span style="line-height: normal;"><span style="line-height: 22px;">Implement the Defend interface.</span></span></span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;"><span style="line-height: 22px;">Create the combat evaluator in the server.</span></span></span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;"><span style="line-height: 22px;">Broadcast combat results from the server.</span></span></span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;"><span style="line-height: 22px;">Make clients respond to combat results by showing indications on screen (special effects, event log updates, etc.).</span></span></span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;"><span style="line-height: 22px;">Fix the Event Log so it shows all player actions.</span>
</span></span></li>
</ul>
<div style="line-height: 18px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<span class="Apple-style-span"><i><u><span class="Apple-style-span" style="font-family: inherit;">Medium Priority:</span></u></i></span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<ul style="list-style-image: initial; list-style-position: initial; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li><span style="line-height: 1.4;"><span style="line-height: normal;"><span style="line-height: 22px;">Display the Combat Results Summary screen. <br />
</span></span></span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;"><span style="line-height: 22px;">Implement the Combat Results toggle. </span></span></span></li>
<li><span style="line-height: 1.4;">Implement destructible containers.</span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;">Add hazards and bonus spaces to the game board.</span></span></li>
<li><span style="line-height: 1.4;"><span style="line-height: normal;">Fix the broken map editor. </span>
</span></li>
</ul>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="line-height: 18px;">
<span class="Apple-style-span"><i><u><span class="Apple-style-span" style="font-family: inherit;">Low Priority:</span></u></i></span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<ul style="list-style-image: initial; list-style-position: initial; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-style: none; line-height: 1.4; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span class="Apple-style-span" style="font-family: inherit; line-height: 1.4;">Investigate ways to dynamically</span><span class="Apple-style-span" style="font-family: inherit; line-height: 1.4;"> color the team uniforms. Experiment on the placeholders.</span></li>
<ul style="line-height: 1.4; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="line-height: 1.4;">If this works, add the ability to dynamically color MHFont objects too.</span></li>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Finish the level design guide.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Finish asset lists for current set of level designs.</span></li>
<li style="line-height: 1.4;"><span style="font-family: inherit; line-height: normal;">Create the in-game chat component.</span></li>
<ul style="line-height: 1.4;">
<li><span style="font-family: inherit; line-height: normal;">But first, fix the issue with the lost messages by making the data structure static.</span></li>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Model the characters.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;">Animate the characters using Shaun Hager's animations.</li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;">Add sound effects to the actions menu buttons.</li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="line-height: 1.4;">Implement the Heal action.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span style="font-family: inherit; line-height: 1.4;">Finish the "whose turn" display.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span">Finish voice scripts for narration.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Finish the team creation screen.</span></li>
<ul style="line-height: 1.4; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Put in the floor image for the captains to stand on.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Replace plain gray buttons with captain character images.</span></li>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Let's see if we can allow the player to change video modes dynamically from the options screen so they don't have to close the program and rerun it to change resolutions.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Design the web site.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Get coin display graphics from the former art team.</span></li>
<ul style="line-height: 1.4; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;">
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Add it to the team configuration screen.the character configuration screen and the recruitment screen.</span></li>
</ul>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Replace the temporary column header graphic on the character equip screen.</span></li>
<li style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; line-height: 1.4; margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.25em; padding-left: 0px; padding-right: 0px; padding-top: 0.25em;"><span class="Apple-style-span" style="font-family: inherit;">Test and troubleshoot the multiplayer modes.</span></li>
</ul>
</div>
<div style="line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<br /></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="font-family: tahoma, verdana, 'sans serif'; font-size: 12px; line-height: 18px; text-align: center; width: 214px;">
<div style="color: white; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<a href="http://flash.meetup.com/169/?track=i3/mu_yudewnrtsk" style="color: #888888; text-decoration: none;">Click here to check out<br />The Indie Video Game Developers Association!</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-36391188403300368412012-04-11T00:21:00.000-05:002012-04-11T00:21:00.854-05:00Milestone 2 DependenciesAssuming that I go forth with the phases described in my last post (and I <i>am</i> assuming that), there is a certain order in which the phases must be completed. That is, until I finish Phase 2. Then I'll have a choice between Phases 3, 4, and 5, which all depend on 2 but don't necessarily depend on each other. I have some time to think about which I'll do first because I won't arrive at that particular decision point for quite a while still.<br />
<br />
I expect this (barely adequate) Pert chart to guide some of my decisions as I work my way through this milestone.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_5OpfPr8gXBPr8iKJ9FlTYudakuMC7VA6z1gGjeRPWxAUZCvisRacvtOmVWdXlHxbE86hV6PJHAEiEmbmn4Lu78zB9z_SOVf1ggb2nV0id1_4Wo5FAtoFSfYAF9srHNrqJS1qEpykgV5p/s1600/Milestone2PhaseDependencies.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_5OpfPr8gXBPr8iKJ9FlTYudakuMC7VA6z1gGjeRPWxAUZCvisRacvtOmVWdXlHxbE86hV6PJHAEiEmbmn4Lu78zB9z_SOVf1ggb2nV0id1_4Wo5FAtoFSfYAF9srHNrqJS1qEpykgV5p/s320/Milestone2PhaseDependencies.jpg" width="308" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Six phases in five weeks. Can it be done? That's not a rhetorical question!</td></tr>
</tbody></table>
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-69558767688340869052012-04-10T01:01:00.001-05:002012-04-10T16:37:59.078-05:00Planning Milestone 2With Milestone 1 out of the way, Milestone 2 now looms. From my current vantage point, it looks like a pretty steep mountain to climb, so let's see if I can find a way to break it down into something manageable. Some of the following chunks are a bit large to be called "bite-sized", but they do provide a logical division of related functionality so I'm going to try to move forward with this plan.<br />
<br />
<ul>
<li><b>Phase 1</b>: Completing the UI for player-controlled combat factors.</li>
<ul>
<li>Requirement 2.1</li>
</ul>
<li><b>Phase 2</b>: Combat using basic Combat Tokens.</li>
<ul>
<li>Requirements 2.2 and 2.2.1</li>
</ul>
<li><b>Phase 3</b>: Offensive Power Tokens</li>
<ul>
<li>Requirements 2.2.2, 2.2.3, 2.2.4, and 2.2.5</li>
</ul>
<li><b>Phase 4</b>: Defensive Power Tokens</li>
<ul>
<li>Requirements 2.2.6, 2.2.7, 2.2.8, and 2.2.9</li>
</ul>
<li><b>Phase 5</b>: Handling combat results</li>
<ul>
<li>Requirements 2.3, 2.4, and 2.5</li>
</ul>
<li><b>Phase 6</b>: Auto Defense and the Event Log</li>
<ul>
<li>Requirements 2.6, 2.7, and 2.8</li>
</ul>
</ul>
<br />
Here's the complete set of requirement statements, expanded for clarity.<br />
<br />
<table border="1" cellspacing="0" cols="3">
<tbody>
<tr>
<td colspan="3"><h1>
Milestone 2: Combat Resolution</h1>
</td>
</tr>
<tr>
<th>Requirement ID</th>
<th>Description</th>
<th>Dependencies</th>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.1" valign="TOP"><b>2.1</b></td>
<td align="LEFT" valign="TOP">When a unit is attacked, the system shall notify the player controlling the unit by presenting a Defend UI which allows selection of a defensive combat token from the player’s inventory. </td>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP">1.5</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.2" valign="TOP"><b>2.2</b></td>
<td align="LEFT" valign="TOP">The game server shall resolve combat interactions by evaluating the stats of the characters and their selected combat tokens and updating the data model accordingly. </td>
<td align="CENTER" sdnum="1033;" sdval="2.1" valign="TOP">2.1</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>2.2.1</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process Combat Tokens for their basic attack and defense values.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>2.2.2</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Vampire Power Token | If the attack does damage, the attacker heals one hit point per unit of damage dealt.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>2.2.3</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Lucky Shot Power Token | If the attack does damage, the damage amount is doubled.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>2.2.4</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Desperation Power Token | The attack value is normally 4, but if the attacker is the only remaining member of the team, then the attack value is 10.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>2.2.5</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Blaze of Glory Power Token | If the attack does damage, the damage amount is doubled, but if the attack is blocked, the attacker takes 5 points of damage.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>2.2.6</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Reflection Power Token | Any attack, regardless of power, is reflected back at the attacker. The defender takes no damage.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>2.2.7</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Resolve Power Token | Defense value goes up as the character health goes down. DF = maxHP - currentHP</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>2.2.8</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Lucky Break Power Token | If the attack is blocked, any excess defense points are converted to health points for your unit.</td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><b>2.2.9</b></td>
<td align="LEFT" valign="TOP">The combat evaluator shall process the Shatter and Scatter Power Token | If the attack is blocked, each member of the attacking team takes two points of damage.</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.3" valign="TOP"><b>2.3</b></td>
<td align="LEFT" valign="TOP">The game server shall broadcast a summary of combat results to all connected players. </td>
<td align="CENTER" sdnum="1033;" sdval="2.2" valign="TOP">2.2</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.4" valign="TOP"><b>2.4</b></td>
<td align="LEFT" valign="TOP">The system shall provide a Combat Results toggle that allows players to opt out of seeing the detailed combat summaries at the conclusion of each combat interaction. </td>
<td align="CENTER" sdnum="1033;" sdval="2.3" valign="TOP">2.3</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.5" valign="TOP"><b>2.5</b></td>
<td align="LEFT" valign="TOP">The user interface shall display a combat summary screen when combat results are received from the game server IFF the Combat Results option is turned on. </td>
<td align="CENTER" valign="TOP">2.3, 2.4</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.6" valign="TOP"><b>2.6</b></td>
<td align="LEFT" valign="TOP">The system shall provide an Auto Defense option that players may activate if they would rather have the game select their tokens for them automatically when their units are attacked. </td>
<td align="CENTER" sdnum="1033;" sdval="2.1" valign="TOP">2.1</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.7" valign="TOP"><b>2.7</b></td>
<td align="LEFT" valign="TOP">The system shall display an event log on the HUD which records the actions taken by all units in the game. </td>
<td align="CENTER" sdnum="1033;" sdval="2.3" valign="TOP">2.3</td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="2.8" valign="TOP"><b>2.8</b></td>
<td align="LEFT" valign="TOP">AI players shall be able to defend against attacks subject to the same rules as the human players. </td>
<td align="CENTER" sdnum="1033;" sdval="2.6" valign="TOP">2.6</td>
</tr>
</tbody>
</table>Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-83673534390944429122012-04-08T10:40:00.000-05:002012-04-09T00:49:05.457-05:00Milestone 1 Complete!In a fortuitous event rarely seen in the software industry, Milestone 1 was completed on schedule.<br />
<br />
You don't believe me? I don't blame you; I wouldn't either if I hadn't verified it myself. But it's true, all stated requirements in the scope of Milestone 1 have been implemented.<br />
<br />
When I get a chance to return to the project (probably later in the week), I'll try to break Milestone 2 apart into phases as I did for Milestone 1. I'm not sure if it has the same clear divisions, but I'll see what I can do. One thing I know for sure about 2 is that it's easily the most difficult and complex of the three milestones, so a respectable design process is justified.<br />
<br />
And by the way...HAPPY EASTER!<br />
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-77229614430273831152012-04-06T02:30:00.000-05:002013-09-19T16:50:55.701-05:00Milestone 1, Phase 3 in ProgressThis post is just a quick update on the status of Milestone 1 Phase 3.<br />
<br />
<b>Requirement 1.4: The system shall provide an Auto Attack option that players may select if they would rather have the game select their tokens for them automatically after issuing the Attack command. </b><br />
<br />
Requirement 1.4 is complete. The Auto Attack option exists and it functions correctly, both on the interface and in the data structures behind the scenes.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2N48kKt23aAMxTBdUBJcsCtPcbHnhRhEW9EgN71D41D3tdyO5U5aFIj7DcunWkRjezVAWr3vhyllJMmkSlLXD-GhwEJEPaLwIJdy4SjQO77zjuVwtfMXWvjuQ88AtcOp3lQGQIiYUdImy/s1600/javaw+2012-04-06+02-03-55-11.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2N48kKt23aAMxTBdUBJcsCtPcbHnhRhEW9EgN71D41D3tdyO5U5aFIj7DcunWkRjezVAWr3vhyllJMmkSlLXD-GhwEJEPaLwIJdy4SjQO77zjuVwtfMXWvjuQ88AtcOp3lQGQIiYUdImy/s400/javaw+2012-04-06+02-03-55-11.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The in-game Options menu contains the Auto Attack option. When it is turned on, players are not prompted to select a combat token to spend when attacking. Instead, the game employs a simple but strategic algorithm to select one automatically. This is the same logic that will be used by the AI when I get around to Requirement 1.6.</td></tr>
</tbody></table>
<br />
<b>Requirement 1.5: After the player has selected a direction for attack, the system shall display the offensive combat tokens from the player’s inventory and allow the selection of a token to spend IFF the Auto Attack option is turned off.</b><br />
<br />
Requirement 1.5 is in progress. The Inventory screen has been parameterized so that it can initialize itself appropriately for each of its three purposes: viewing the inventory, selecting a token for attack, and selecting a token for defense. It also allows selection of a combat token to spend on an attack. The token is correctly removed from inventory when it is selected.<br />
<br />
Here's a demonstration of the differences between the "view inventory" mode and the "select an attack token" mode.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc3wFbzPN0H6ENNE5DLiIFwXGAc1w6wa6u2GmhfHrETgbontxiaqjQBK8OJJ8sZSJTvpqyLGlV1BkFlO_DgcVHgkcyaebpe3MO0QL_2nRI1E8RFJ_qw7kAN1Wuh1IgVC_J9plqcbjzXzyn/s1600/javaw+2012-04-06+02-20-07-54.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc3wFbzPN0H6ENNE5DLiIFwXGAc1w6wa6u2GmhfHrETgbontxiaqjQBK8OJJ8sZSJTvpqyLGlV1BkFlO_DgcVHgkcyaebpe3MO0QL_2nRI1E8RFJ_qw7kAN1Wuh1IgVC_J9plqcbjzXzyn/s400/javaw+2012-04-06+02-20-07-54.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">In the normal mode, the Inventory screen does not allow a token to be selected. Instead, it allows you to switch between viewing offensive and defensive tokens for each of the three character types.</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNmxjb4c3t5869o7fT-GwAWiKPTejzCDrBZquoTLUbWXgqcwJUeCJvBLFvnTRX6oShQomOAn23RXJ4Q5LvR8GO2yaaTB0MPxnF9G11l0-Bp_y-oqIRUhTdrCMivHIqXNiXTnEmQXkwqnQH/s1600/javaw+2012-04-06+02-21-42-18.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNmxjb4c3t5869o7fT-GwAWiKPTejzCDrBZquoTLUbWXgqcwJUeCJvBLFvnTRX6oShQomOAn23RXJ4Q5LvR8GO2yaaTB0MPxnF9G11l0-Bp_y-oqIRUhTdrCMivHIqXNiXTnEmQXkwqnQH/s400/javaw+2012-04-06+02-21-42-18.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">When a player is attacking, the Inventory screen opens in a different mode that removes the buttons for switching between views. The only way to interact with the screen in this mode is to click on a token to select it.</td></tr>
</tbody></table>
Remaining tasks in Requirement 1.5:<br />
<br />
<ul>
<li>Choosing the Attack action should deduct an action point. It does not currently do this.</li>
<li>Power Tokens should be selectable as well, but currently only Combat Tokens can be selected.</li>
</ul>
<br />
<b>Requirement 1.6: AI players shall be able to issue Attack commands that are subject to the same validation rules as the human players.</b><br />
<br />
I haven't really started this one yet. It seems simple on the surface, but there are a number of really bad bugs in the limited functionality that the AI already has, and these may need to be addressed before this requirement is implemented. Further investigation is necessary before I'll know for sure.<br />
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-2995636881442207772012-04-05T02:27:00.000-05:002013-09-19T16:50:43.653-05:00Milestone 1, Phase 2 CompleteRequirement 1.3 is verified and validated! Here's the actual statement for reference:<br />
<blockquote class="tr_bq">
<b>Requirement 1.3: If the Attack action is available and is selected from the Actions Menu, the system shall display the directions in which an attack is possible and allow selection of one of these directions.</b></blockquote>
When I left off on Monday, there were just a few details left unfinished...so I finished 'em. The target validation works correctly for all conditions now, and the attack direction arrows are clickable.<br />
<br />
This signals the end of Milestone 1, Phase 2. So next I'm moving on to the final phase of Milestone 1, which consists of the following three requirements:<br />
<br />
<table border="1" cellspacing="0">
<tbody>
<tr>
<td align="CENTER" valign="TOP"><b>1.4</b></td>
<td align="LEFT" valign="TOP">The system shall provide an Auto Attack option that players may select if they would rather have the game select their tokens for them automatically after issuing the Attack command. </td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="1.5" valign="TOP"><b>1.5</b></td>
<td align="LEFT" valign="TOP">After the player has selected a direction for attack, the system shall display the offensive combat tokens from the player’s inventory and allow the selection of a token to spend IFF the Auto Attack option is turned off. </td>
</tr>
<tr>
<td align="CENTER" sdnum="1033;" sdval="1.6" valign="TOP"><b>1.6</b></td>
<td align="LEFT" valign="TOP">AI players shall be able to issue Attack commands that are subject to the same validation rules as the human players. </td>
</tr>
</tbody>
</table>
Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0tag:blogger.com,1999:blog-3188721828742304536.post-9887354080657606932012-04-02T00:02:00.000-05:002012-04-02T00:07:03.095-05:00Requirement 1.3 in ProgressI spent all day today working on Requirement 1.3 (aka Milestone 1, Phase 2). I estimate that it's about 75% done. Part of the validation is working and the directional buttons and labels are showing up correctly. Check it out:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimoIoyEPtTj0zdTqaakCX2vx1Dt8zufQsoBBMmLPHu6Uo1naduplyPE7kDpcea_QH2l8yZRmBpzY6WAcf7hURWJTU2ioa8c9PUDVC2BQAiNyqe1cckpFEYmw5FwJKKgoff6UJLCCT13l7I/s1600/javaw+2012-04-01+23-16-51-89.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimoIoyEPtTj0zdTqaakCX2vx1Dt8zufQsoBBMmLPHu6Uo1naduplyPE7kDpcea_QH2l8yZRmBpzY6WAcf7hURWJTU2ioa8c9PUDVC2BQAiNyqe1cckpFEYmw5FwJKKgoff6UJLCCT13l7I/s400/javaw+2012-04-01+23-16-51-89.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Captain Tom of the Blue Team has a combat token and, as the labeled arrows indicate, a clear shot at two enemies: Matt and Debra of the Yellow Team. Of course, he's also in their line of sight too, which will be a bad place to be once they're actually able to attack.</td></tr>
</tbody></table>
Here's what's remaining before this phase is complete:<br />
<br />
<ul>
<li>The validation rules need to be completed. Right now, they consider <i>any </i>character to be a target, including your own teammates.</li>
<li>The arrows need to respond to mouse clicks by tracing the line of sight to get a reference to the chosen target and then storing it somewhere temporarily so it can be transmitted to the game server along with the selected combat token to finish the combat interaction.</li>
</ul>
<div>
<br /></div>
<br />
<br />Michael Hensonhttp://www.blogger.com/profile/09229150497180356343noreply@blogger.com0