<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Game_Engines_2021W_Lecture_2</id>
	<title>Game Engines 2021W Lecture 2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Game_Engines_2021W_Lecture_2"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Game_Engines_2021W_Lecture_2&amp;action=history"/>
	<updated>2026-05-13T01:56:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Game_Engines_2021W_Lecture_2&amp;diff=22771&amp;oldid=prev</id>
		<title>Soma at 17:46, 14 January 2021</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Game_Engines_2021W_Lecture_2&amp;diff=22771&amp;oldid=prev"/>
		<updated>2021-01-14T17:46:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:46, 14 January 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Resources==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;You should go through the Godot engine step-by-step or equivalent, as it gives a good introduction to Godot.  The articles from Will Nation&#039;s are optional but are good if you want to better understand how Unity and Unreal compare to Godot.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://docs.godotengine.org/en/stable/getting_started/step_by_step/ Godot Engine step-by-step], read &amp;amp; do the exercises through &quot;Your First Game&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://willnationsdev.wordpress.com/2018/04/07/godots-node-system-part-3-engine-comparisons/ Godot&#039;s Node System, Part 3: Engine Comparisons].  Also look at [https://willnationsdev.wordpress.com/2018/04/05/godots-node-system-a-paradigm-overview/ Part 1] and [https://willnationsdev.wordpress.com/2018/04/06/godots-node-system-part-2-framework-concepts/ Part 2].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Notes==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Notes==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Game_Engines_2021W_Lecture_2&amp;diff=22770&amp;oldid=prev</id>
		<title>Soma: Created page with &quot;==Notes==  &lt;pre&gt; Lecture 2 ---------  * set timelines, guidelines, due dates * getting started in godot * designing a game engine  30% journal 10% participation 60% project  -...&quot;</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Game_Engines_2021W_Lecture_2&amp;diff=22770&amp;oldid=prev"/>
		<updated>2021-01-14T17:39:06Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Notes==  &amp;lt;pre&amp;gt; Lecture 2 ---------  * set timelines, guidelines, due dates * getting started in godot * designing a game engine  30% journal 10% participation 60% project  -...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Notes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lecture 2&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
* set timelines, guidelines, due dates&lt;br /&gt;
* getting started in godot&lt;br /&gt;
* designing a game engine&lt;br /&gt;
&lt;br /&gt;
30% journal&lt;br /&gt;
10% participation&lt;br /&gt;
60% project&lt;br /&gt;
 - proposal&lt;br /&gt;
 - progress report&lt;br /&gt;
 - presentation&lt;br /&gt;
 - report&lt;br /&gt;
&lt;br /&gt;
Report, due at end of exam period&lt;br /&gt;
Presentations, last week of classes, Apr 6 &amp;amp; 8&lt;br /&gt;
 - 5 min presentations plus questions&lt;br /&gt;
   - please use slides&lt;br /&gt;
   - no demos, no time&lt;br /&gt;
   - maybe short video clips?&lt;br /&gt;
&lt;br /&gt;
Progress report due early/mid March&lt;br /&gt;
 - March 8/15&lt;br /&gt;
 - PDF&lt;br /&gt;
&lt;br /&gt;
Proposal February 5th&lt;br /&gt;
 - PDF format&lt;br /&gt;
 &lt;br /&gt;
Build something in or extend Godot&lt;br /&gt;
 - flexible&lt;br /&gt;
 - non-trivial&lt;br /&gt;
 - be interesting to you&lt;br /&gt;
&lt;br /&gt;
Journal&lt;br /&gt;
 - weekly updates on what you&amp;#039;ve been doing design/implentation wise&lt;br /&gt;
 - should have technical problems you are encountering&lt;br /&gt;
 - Due on Mondays 11:55 PM (midnight is always ambiguous)&lt;br /&gt;
   - I&amp;#039;ll create a bunch of submission due dates in cuLearn&lt;br /&gt;
 - graded on participation/attempt&lt;br /&gt;
 - about a page, whatever that means to you&lt;br /&gt;
   - can be long, but at least a few hundred words&lt;br /&gt;
 - until the midterm report&lt;br /&gt;
 - first one due on this Monday&lt;br /&gt;
   - can be very simple&lt;br /&gt;
 - plain text or PDF please&lt;br /&gt;
   - markdown is great&lt;br /&gt;
 - can certainly include pictures, if so PDF please&lt;br /&gt;
 - I prefer sentences to bullet points, but you can use some bullet points&lt;br /&gt;
   - just make sure it is easy to understand&lt;br /&gt;
 - this is the place to do rough drafts&lt;br /&gt;
   - fine to grab content from journal for proposal/progress report/final report&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Project specifications&lt;br /&gt;
 - do something interesting, original&lt;br /&gt;
 - using Godot&lt;br /&gt;
 - assets/code should be yours, authorized, or CC/open source&lt;br /&gt;
   - credit should be given&lt;br /&gt;
 - either a game, an app, or an engine extension&lt;br /&gt;
&lt;br /&gt;
A simple game with a technical or design challenge is fine&lt;br /&gt;
 - don&amp;#039;t &amp;quot;fluff it up&amp;quot;&lt;br /&gt;
 - small and interesting is better than large and boring&lt;br /&gt;
&lt;br /&gt;
Grading scheme for final report&lt;br /&gt;
30% report quality&lt;br /&gt;
    writing/clarity&lt;br /&gt;
    organization&lt;br /&gt;
10% references&lt;br /&gt;
60% technical quality &amp;amp; creativity&lt;br /&gt;
    - split will depend on what you did&lt;br /&gt;
&lt;br /&gt;
The hard part of this is deciding what to do&lt;br /&gt;
 - but that is part of the assignment!&lt;br /&gt;
 - and I will provide lots of feedback and guidance where appropriate&lt;br /&gt;
