|
1 | 1 | ---
|
2 |
| -title: APH course |
3 |
| -description: Requirements for finishing the NI-APH course |
| 2 | +title: APH course - materials |
| 3 | +description: Materials for the APH course |
| 4 | +exclude_en: true |
4 | 5 | ---
|
5 | 6 |
|
6 | 7 | import useBaseUrl from '@docusaurus/useBaseUrl';
|
7 | 8 | import Lectures from '@site/docs/courses/aph_lectures.tsx'
|
8 | 9 |
|
9 |
| - |
10 |
| -## Requirements for successful course completion: |
11 |
| -1. Submit a game mechanics concept. |
12 |
| -2. Present your progress. |
13 |
| -3. Submit the semester project. |
14 |
| -4. Pass an oral examination. |
15 |
| -5. Acquire at least 50 points throughout the semester. |
| 10 | +## Course info |
| 11 | +- The course ran from 2017 to 2023 at FIT CTU. |
| 12 | +- The main goal was to introduce the students to the basics of video game development (game-engine agnostic) and to create a semester project. |
| 13 | +/ Submitted semester projects can be found in the <a href={useBaseUrl('gallery')}>gallery</a> section. |
16 | 14 |
|
17 | 15 | ## Slides
|
18 |
| -<Lectures /> |
19 |
| - |
20 |
| -## Important Dates |
21 |
| -- 11/5 - Finalize project requirements. |
22 |
| -- 11/21 and 11/28 - Progress presentations. |
23 |
| -- 12/19 - minitest during the last lecture |
24 |
| -- 1/11 - Deadline for submitting semester projects. |
25 |
| -- 2/18 - End of the semester (all points must be earned by then). |
26 |
| - |
27 |
| -## Grading |
28 |
| -- **Semester Project**: 60 points, minimum 30 required. |
29 |
| -- **Exam**: 30 points, minimum 15 required. |
30 |
| -- **Minitest**: 10 points (ABCD answers), no minimum requirement, attendance not mandatory. |
31 |
| -- Quiz: a maximum of 10 points (2 points for the top 3 scores, 1 point otherwise). |
32 |
| - - The quiz will be randomly held during lectures. |
33 |
| - - Questions will cover material from previous lectures. |
34 |
| -- Technical blog article: 10 points (in CZ, EN, or both), optional. |
35 |
| -- Bonus points if your semester project runs on the ggBlaster arcade - 10 points. |
36 |
| - |
37 |
| -### Rewards |
38 |
| -- For 95 points and above - APH swag (t-shirt, mug, etc.). |
39 |
| - |
40 |
| -### Penalties |
41 |
| -- **-5 points** - late submission of project requirements beyond November 5th. |
42 |
| -- **-20 points** - late submission of semester project beyond January 11th. |
43 |
| -- **-10 points** - unexcused absence during progress presentations. |
44 |
| - |
45 |
| -## Semester Project |
46 |
| -### Requirements |
47 |
| -- The game must run on the web. |
48 |
| -- Students must work on the game individually or in pairs. |
49 |
| -- The game concept must be approved by the instructor (during the "Finalization of Project Requirements" phase). |
50 |
| -- Game assets must be taken from the Public Domain (including assets generated by AI). |
51 |
| -- The game must include at least one non-trivial **technical** mechanic. |
52 |
| -- The game can be developed using a game engine or graphic library. For educational purposes, the COLFIO library was created [COLFIO](https://colf.io/). |
53 |
| -- In the case of using the COLFIO library (or an engine with ECS architecture), the game must fully utilize the ECS pattern (Entity-Component-System). |
54 |
| - |
55 |
| -### Assignment |
56 |
| -- must be submit until 5.11. to the lecturer on Discord |
57 |
| -- the assignment should have the following structure: |
58 |
| - - whether you will be working on the game alone or in a pair of two |
59 |
| - - game genre |
60 |
| - - library/engine |
61 |
| - - space, objects, actions, rules, game objective (as described in <a href={useBaseUrl('slides/lecture01.html#24')} target="_blank">slides</a>) |
62 |
| - - the main mechanic, or a technical challenge |
63 |
| - |
64 |
| -#### Assignment - Recommendations |
65 |
| -- if the game assignment cannot fit into the structure above, you have too complex assignment |
66 |
| - - usually, 5-10 objects, 2-5 actions, and 5-10 rules are sufficient |
67 |
| - - start with must-have elements without which the game wouldn't make sense |
68 |
| -- visuals and the story do not belong in the assignment; they can be developed during prototyping |
69 |
| -- the scope should be as small as possible, with an emphasis on technical implementation |
70 |
| -- if the game includes levels, 2-3 polished levels with increasing difficulty (if appropriate for the game) are enough |
71 |
| - - it is a good thing for the game to be understandable without a README or manual. The best option is an in-game tutorial |
72 |
| - - the library/engine used can be changed during prototyping, but this should be communicated with the instructor |
73 |
| - - if it turns out that some objects/actions/rules no longer make sense during prototyping, there is no need to force them into the game. |
74 |
| - |
75 |
| -#### Assignment - Example |
76 |
| -From the game [Chicken Quest](https://gallery.aphgames.io/2021/chickenquest/) |
77 |
| -- Genre: Casual sports |
78 |
| -- Library: COLF.IO |
79 |
| -- Space: 2D, sidescroller |
80 |
| -- Objects: Animated player, power-ups, coins, traps, boost platforms |
81 |
| -- Actions: |
82 |
| - - Shooting the player into the air |
83 |
| - - Controlling the player during flight |
84 |
| - - Mid-air boost |
85 |
| - - Collecting coins and power-ups |
86 |
| - - Activating items in the inventory |
87 |
| - - Purchasing upgrades between rounds |
88 |
| -- Rules: |
89 |
| - - The player can choose the angle and power of the avatar's shot. |
90 |
| - - The round ends when the player lands on the ground and loses all speed. |
91 |
| - - The player receives in-game currency as a reward, which can be used to buy upgrades. |
92 |
| - - Coins, traps, and power-ups are randomly placed throughout the level and activate upon collision with the player. |
93 |
| -- Game Objective: |
94 |
| - - Reach a predetermined distance. |
95 |
| -- Main Mechanic: |
96 |
| - - Player physics after the shot. |
97 |
| - |
98 |
| -### Technical Game Mechanics |
99 |
| -- Must involve a mechanic that is non-trivial from a programming perspective. |
100 |
| -- Examples include |
101 |
| - - Replay mechani in the game [Braid](https://store.steampowered.com/app/26800/Braid/) |
102 |
| - - Climbing on a rope |
103 |
| - - Procedurally generated objects |
104 |
| - - Guiding wind |
105 |
| - - Hierarchical loot |
106 |
| - |
107 |
| - |
108 |
| -### Additional Requirements |
109 |
| -- Create the game on the faculty's [GitLab](https://gitlab.fit.cvut.cz) with the name `NI-APH`, accessible via `gitlab.fit.cvut.cz/<username>/NI-APH`. |
110 |
| -- In addition to the game itself, the repository should include: |
111 |
| - - README with a brief description of the game and installation instructions. |
112 |
| - - Architecture diagram (as a PNG/JPG image). |
113 |
| - - **Clear and regular commits**. |
114 |
| - - Author's name in `package.json`, if using JavaScript/TypeScript, or in other manifest files. |
115 |
| - - Author's name in the license file. |
116 |
| -- The game must have a title displayed in both the HTML header and the game itself. |
117 |
| -- The repository should not contain any redundant data (especially `node_modules`, `.unitypackage`, `Obj/`, `Temp/`, etc.). Use `.gitignore`. |
118 |
| - |
119 |
| - |
120 |
| -### COLF.IO |
121 |
| -- Originally ECSLite and previously APHLib. |
122 |
| -- [Library](https://colf.io) created for the study and teaching of component-based architecture. |
123 |
| -- It is an extension of the PixiJS graphics library, adding a component architecture following the ECS pattern. |
124 |
| -- It is available as an external npm package `colfio` or as a boilerplate project [ecs-template](https://github.com/APHGames/ecs-template). |
125 |
| - |
126 |
| -### ggBlaster |
127 |
| -- If the game runs on **ggBlaster**, it is possible to earn up to 10 bonus points. |
128 |
| -- To have your semester project run on the arcade machine `ggBlaster`, it must meet the following requirements: |
129 |
| - - The game is controlled only by the keyboard, mapped to the arcade machine's buttons. |
130 |
| - - The arcade machine includes a joystick (4 positions) and 8 game buttons for each of the two players, as well as two additional functional buttons (e.g., menu/back). |
131 |
| - - The game is designed for two players. |
132 |
| - - The gamepads will be mapped to the following keyboard layout: |
133 |
| - - Player #1: |
134 |
| - - movement: ↑ ↓ ← → |
135 |
| - - action buttons: 1 4 2 5 3 6 |
136 |
| - - start/select: 7 8 |
137 |
| - - Player #2: |
138 |
| - - movement: W S A D |
139 |
| - - action buttons: G Y H U J I |
140 |
| - - start/select: O P |
141 |
| - - The style and genre match the arcade gaming style (e.g., adventure games are not suitable). |
142 |
| - - The game is optimized for a resolution of 720x480 and 50 frames per second. |
143 |
| - - The game runs smoothly on Raspberry 4 (overclocked to 1800 MHz), using the Chromium browser platform. |
144 |
| - |
145 |
| -## Oral Examination |
146 |
| -- There will be no fixed date for the oral examination; it will be conducted individually based on students' availability in room TH-A:1455 in January and February. |
147 |
| -- The examination will involve discussions on various topics from the lectures, especially those marked with orange and red lightbulbs in the slides. |
148 |
| - |
149 |
| -## Evaluation table |
150 |
| -- according to the Study and Examination Rules for Students of CTU |
151 |
| - |
152 |
| -| Grande | Range | Meaning | |
153 |
| -| ------ | ------ | ------ | |
154 |
| -| A | 90+ | excellent | |
155 |
| -| B | 80-89 | very good | |
156 |
| -| C | 70-79 | good | |
157 |
| -| D | 60-69 | fine | |
158 |
| -| E | 50-59 | satisfactory | |
159 |
| -| F | 0-49 | unsatisfactory | |
| 16 | +<Lectures /> |
0 commit comments