-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhookfoot.html
More file actions
183 lines (177 loc) · 9.2 KB
/
hookfoot.html
File metadata and controls
183 lines (177 loc) · 9.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!--CSS Styles -->
<link rel="stylesheet" href="css/styles.css" />
<!-- Favicons -->
<!--<link
rel="apple-touch-icon"
sizes="180x180"
href="assets/icons/apple-touch-icon.png"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="assets/icons/favicon-32x32.png"
/>->>
<!-- Animate CSS CDN -->
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"
/>
<title>Captain Hookfoot</title>
</head>
<body class="gamepage">
<nav>
<ul class="navigation">
<li><a href="index.html">Home</a></li>
<div class="dropdown">
<button class="dropbtn nav-link"><a href="index.html#projects">Stuff I've Made</a>
<i class="fa fa-caret-down"></i>
</button>
<div class="dropdown-content">
<a href="hookfoot.html" class="nav-link">Captain Hookfoot</a>
<a href="visvi.html" class="nav-link">Visvi</a>
<a href="wormgame.html" class="nav-link">Funny Worm Game</a>
<a href="bearswithguns.html" class="nav-link">Bears with Guns</a>
<a href="eden.html" class="nav-link">EDEN</a>
<a href="thrillertheater.html" class="nav-link">Thriller Theater</a>
<a href="shadow.html" class="nav-link">Shadow Mesh Generator</a>
<a href="graphics.html" class="nav-link">Graphics Programming</a>
<a href="wilderness.html" class="nav-link">Wilderness Supervision</a>
<a href="bestbefore.html" class="nav-link">Best Before 90 Seconds</a>
<a href="lucifur.html" class="nav-link">Lucifur</a>
</div>
</div>
<!--<li><a href="index#contact">Contact</a></li>-->
<li><a href="Demetrius Nekos Resume.pdf">Resume</a></li>
</ul>
<button class="burger-menu" id="burger-menu">
<ion-icon class="bars" name="menu-outline"></ion-icon>
</button>
</nav>
<main>
<div class="wrapper">
<div class="left">
<div class="info">
<h1>Captain Hookfoot</h1>
<p>Captain Hookfoot is a point and click adventure game created for my Game Studio 1 class in the spring of 2021. It was made in six weeks with a team of seven people. It is inspired by games such as Pajama Sam and the Monkey Island series, as well as films like the Goonies. It is a verticle slice of a potentially bigger game, with each puzle showing a different potential mechanic, such as interactable screens, dialogue, and item combining. It is a very narrative heavy game, with a colorful cast of characters to meet and interact with.</p>
</div>
<div class="info">
<h2>Features/Things I built:</h2>
<ul class="work-done">
<li>System architecture</li>
<li>Object interactions and controls</li>
<li>Database integration with <a href="https://sqlitebrowser.org/">Sqlite Browser</a></li>
<li>Designer friendly implementation tools</li>
<li>Narrative systems and textboxes</li>
<li>UI implementation</li>
</ul>
</div>
</div>
<div class="right">
<p class="itch">
<iframe width="560" height="315" src="https://www.youtube.com/embed/3KYPPDnVcz4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</p>
<iframe frameborder="0" src="https://itch.io/embed/1028806" width="552" height="167"><a href="https://scyfer1.itch.io/captain-hookfoot">Captain Hookfoot by scyfer1, Dnekos, Pogo</a></iframe>
<div class="github-card" data-github="Dnekos/Captain-Hookfoot" data-width="400" data-height="" data-theme="default"></div>
<script src="//cdn.jsdelivr.net/github-cards/latest/widget.js"></script>
</div>
</div>
<div class="wrapper">
<div class="left">
<div class="info">
<h2>Architecture Overview</h1>
<p>Early on in development I created an outline the basic class strucutre that the game, and importantly the interactible objects would take. Firstly there is the Player, which persists through scenes, and holds a log the UID of any Clickable objects's that have been interacted with. It also is the parent of the persistent UI, and thus is the main interface to UI functions, like adding inventory items. Other classes can access those functions through a Player singleton, which also serves as letting us add other player objects to test in different scenes without having them interact with each other.</p>
</div>
</div>
<div class="right">
<img src="img/arch_hookfoot.png">
<center>A piece of documentation i made early on, showing how classes would be divided.</center>
</div>
</div>
<div class="wrapper">
<div class="left">
<div class="info">
<h2>Clickable Nodes and Databaser</h1>
<p>The base class for each of the objects the player interacts with is the Clickable node. It inherits functions from the IPointer handlers to allow for clicking, as well as our Databaser. The Databaser class was made to hold all of the code involved with interacting with .db files, which are used to store all of the dialogue (123 dialogue lines and 61 interaction based lines). The Clickable node also has virtual functions for both right and left clicking, called LookAt and Interact, with children of Clickable overwrite.</p>
</div>
</div>
<div class="right">
<img src="img/db_hookfoot.PNG">
<center>Two dialogue sequences, as seen in the database file.</center>
</div>
</div>
<div class="wrapper">
<div class="left">
<div class="info">
<h2>Interactable Nodes and the EventManager</h1>
<p>Interactable Nodes were hard to develop. The goal of them is to have a number of different possible states, and be able to have different goals to advance said states, at which point the state change affects the environment. To ease the puzzle implementation process, I utilized Unity's PropertyDrawer function to create a custom Inspector interface and allow for easy setting of states and state changes. The state changes were handled by invoking a Unity Event, like a button would. To simplify Interactable's code, the functions invoked lived in various StateObserver classes in the EventManager.</p>
</div>
</div>
<div class="right">
<img src="img/interactable_hookfoot.png">
<center>The Interactable Node component as seen on the Inspector.</center>
</div>
</div>
<div class="wrapper">
<div class="left">
<div class="info">
<h2>Pickup and InventorySlot Nodes</h1>
<p>Pickup nodes were pretty easy to develop, as most of the inventory adding is handled within the Player and the UI scripts. Pickup Nodes primarily facilitate the beginning of the process. When an item is picked up, an InventorySlot is created, which handles setting and using items. Their Interact functions has two parts, setting the active item if none is active, and combining items if one is already active. In the game, this is seen in the bucket mixing puzzle, as the player pours multiple liquids into a bucket to create something acidic enough to melt a cage.</p>
</div>
</div>
<div class="right">
<img src="img/item_hookfoot.gif">
<center>A puzzle that requires you to combine clues.</center>
</div>
</div>
<div class="wrapper">
<div class="left">
<div class="info">
<h2>Location and Display Nodes</h1>
<p>These are fairly self explanatory and simple, but significantly different enough in function to warrant their own subclasses. Location nodes simply call transitional functions to move over to the inputted scene. Display Nodes are similar, but connect the player to a different part of the same scene, by changing the active camera. These are used less for scene transitions and more for giving the player more ways to interact or examine objects. In our verticle slice, we use it to examine the combination lock on a desk, allowing the player to zoom in and interact with the lock mechanisms.</p>
</div>
</div>
<div class="right">
<img src="img/display_hookfoot.gif">
<center>A puzzle utilizing the Display Node to show a combination lock.</center>
</div>
</div>
</main>
<!-- Scroll to top -->
<i class="scroll-up" id="scroll-up">
<img
src="https://img.icons8.com/color/480/000000/circled-up--v3.png"
class="socicon up-arrow"
alt="scroll-up"
/></i>
<!-- Footer section -->
<footer>
<p class="copy">© Copyright 2021</p>
<p>You can find me at:</p>
<ul class="social-links">
<li><a href="https://github.com/Dnekos">Github</a></li>
<li><a href="https://dnekos.itch.io/">Itch.io</a></li>
<li><a href="https://www.linkedin.com/in/demetrius-nekos/">LinkedIn</a></li>
</ul>
<p>Or, you can <a href="mailto:demetrius.nekos@mymail.champlain.edu">send me an email</a>.</p>
</p>
</footer>
<!-- Website scripts -->
<script src="js/app.js"></script>
<!-- Ion icons scripts -->
<script
type="module"
src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"
></script>
<script
nomodule
src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"
></script>
</body>
</html>