2D Game Design Project 3
Let's work with tiled maps, animated
sprites, GUIs and behavior/pathing
Due Dec 18 at 11:59 pm (Last day of finals so I can't really take
much in the way of late submissions)
Summary: For this project you will choose a project from the list
below. All projects have a significant tiled map and animated sprite
component.
This Project:
For this project commit and push often! A
significant part of the credit will be assigned to seeing the changes of
your project over time. I will look at the commits and the
commit comments (so update you commit comments each time you commit and
push - and do that often)
For this project choose one of the
possible game types below and implement a game following
the requirements of that game. The
directions below are the Minimum requirements. Feel free to add any
embellishments that you want once you have the minimal functionality in
place.
Feel free to crank the jetbrains AI and any
local AIs like LM studio or ollama (but NOT cloud AIs like
chatgpt/gemini/copilot) as hard as you can just like in project 1
All games must feature:
- You must have a GUI window that must use EbitenUI to
build the UI
- the UI should use game images for the UI elements, not system native
components
- The UI needs to collect information specific to the game which will
affect the game.
- in all cases when the GUI collects a player or base name, display
that over or on the player avatar or the base
- A window that is at most 1000*1000 pixels large
- You must use a camera of some sort to view the entire game map
- At least 3 multilayer tiled maps.
- each map must be a minimum of 25x25 tiles and a minimum of 1280*2080
pixels.
- layers can include walls and floors
- maps should include at least 10 unique tile types (these can be
across multiple maps so 4 unique tiles on one, 5 tiles with two from
the first map on the second, and then 3 new ones on the third map is
fine.
- at least one type of tile should be a wall that cannot be traversed
by players or enemies.
- At least 8 animated sprites of some sort
- These 8 need to have at least 4 unique appearances
- can't just copy stuff around like rotating coins.
- At least 4 different sorts of entities that your players can interact
with (5 if there is no player avatar)
- Mouse or keyboard input as needed.
- at least 8 unique sounds associated with game events.
- keep the game entities on the map in reasonable ways
- E.g. in pac man you can only exit the level in a few locations and
you appear on the other side.
Possible games:
- 1) The 2d RPG
- your GUI should collect
- the player's name
- whether the player wants easy or hard mode
- how many enemies should be on the second map. (min of 2)
- You need to have several enemies on the maps
- your player needs to have some sort of statistics that they can
improve and which affect their interaction with enemies and the
world
- display your players name over the player as the player moves.
- players need to be able to attack the enemies.
- one of the animations should be an attack animation
- enemies will attack the player when the player gets within a
'short' distance of the enemy. (use a finite state machine for the
enemies this way)
- path the enemies toward the player using solarlune paths once
the player gets within that distance
- enemies should be defeated by the player attacking them
- enemies require less damage to defeat in easy mode.
- on the quest map (usually the second one) put as many enemies on
the map as selected by the player in the GUI
- if the enemy reduces the players health to zero, lose the game
- your tiled maps should include at least one with a relatively safe
area
- in the safe area there should be a 'friendly' who will talk with
the player
- provide a 'quest' which includes dialog with a friendly other
and a goal that can be accomplished on another map.
- There must be some way of fulfilling the quest on one of the other
two maps
- the enemies should drop good stuff when defeated.
- There should be several types of enemies with different stats.
- the player should be able to collect the good stuff
- eventually the player won't be able to carry any more good stuff
- some of the good stuff should improve the players statistics.
- provide a way to move from one map to another
- 2) The tower defense game eg: myth
defense or Bloons
TD 6
- Your GUI should collect
- the name of the player's base
- whether this is going to be in hard mode or easy mode
- the base cost of the default tower
- a sort of debug mode for me - and perhaps you
- Your player needs some health (displayed)
- enemies will spawn in at one side of the map.
- you need a base on the other side of the map
- draw the base name over the base
- when the enemies reach your base, they reduce player health.
- Your maps should contain a small number of 'wall tiles' but most of
the field should be traversable by the enemies
- You need to have a currency
- the player starts with a smallish amount of the currency
- you need to provide the player at least 4 types of defense 'towers'
- each tower type should work differently
- different damage
- all towers that do damage should do more damage in easy mode.
- different attack speed
- different other functionality
- towers should have a limited range to damage enemies.
- towers should each cost different amount
- the cheapest tower should cost whatever collected from the GUI
at the beginning of the program.
- the remaining should cost some multiple (possibly a floating
point multiple like 1.5) of that base/cheapest tower
- some towers should do damage
- one tower type should slow or stop enemies for a short time
- implement path finding using the solarlune paths for the enemies.
They have to go around the 'wall tiles' and the tower. When a new
tower is placed, rerun the path finding
- towers block enemies like walls
- when placing towers - choose one square in each row or column that
can't be built on (show this with a particular tile type. This
allows at least one space for the enemies to get through.
- When the player has defeated enough enemies, change the map to the
next map.
- if an enemy makes it to the base, lose the game.
- 3) Strategy Game eg: Battle
for Wesnoth or Warcraft
I
- Start with a GUI which will collect
- the name of the player's faction
- the value X which is the integer number of minutes between attack
waves of the enemy.
- easy mode or hard mode
- Make a real time or turn based strategy game.
- have three resources that can be collected on the map
- give the player a small number of starting units.
- allow the user to create buildings on the map which allow the player
to build additional unit types.
- have at least four types of units in total
- have at least four types of buildings.
- some buildings need to be built before at least one other
- either as a direct prerequisite, or the building can unlock
harvesting a resource that is required for the next building.
- have a way of telling your resource harvesting units to harvest
resources
- have a way for units to attack other units.
- have a way for units to attack and either destroy or occupy the base
of the enemy.
- For your three maps, offer the player their choice of three maps to
play on
- for this initial game, have an enemy base on the opposite side of
the map from the player with several starting units (more than the
player gets) and a couple of buildings already built
- the enemy gets the number of player units +2 on easy mode and the
number of player units *2 on hard mode.
- have the enemy controlled by a finite state machine with states
like
- collect resources (you can just do so rather than
displaying this on the map - but at a rate reasonable in
comparison to the player
- build units
- attack incoming player units
- attack player with existing units.
- have some terrain on the map (walls, rivers, trees whatever) that
cannot be traversed.
- when the player uses tells units to attack, use solar lune paths to
find a path from their current location to the desired attack
location.
- every X minutes (for a value of X that the user chooses with the
GUI) have the enemy path all of its units to your base. If they defeat
your base, you lose.
- 4) 2D action game (like a top down tank
Game) eg: https://www.youtube.com/watch?v=G20HGlDkyr8
- create a 2D action- style game
- Start with a GUI which will collect
- the name of the player's
- a selection for hard mode or easy mode
- the number of enemies (min 2)