&lt;br /&gt;
Understanding Godot&lt;br /&gt;
 - download from godotengine.org&lt;br /&gt;
   - but version from Steam, your Linux distribution should be fine for now&lt;br /&gt;
 - games organized into scenes&lt;br /&gt;
 - scenes made of nodes&lt;br /&gt;
   - nodes can be almost anything&lt;br /&gt;
&lt;br /&gt;
To learn about Godot, start here:&lt;br /&gt;
https://docs.godotengine.org/en/stable/getting_started/step_by_step/intro_to_the_editor_interface.html&lt;br /&gt;
 - read about the editor, scenes &amp;amp; nodes, instancing, scripting, signals&lt;br /&gt;
   your first game&lt;br /&gt;
 - after this, you&amp;#039;ll have the basics&lt;br /&gt;
&lt;br /&gt;
Go download Godot, play with it, report what you did by Monday&lt;br /&gt;
 - in class on Tuesday we&amp;#039;ll answer your questions&lt;br /&gt;
 - and we&amp;#039;ll start/continue with figuring out potential projects&lt;br /&gt;
&lt;br /&gt;
Visual Studio Code is for browsing/changing the code of Godot itself&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Desiging a game engine&lt;br /&gt;
&lt;br /&gt;
  Game/App&lt;br /&gt;
  *Game Engine*&lt;br /&gt;
  OS&lt;br /&gt;
  Hardware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The perfect game engine would make it very easy to write the game you want.&lt;br /&gt;
&lt;br /&gt;
Earlier, game engines and games were co-designed and developed&lt;br /&gt;
 - think Doom&lt;br /&gt;
 - you&amp;#039;d come up with a design, make a basic engine and level editor,&lt;br /&gt;
   then build your game, enhancing the engine to do things as&lt;br /&gt;
   the game required&lt;br /&gt;
&lt;br /&gt;
Game engines have become &amp;quot;good enough&amp;quot; that most developers choose to use an existing engine rather than start from scratch&lt;br /&gt;
 - but non-trivial games almost always extend the engine in some way&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ultimately, the engine has these responsibilities&lt;br /&gt;
 - get user input&lt;br /&gt;
 - display game state&lt;br /&gt;
 - update game state based on user input, game progression&lt;br /&gt;
 - if multiplayer, have to get input from all players, coordinate&lt;br /&gt;
&lt;br /&gt;
At this level of description, this isn&amp;#039;t that different from any application&lt;br /&gt;
&lt;br /&gt;
Classic design pattern is Model-View-Controller, what I discuss above is really just that&lt;br /&gt;
&lt;br /&gt;
But games are different&lt;br /&gt;
&lt;br /&gt;
What&amp;#039;s the difference between a Word Processor and a Game?&lt;br /&gt;
 - performance matters?&lt;br /&gt;
 - game state can change without user interaction (sometimes)&lt;br /&gt;
 - wildly different?&lt;br /&gt;
&lt;br /&gt;
When you make a game, what makes up the game state can be almost anything&lt;br /&gt;
 - and it may need to be updated in arbitrary ways at arbitrary times&lt;br /&gt;
 - suduko, solitaire, tetris, FPS, simulation&lt;br /&gt;
 - can turn almost anything into a game&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This all means that game engines potentially need to support arbitrary abstractions&lt;br /&gt;
 - we need abstractions to describe how a game works, looks, &amp;amp; sounds&lt;br /&gt;
&lt;br /&gt;
The painful part of using game engines is matching the natural abstractions of your game to the facilities the engine provides&lt;br /&gt;
 - the closer your game is to the abstractions the engine provides,&lt;br /&gt;
   the more likely your game is boring&lt;br /&gt;
&lt;br /&gt;
Games are distinguished by how they work more than how they look&lt;br /&gt;
 - and how they work is defined by interactions between abstractions&lt;br /&gt;
&lt;br /&gt;
So how can a game engine best bridge this gap?&lt;br /&gt;
 - by being extensible!&lt;br /&gt;
&lt;br /&gt;
One of the distinguishing characteristics of Godot is its abstractions&lt;br /&gt;
 - Scenes and Nodes, that&amp;#039;s it&lt;br /&gt;
&lt;br /&gt;
Godot seems to be much better suited to arbitrary application development than other engines&lt;br /&gt;
 - but this is a debatable point&lt;br /&gt;
&lt;br /&gt;
A good game engine&lt;br /&gt;
 - makes standard things easy&lt;br /&gt;
 - makes non-standard things possible&lt;br /&gt;
&lt;br /&gt;
Extensibility&lt;br /&gt;
 - how can I encode my ideas in the engine?&lt;br /&gt;
 - two basic ways&lt;br /&gt;
   - scripting&lt;br /&gt;
   - extensions&lt;br /&gt;
&lt;br /&gt;
Scripting is for adding functionality to existing abstractions&lt;br /&gt;
 - changing how a player interacts when they run into a wall&lt;br /&gt;
   - maybe it should trigger a trap!&lt;br /&gt;
&lt;br /&gt;
Extensions are for adding/changing abstractions&lt;br /&gt;
 - adding a level editor to the game engine editor&lt;br /&gt;
    - abstraction is the levels&lt;br /&gt;
    - basically, provides custom input method with validation&lt;br /&gt;
&lt;br /&gt;
Shaders I would say is a kind of scripting&lt;br /&gt;
 - fitting inside of an existing box&lt;br /&gt;
&lt;br /&gt;
This split is common in CS&lt;br /&gt;
 - think web browsers&lt;br /&gt;
 - also have scripting, extensions&lt;br /&gt;
 - comes up whenever you make a platform for creating applications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
</feed>