-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathproject_galaxyblast.html
More file actions
327 lines (237 loc) · 15.7 KB
/
project_galaxyblast.html
File metadata and controls
327 lines (237 loc) · 15.7 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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
<!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">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="keywords" content="Simon, Coenen, Portfolio, Video, Game, Programmer, Graphics, Code, C++, DAE, Howest">
<title>
Galaxy Blast
</title>
<meta name="description" content="Simon Coenen, Graphics Programmer">
<link rel="canonical" href="https://www.simoncoenen.com/project_galaxyblast">
<link rel="alternate" type="application/rss+xml" href=" feed.xml" />
<!-- Begin Jekyll SEO tag v2.8.0 -->
<meta name="generator" content="Jekyll v4.3.2" />
<meta property="og:title" content="Galaxy Blast" />
<meta property="og:locale" content="en_GB" />
<meta name="description" content="Challenges Working in a team of 5 Learning shaders in Unity Planning production Team communication Team Mathias Panneels (Artist) Jordy Hermie (Artist) Abassi Amirhassan (Artist) Mark Furman (Programmer) Simon Coenen (Programmer/Artist) Technology Used Unity3D Visual Studio Adobe Photoshop Autodesk 3ds max Build" />
<meta property="og:description" content="Challenges Working in a team of 5 Learning shaders in Unity Planning production Team communication Team Mathias Panneels (Artist) Jordy Hermie (Artist) Abassi Amirhassan (Artist) Mark Furman (Programmer) Simon Coenen (Programmer/Artist) Technology Used Unity3D Visual Studio Adobe Photoshop Autodesk 3ds max Build" />
<link rel="canonical" href="https://www.simoncoenen.com/project_galaxyblast" />
<meta property="og:url" content="https://www.simoncoenen.com/project_galaxyblast" />
<meta property="og:site_name" content="Simon Coenen" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2023-10-07T15:47:05+02:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Galaxy Blast" />
<meta name="twitter:site" content="@simon_coenen" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2023-10-07T15:47:05+02:00","datePublished":"2023-10-07T15:47:05+02:00","description":"Challenges Working in a team of 5 Learning shaders in Unity Planning production Team communication Team Mathias Panneels (Artist) Jordy Hermie (Artist) Abassi Amirhassan (Artist) Mark Furman (Programmer) Simon Coenen (Programmer/Artist) Technology Used Unity3D Visual Studio Adobe Photoshop Autodesk 3ds max Build","headline":"Galaxy Blast","mainEntityOfPage":{"@type":"WebPage","@id":"https://www.simoncoenen.com/project_galaxyblast"},"url":"https://www.simoncoenen.com/project_galaxyblast"}</script>
<!-- End Jekyll SEO tag -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.3/js/lightbox.min.js" integrity="sha512-k2GFCTbp9rQU412BStrcD/rlwv1PYec9SNrkbQlo6RZCf75l6KcC3UwDY8H5n5hl4v77IDtIPwOk9Dqjs/mMBQ==" crossorigin="anonymous"></script>
<script src="/js/main_head.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.3/css/lightbox.min.css" integrity="sha512-ZKX+BvQihRJPA8CROKBhDNvoc2aDMOdAlcm7TUQY+35XYtrd3yh95QOOhsPDQY9QnKE0Wqag9y38OIgEvb88cA==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
<link href="/css/main.css" rel="stylesheet">
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
</head>
<body>
<!-- Navigation -->
<nav id="navbar" class="navbar sticky-top navbar-expand-lg navbar-dark">
<a class="navbar-brand mb-0 h1" href="/">Simon Coenen<small>Graphics Programmer</small></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item" >
<a class="nav-link" href="/">Home</a>
</li>
<li class="nav-item" >
<a class="nav-link" href="/blog">Blog</a>
</li>
<li class="nav-item" >
<a class="nav-link" href="/about">About</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<a href="https://twitter.com/simon_coenen" target="_blank" class="nav-link">
<span style="display:inline"><span style="display:inline; padding-right: 5px" class="fab fa-twitter fa-lg"></span></span>
</a>
</li>
<li class="nav-item">
<a href="https://www.github.com/simco50" target="_blank" class="nav-link">
<span style="display:inline"><span style="display:inline; padding-right: 5px" class="fab fa-github fa-lg"></span></span>
</a>
</li>
<li class="nav-item">
<a href="https://www.linkedin.com/in/simon-coenen-906a58a3/" target="_blank" class="nav-link">
<span style="display:inline"><span style="display:inline; padding-right: 5px" class="fab fa-linkedin fa-lg"></span></span>
</a>
</li>
<li class="nav-item">
<a href="/downloads/SimonCoenen_Resume.pdf" target="_blank" class="nav-link">
<span style="display:inline"><span style="display:inline; padding-right: 5px" class="fas fa-paperclip fa-lg"></span></span>
</a>
</li>
<li class="nav-item" style="padding-left: 10px; padding-top: 3px;">
<div class="theme-switcher">
<input type="checkbox" id="theme-switch">
<span></span>
</div>
</li>
</ul>
</div>
</nav>
<div class="page-content">
<div class="page-gradient"></div>
<div class="container project-container">
<div class="embed-responsive embed-responsive-16by9 project-video">
<iframe src="https://player.vimeo.com/video/170231811?color=ff9933&title=0&byline=0&portrait=0" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</div>
<div class="row">
<div class="col-xl-6">
<h1 class="project-header">Galaxy Blast</h1>
<h4><p>A Unity3D Game</p>
</h4>
<a class="btn btn-sm" href="">Return</a>
</div>
<div class="col-xl-6 project-info">
<p class="text-justify project-description">
<p>Together with another programmer and 3 artists, I created Galaxy Blast, a game inspired by Descent. It uses the six degrees of freedom principle to move around the player. The most important things I worked on are the player mechanics, the online leaderboards, UI programming, lighting, writing shaders, floating combat text and the final boss battle.</p>
</p>
</div>
</div>
<div class="project-info">
<div class="row">
<div class="col-lg-4">
<h2 id="challenges">Challenges</h2>
<ul>
<li>Working in a team of 5</li>
<li>Learning shaders in Unity</li>
<li>Planning production</li>
<li>Team communication</li>
</ul>
</div>
<div class="col-lg-4">
<h2 id="team">Team</h2>
<ul>
<li>Mathias Panneels (Artist)</li>
<li><a href="https://www.artstation.com/artist/jordyhermie">Jordy Hermie</a> (Artist)</li>
<li>Abassi Amirhassan (Artist)</li>
<li>Mark Furman (Programmer)</li>
<li><a href="http://www.simoncoenen.com">Simon Coenen</a> (Programmer/Artist)</li>
</ul>
</div>
<div class="col-lg-4">
<h2 id="technology-used">Technology Used</h2>
<ul>
<li>Unity3D</li>
<li>Visual Studio</li>
<li>Adobe Photoshop</li>
<li>Autodesk 3ds max</li>
</ul>
</div>
</div>
<a href="http://www.simoncoenen.com/Downloads/galaxyblast.rar" class="btn btn-success sharp list-group-item list-group-item-success" target="_blank">Build</a>
</div>
<h1 id="project-details">Project Details</h1>
<p>For this project I worked together with another programmer and three 3D artists. The idea was to make a six degrees of freedom shooter situated in space. I worked on many different things and I picked a few out to explain a little below.</p>
<h2 id="prototyping">Prototyping</h2>
<div class="row">
<div class="col-lg-6">
<div class="embed-responsive embed-responsive-16by9">
<iframe src="https://player.vimeo.com/video/184830346?color=ff9933&title=0&byline=0&portrait=0" width="500" height="281" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
</div>
</div>
<div class="col-lg-6">
Starting off our project, we began prototyping different ideas. The idea we ended up with, wasn't our original idea at all. In the end, we had five completely different prototypes and choose to pick this one because it looked like the most promising one. The prototype itself was really simple and was just meant to test if the movement would be fun to play with and the combat would be challenging.
The main problem that remained was keeping the orientation of the player. This problem kind of resolved itself by adding more graphics with subtle markers and lines to guide the player to his objectives.
</div>
</div>
<h2 id="the-boss-battle">The Boss battle</h2>
<div class="row">
<div class="col-lg-6">
For the boss battle we wanted some kind of fight that had different phases so that the player needed to adapt its playstyle in every different phase. For this I wrote a very compact version of a behavior tree. The boss battle consisted out of three different phases: The lasers, the scanner sweep and the bursts of bolts in a sphere. The battle and all its behavior are all contained in a single class.
Using a behavior tree has many advantages and the biggest advantage in our case was that it was very easy to individually code and tweak every phase. Even adding more phases would be trivial with this system.
</div>
<div class="col-lg-6">
<img class="img-fluid" src="/images/projects/galaxyblast/other/behaviourtree.jpg" />
</div>
</div>
<h2 id="missionobjective-system">Mission/Objective system</h2>
<div class="row">
<div class="col-lg-6">
<img class="img-fluid" src="/images/projects/galaxyblast/other/objective_system.jpg" />
</div>
<div class="col-lg-6">
As I mentioned, guiding the player during the prototype phase was still quite a big problem. Guidance and player feedback is extremely important and that's why I came up with a system to visually help the player guide his way through the levels.
The system consisted out of two parts: an objective panel that the player could open to see what exactly he has to do and a marker/waypoint system that puts a marker in the direction the player has to go.
Every objective has a place in the objective panel together with its set of markers that the player has to go to (or destroy). The markers have two different states: If the objective is visible for the player, meaning it is in front of the player, the marker should be put on top of the objective (2D image on the hud). If the objective is out of the view space, the marker turns in to an arrow that is on the side of the screen and directs the player in that direction.
</div>
</div>
<h2 id="modular-workflow-and-lighting">Modular workflow and lighting</h2>
<div class="row">
<div class="col-lg-6">
As in every game, lighting plays a big role in the ending result of the game, especially in ours. The idea was to use a lot of glow in the game so eventually, the level would be illuminated by the glow itself because of global illumination. That didn't seem as simple as it sounded. I did a lot of research in global illumination and lighting in Unity.
The lighting had to be baked as much as possible because dynamic lights are extremely performance heavy. In the end, almost everything is baked and positively influenced the performance of the game.
</div>
<div class="col-lg-6">
<img class="img-fluid" src="/images/projects/galaxyblast/other/lighting.jpg" />
</div>
</div>
<div class="project-images">
<h3 class="page-header">Images</h3>
<p>Click on an image to enlarge</p>
<div class="row">
<div class="col-sm-4">
<a href="/images/projects/galaxyblast/lg/lg_01.jpg" data-lightbox="galaxyblast">
<img src="/images/projects/galaxyblast/thumb/thumb_01.jpg" alt="">
</a>
</div>
<div class="col-sm-4">
<a href="/images/projects/galaxyblast/lg/lg_02.jpg" data-lightbox="galaxyblast">
<img src="/images/projects/galaxyblast/thumb/thumb_02.jpg" alt="">
</a>
</div>
<div class="col-sm-4">
<a href="/images/projects/galaxyblast/lg/lg_03.jpg" data-lightbox="galaxyblast">
<img src="/images/projects/galaxyblast/thumb/thumb_03.jpg" alt="">
</a>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<a href="/images/projects/galaxyblast/lg/lg_04.jpg" data-lightbox="galaxyblast">
<img src="/images/projects/galaxyblast/thumb/thumb_04.jpg" alt="">
</a>
</div>
<div class="col-sm-4">
<a href="/images/projects/galaxyblast/lg/lg_05.jpg" data-lightbox="galaxyblast">
<img src="/images/projects/galaxyblast/thumb/thumb_05.jpg" alt="">
</a>
</div>
<div class="col-sm-4">
<a href="/images/projects/galaxyblast/lg/lg_06.jpg" data-lightbox="galaxyblast">
<img src="/images/projects/galaxyblast/thumb/thumb_06.jpg" alt="">
</a>
</div>
</div>
</div>
</div>
<br>
<br>
</div>
<!-- /.container -->
<!--Footer-->
<footer>
<script src="/js/main.js"></script>
</footer>
</body>
</html>