Patch Quest pre-class video notes:
Things to consider when developing your own game;
programming,
art,
marketing,
user experience, and
music and sound design
Figure out what your mechanics are and how they will work together before diving into programming
simplicity is better than complexity
Must find a balance between fun, easy to learn, and hard to master
"A great game starts from a great prototype that's already fun to play"
A game must have a strong core idea, otherwise it won't work
these can be tried-and-true cores, such as shooting or platforming
Checklist:
simple gameplay core
unique twist
easy-to-explain hook
Even failure is experience
Patch Quest. (2020, September 5). How NOT to make an indie game [Video]. Youtube. https://www.youtube.com/watch?v=NnI_1DOYt2A&t=33s&ab_channel=PatchQuest
object-oriented programming is when scripts are simple and attached to objects (components). For instance, the wheels of a car have a script that talks to a separate script attached to the steering wheel, which also talks to the engine script.
it makes it easier to reuse code
monobehaviour is a Unity-specific element that allows scripts to be attached to objects within Unity. It can be removed and the code will still work, but it cannot be attached to Unity objects.
inheritance is when classes can pass on their structures. In other words, a class inherits behaviour from another.
public class Person : monobehaviour
public class Matt : Person
" : " represents inheritance. Matt inherits behaviour from the Person class, which inherits behaviour from monobehaviour. Because of this, Matt can also access monobehaviour. This makes it easier to code because the class is already pre-defined.
a public class is accessible to all; a private class is only accessible to that specific class; a protected class is only accessible to that specific class and those that inherit from it.
more complex games should use private classes the most, because it makes it far easier to find a problem
a virtual function is an optional variable. These can be overridden if change is needed.
an abstract function must be rewritten if it is to be changed. These would be specific to a particular minigame or class.
singletons are classes that will only have one active instance, such as main camera
try to minimize dependencies within code
to build a custom event system (Game Dev Guide, 2019):
create a static event class
add events based on game's logic e.g. open door on trigger enter
have relevant scripts listen for these events
have scripts dispatch these events
typically, games with huge maps do not load the whole thing all at once. There will be so-called 'loading zones' that trigger a new area to be loaded when the player gets within range. These can be disguised to fit into the game, such as in God of War. This is done with multiple scenes in Unity or Unreal Engine.
to keep components such as main camera and lighting, add them to a main scene with all of the consistent essentials and then never unload this scene.
All microgames inherit this structure, even if it may not have a specific timer variable.
Game Dev Guide. (2019, May 7). How To Build An Event System in Unity [Video]. Youtube. https://www.youtube.com/watch?v=gx0Lt4tCDE0
For next week:
Design soldier mini-game for the minimum viable product
Mid-project reflection