CS 1666 www.cs.pitt.edu/~nlf4/cs1666/ Introduction
Meta-notes These notes are intended for use by students in CS1666 at ● the University of Pittsburgh. They are provided free of charge and may not be sold in any shape or form. ● These notes are NOT a substitute for material covered during course lectures. If you miss a lecture, you should definitely obtain both these notes and notes written by a student who attended the lecture. 2
Instructor Info Nicholas Farnan (nlf4@pitt.edu) ● Office: 6313 Sennott Square 3
A note about email ● Prefix all email subjects with [CS1666] Be sure to mention the section of the class you are in: ● ○ Day/time 4
Course Info Website: ● www.cs.pitt.edu/~nlf4/cs1666/ ○ Review the Course Information and Policies ● ● Assignments will not be accepted after the deadline ○ No late assignment submissions If you do not submit an assignment by the deadline, you will ○ receive a 0 for that assignment 5
History of this course … ● 6
The American Chestnut One of the most important ● forest trees throughout its range ● Was considered the finest chestnut tree in the world It is estimated that ● between 3 and 4 billion American chestnut trees were destroyed in the first half of the 20th century by the Chestnut Blight 7
Ailanthus altissima AKA Tree of heaven ● AKA Stink tree ● ● AKA Tree of hell ● Initially introduced to the US in Philadelphia Spreads/grows quickly ● ● Produces a chemical that inhibits the growth of other plants to suppress competition ● Considered a noxious weed in the US Importation, distribution, ● trade, and sale banned in Massachusetts 8
The ForesBott Project Goal: ● Exploration and ○ development of technologies that will enable the deployment of robots in forests for the purpose of forest health Robot tasks: ● ○ Conducting field surveys ○ Detecting and controlling invasive species 9
History of this course Development using only a physical robot too time ● consuming/expensive ● So Prof. Bob Daley developed CS1666 The plan: ● Use 1666 to train students in 3D simulation ○ Recruit 1666 students into graduate program ○ Have them work on ForesBott project ○ Save America's forests ○ 10
Goals of this course 1. Using videogame design as an example use case of advanced computer science concepts 2. Gaining experience in large group development 3. Producing videogames 11
Term projects Building a videogame ● From scratch! ○ ■ Every team will build a custom engine and game on that engine using only C++ and SDL 2D ○ Must implement 3 "advanced features" ○ ■ E.g.: Networked multiplayer ● Physics simulation ● ● Advanced AI ● etc. ○ Will be built each week live by the instructor at the end of lecture Hence, must build/run Linux native ■ 12
Team structures Class will split into large teams of 10-12 students ● ○ Each team will further be divided into 3 subteams of 3-4 students focused on studying and implementing an advanced topic ○ Everyone on a team will share responsibility for the overall game and is expected to contribute equally to the code not required by a specific advanced topic ○ Everyone on a team is expected to contribute equally to any art and story development required by the game 13
Artwork I'm fine with games presenting "programmer art" ● ● From Jerry Holkins of Penny Arcade: Our own Jeff Sellak used to work at Nintendo, and he says that at the ○ time he was active there what we’d call "programmer art" was all they wanted. It was the opinion that if a game was not fun as black squares on a white background, it wasn’t actually fun. I think might be true. I often think about DK: King of Swing in this context, it’s one of my favorite games, and I can see it getting pitched this way. He also said that you couldn’t pitch them for specific IPs, really - you pitched fun mechanics, and fun mechanics got blessed with a nod from the catalog. I always found that interesting and, frankly, informative. 14
Management Each student will be assigned 1 week to be a "manager" for ● the entire team (all advanced topic subteams) Will be required to submit a specification of goals by ● 11:59PM on the starting day of their week Goals should be broad enough to represent significant effort ○ by the entire team for the week ○ Should be small enough to be reasonably accomplished Will be required to submit a report by 11:59PM on the last ● day of their week Report should be emailed to the instructor only ○ All code must be pushed to GitHub by 11:59PM on the last ● day of a manager's week Manager is responsible for ensuring the default branch of ● the team's repository builds/runs 15
Management week example Class meets on M/W, so managment weeks will run ● Wednesday-Tuesday ● Let's say Dave's week is from the 11th-17th: Goal spec due by 11:59PM on the 11th 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Report due by 11:59PM 22 23 24 25 26 27 28 on the 17th All code pushed to Game demoed in class on the 18th 29 30 GitHub by 11:59PM on the 17th 16
Management Goal Specifications Added via pull request to the course organization repository ● Hence, the instructor will have to approve them ○ ● Bulleted list of goals for the week ● Again, be careful that goals are significant , but also doable ○ E.g.: ■ "Write the enemy AI" is too broad to be doable in a single week "Change player's max velocity from 300px/sec to ■ 250px/sec" is not significant enough to ensure the game will be completed by the end of the term 17
Management Progress Reports First, for each stated goal, give a brief summary of the ● progress made toward that goal ○ Was it accomplished? ■ If not, what were the stumbling blocks? ■ If so, are there any remaining issues? What are the next steps with this work done? ● Next, for each team member: ○ List the pull requests that they made over the week and the goal that that pull request helped achieve ■ This means that you should make a note for each pull request that you, as the manager, approve! ■ A brief summary of that team member's performance for the week ● This will not be shared with the team member, will only be viewed by the instructor, hence why progress reports are emailed to the instructor and not added to the organization repo. 18
Organization Repository Will be used to set up most of the organizational aspects of ● the course, e.g.: Establish teams and advanced topic sub-teams ○ ○ Schedule management weeks ○ Report management week goal specifications Schedule advanced topic presentations ○ Each student will need to fork this repository and send pull ● requests to the instructor to contribute Once the repository is created, that will be announced and ● linked in lecture 19
DevOps Each team will have a single canonical repository ● The master branch of that repository will be pulled/tested ○ each week in lecture ● First student manager will create the canonical repository and add all team members to that repository ○ All will need to be able to pull code in during their management week Each student should fork the canonical repository to do ● their own work Issue a pull requests to the canonical repository ○ ○ Managers responsible for integrating pull requests ● Each student needs to email me their GitHub username and a link to their fork of the canonical repository 20
Advanced topic presentations Each advanced topic subteam will be required to give a ● presentation about their advanced topic 45 minute talk produced and given by all subteam members ● 15 minutes for dedicated questions ● Ensures that everyone has the freedom to explore an ● advanced topic of their choice, but will also learn about all of the advanced topics covered in the course Outline of each talk must be proposed and approved well in ● advance of the talk Specific due dates will appear on the class website ○ ● Should describe not only the topic in general, but also the application to your game in particular 21
Course schedule First week: ● Standard lecture ○ ● 2nd week: ○ Game proposals ● Next ~4 weeks: ○ Standard lectures Midterm ● Next ~1 week: ● Standard lectures ○ Remainder of the term: ● Advanced topic presentations ○ 22
Grading 5% Participation ● ● 5% Game pitch 25% Midterm exam ● ● 15% Management week 20% Advanced topic presentation ● ● 30% Final game 23
Video game design: World 1-1 24
Video game design: World 1-1 25
Video game design: World 1-1 26
Video game design: World 1-1 27
Video game design: World 1-1 28
Video game design: World 1-1 29
Video game design: World 1-1 30
Metroid 31
Metroid 32
Metroid 33
Consider the following two screenshots 34
Consider the following two enemies 35
Recommend
More recommend