Our previous requirement analysis treats only game software because the quality model defined by ISO 9126 is for software quality. In contrast, a goal-oriented requirements analysis can elicit requirements on both game software and game rules [10]. Thus, we carried out a goal-oriented requirements analysis. Figure 1 shows the results of the requirement analysis for JC2012. The circles and squares indicate goals and implemen- tations, respectively. We determined our two goals: fun and learning Java because one of the most important characteristics is fun [11]. The fun is also divided into six sub-goals (SGs): interesting, understandable, usable, attractive, reliable and fair. SG1. Interesting and SG2. Understandable: We made game rules by integrating two well-known games, “The Set- tlers of Catan (Catan)” and “Galcon” to make game software interesting and understandable. The integration of well-known games make game software novel and understandable because contestants can easily understand well-known games and the integration brings novelty. While “Catan” is a board game,“Galcon” is a digital game whose category is real-time strat- egy. We decided to use “Catan” as a basis adding the game elements of “Galcon” into it. We also removed game elements to make game rules simple because a oversimple integration increases complexity of game rules. SG3. Usable and SG4. Attractive: Contestants want to properly use a character-based user interface (CUI) and a graphical user interface (GUI) in terms of usability. Some- times contestants adapt machine learning to AI programs. While a CUI is suitable for programs for manipulating game software in such case, a GUI is suitable for showing games to audiences. Moreover, user want to use user-manipulation and AI-manipulation modes for different purposes. However, it is difficult to construct various UI modes because existing patterns using Java cannot modularize such modes well. Thus, we decided to use Scala to construct fine-grained modules for the modes. Moreover, we decided to extended an existing pattern for achieving separation of concerns (SoC). SoC aids designers to concentrate on designing attractive user interfaces. SG5. Fair: The exclusive AI execution prevents from inter- ceptions of other AI programs, and the read-only state prevents changing of the game state illegally. GAIA provides a feature to execute AI programs exclusively and several immutable classes. However, GAIA cannot help adding new immutable classes that represent the game state. Thus, we decided to use Scala to develop game software for JC2012 because functional programming languages including Scala prefers immutability and supports immutability. SG6. Reliable: Faults do not occur in only game software but also in game rules. To find faults in game rules, we decided to review whole AI programming contests including game rules. We released game documents without game software to the public one week before JC2012. Moreover, we also decided to conduct beta testing for verifying JC2012. We asked programmers worked in sponsor companies to participate in our beta testing one week before JC2012. Note that JavaChallenge should encourage contestants to learn Java. Thus, AI programs for JavaChallenge should be written in Java. We decided that our game software provides Java API for communicating with AI programs.