140 likes | 276 Vues
The ACM Bracket Manager is designed to simplify the management of LAN tournament brackets for the ACM club. By leveraging a web application hosted on the ksuacmlanparty.info website, we aim to eliminate time-consuming bracket setups and enhance the tournament experience. Key technologies include ASP.NET, PHP, and Symfony, utilizing the Challonge API to dynamically manage match states. The application underwent testing during recent LAN events, revealing areas for improvement like bulk participant addition and auto-refresh features. Future enhancements will focus on user accounts, database expansion, and real-time updates.
E N D
ACM Bracket Manager WillStrohmeier CIS 598: CS Senior Project
Outline • Goals • Project Design • Database Design • Demo • Testing Phase • Future Work • Questions
Goals • Provide the ACM club a way to quickly and easily manage brackets for LAN tournaments. • Do this through a web application that can be moved to the ksuacmlanparty.info website. • Eliminate the time setting up the bracket and make progressing through the tournament easier.
Project Design • Web Technologies • ASP.NET • PHP • Symfony • Actions • Templates • Doctrine • Challonge API
Symfony Action public function executeMatches(sfWebRequest $request) { $c = new ChallongeAPI(‘555hano…duyh7n'); $id = $request->getParameter('id'); $this->id = $id; $matches = $c->getMatches($id, array()); $this->matches = $matches; }
Symfony Template <tbody id="tableBody" > <?phpforeach ($matches as $m) { if ($m->state == 'open') { ?> <tr> <td><?php echo player_name($id, $m->{'player1-id'}) ?></td> <td>vs</td> <td align="right"><?php echo player_name($id, $m->{'player2-id'}) ?></td> <td align="center"><?php echo get_station($t->id, $m->id) ?></td> </tr> <?php } } ?> </tbody>
Database Design: Bracket/Stations Doctrine – PHP Object Relational Mapper schema.yml: Brackets: actAs: {Timestampable: ~} columns: tourney_id: {type: integer} num_stations: {type: integer} Stations: actAs: {Timestampable: ~} columns: tourney_id: {type: integer} station_num: {type: integer} match_id: {type: integer} Stations tourney_id station_num match_id Brackets tourney_id num_stations 1 0-*
Doctrine Queries: $b = new Brackets(); $b->setTourney_id($id); $b->setNum_stations(0); $b->save(); Doctrine_Query::create() ->update('brackets b') ->set('b.num_stations', '?', $num) ->where('b.tourney_id = ?', $tid) ->execute(); Doctrine_Query::create() ->delete() ->from('stations s') ->where('s.tourney_id = ?', $id) ->execute();
Testing Phase: • Held a test run on April 27th at the console ACM LAN Party. • At the LAN we used the Bracket Manager for two tournaments • Brawl (45 people) • Naruto (16 people)
Problems: • No bulk add for participants • No auto refresh on stations page • Better organization of current match list • Sluggish at times • Hard to find people for the match
Added Features • Bulk add users • Auto refresh Stations page
Future Work • Account system • Expand Database • fewer API calls • Better ordering of current matches • Text participants when their match is up