Releases: SE-TINF22B6/Underwatch
v1.0.1-release
What's Changed
- feat: version angepasst by @JAWolfs in #268
- fix: test an letzten commit angepasst by @JAWolfs in #269
- sniper + shotgun by @BenjaminB109 in #271
Full Changelog: v1.0.0-release...v1.0.1-release
v1.0.0-rc.1
Presentation Release
Hopefully everything works 🤞🏾
What's Changed
- feat: gameplay improvements by @LPkkjHD in #254
- added damage numbers by @dolerich-hirnfiedler in #255
Full Changelog: v0.0.5-alpha...v1.0.0-release
Semester 4 Week 7
Hello and welcome to this weeks development progress blog for our little game Underwatch
🎮
Code Refactoring
This week we decided to do a humongous refactoring of our code base, which happened to be long overdue and also this weeks task. Taking a look at the core problem we had to work around all this time:
In order for the path finding to work we rasterize the world into a 32x32 Grid and represent each of the cells as a single point in an array only containing information about whether or not this cell shall be considered walkable or not.
We had to use arcane combinations of -1
and +1
to add connections to the neighboring cells.
// check if wall is above and below
if (getNode(x, y + 1).type == FlatTiledNode.TILE_WALL
&& getNode(x, y - 1).type == FlatTiledNode.TILE_WALL) {
- // W
- addConnection(n, -1, 0);
- // E
- addConnection(n, 1, 0);
+ addConnection(n, Direction.W, Direction.E);
continue;
}
// check if wall is left and right
if (getNode(x + 1, y).type == FlatTiledNode.TILE_WALL
&& getNode(x - 1, y).type == FlatTiledNode.TILE_WALL) {
- // S
- addConnection(n, 0, -1);
- // N
- addConnection(n, 0, 1);
+ addConnection(n, Direction.N, Direction.S);
continue;
}
// check if wall is above
if (getNode(x, y + 1).type == FlatTiledNode.TILE_WALL) {
- // W
- addConnection(n, -1, 0);
- // S
- addConnection(n, 0, -1);
- // E
- addConnection(n, 1, 0);
- // N
- addConnection(n, 0, 1);
- // SE
- addConnection(n, 1, -1);
- // SW
- addConnection(n, -1, -1);
+ addConnection(n, Direction.N, Direction.E, Direction.S, Direction.W, Direction.SE, Direction.SW);
continue;
}
}
}
private void addConnection(FlatTiledNode n, int xOffset, int yOffset) {
FlatTiledNode target = getNode(n.x + xOffset, n.y + yOffset);
- if (target.type != FlatTiledNode.TILE_WALL) n.getConnections().add(new FlatTiledConnection(this, n, target));
+ if (target.type != FlatTiledNode.TILE_WALL)
+ n.getConnections().add(new FlatTiledConnection(this, n, target));
+ }
}
This is very prone to errors made by the developer, so we decided to refactor it with the use of a private enum as well as allowing a flexible amount or arguments with the varargs
feature of Java.
+ private enum Direction {
+ N, E, S, W, NE, NW, SE, SW
+ }
+
+ private void addConnection(FlatTiledNode n, Direction... directions) // throws Exception
+ {
+ // if (directions.length > 8 || directions.length < 0) {
+ // throw new Exception("Directions are fucked up");
+ // }
+ for (Direction direction : directions) {
+ switch (direction) {
+ case N:
+ addConnection(n, 0, 1);
+ break;
+ case E:
+ addConnection(n, 1, 0);
+ break;
+ case S:
+ addConnection(n, 0, -1);
+ break;
+ case W:
+ addConnection(n, -1, 0);
+ break;
+ case NE:
+ addConnection(n, 1, 1);
+ break;
+ case NW:
+ addConnection(n, -1, 1);
+ break;
+ case SE:
+ addConnection(n, 1, -1);
+ break;
+ case SW:
+ addConnection(n, -1, -1);
+ break;
+ default:
+ break;
+ }
+ }
+ }
We took inspiration from the Book Clean Code, Chapter 3.1, "Funktionen sollten klein sein[...]"
to make this refactoring and are quite happy with the results it yielded.
Progress on the Game 🎮
- We added new collectables such as HP potions as well as speed potions
- The came can now be won by collecting the holy grail
- New sounds, weapons and assets
- Some initial efforts on balancing the weapons and enemies
- A crucial bug responsible for crashing the game after a few seconds of gameplay has been squashed
Bugfixes on the Webpage 🐛
- Added an
apply filter
button, so we don't DDOS our backend server
What's Changed
- hitbox für tränke by @BenjaminB109 in #235
- Jeremias/month campion by @JAWolfs in #237
- Benjamin/tranke by @LPkkjHD in #240
- feat: added apply filter button for not ddos the server 🛜 by @JAWolfs in #239
- feat: game balancing by @LPkkjHD in #238
- Movement by @dolerich-hirnfiedler in #241
- feat: bugfixing by @LPkkjHD in #243
- Refactor jf by @dolerich-hirnfiedler in #244
Full Changelog: v0.0.4-alpha...v0.0.5-alpha
Semester 4 Week 6
Hello and welcome to todays update on the progress of our game "Underwatch".
Assignment
This weeks task was to choose three metrics which we can use to measure the quality of our written code. Since we are working on a game in Java it makes a lot of sense to just apply the metrics we can find for object orientation to it.
We used the handy tool ck to automatically generate all relevant statistics based on the project code and picked the metrics Lines of Code
, Depth Inheritance Tree
and Response for Class
as we think those can be representative of the quality in our code base.
Depth Inheritance Tree
is a metric which can tell us something about the code reuse within our project. With a higher count being more prone to bugs as well as more logic being reused. According to the tools output we have this metric laying between 1 and 4 which we consider as quite optimal.Response for Class
counts the responses a class can generate. Also indexing referenced classes this metric can skyrocket quite quickly. According to research a value between 0-50 is most optimal here. Our calculatedrfc
lays between 0-42 (with one outlier at 59). This tells us that we're mostly doing good, but should consider refactoring the outlier class.Lines of Code
per class tell us something about the complexity of our classes. If this value get's too high we have to consider that we might have created a god class, which is too mighty and often leads to many bugs down the line. According to ck's output we lay between 0-200 which we interpret as being pretty good, since most of the time boilerplate code, such as getters and setters are already eating up a majority of the code lines resulting in the implemented logic being very concise.
We hope you found this rundown of our chosen metrics interesting.
Progress on the Game
In the past week we added new interaction elements, namely Weapon Boxes, Ammo Boxes, Health Boxes as well as a Holy Grail which will serve as the games winning end.
Additionally pathfinding has received an update, resulting in enemies now walking around obstacles successfully.
We created a Head Up Display, which will display necessary stats of the game run for the player.
Enemies now come in multiple versions, some goblins for the outside world as well as some skeletons for the dungeon.
The weapon inventory now carries over to the next level and the web page has been updated to show the lore of the game.
As per usual. Thank you for reading.
~ Underwatch Team
What's Changed
- neue map mit startpunkten auf fast allen maps by @BenjaminB109 in #219
- Jeremias/law by @JAWolfs in #221
- feat: Enemy Types by @LPkkjHD in #220
- feat: add additional hit box to player by @LPkkjHD in #222
- feat: carry over Inventory to next level by @LPkkjHD in #223
- feat: convert World to Singleton by @LPkkjHD in #226
- feat: Interaction Objects and HUD by @LPkkjHD in #233
Full Changelog: v0.0.3-alpha...v0.0.4-alpha
v0.0.3-alpha
Hello and Welcome to the Patch Notes for v0.0.3-alpha of Underwatch
We worked hard to bring you this release which features many improvements on the web page, as well as to the core mechanics of the gameplay and the graphic style.
Features
- Complete overhaul of the enemies, there are now multiple types, which can get out their weapon and shoot at you
- Improved lighting system, allowing us to create outdoor maps as well as some dungeon maps which look arguably more spooky
- Weapon handling has been improved with ammo, different bullet types and weapon switching
- Teleporters have been added
- Interaction Objects (Loot Boxes) have been added
Known Bugs
🏗️ The game crashes when you try to enter the fourth level (there is no such level yet)
~ The Underwatch Team
What's Changed
- feat: allow setting of keybindings as well as change the volume by @LPkkjHD in #143
- feat: revised drop-down naviagtion menu color by @JAWolfs in #148
- Jeremias/scoreboard attributes by @JAWolfs in #149
- Add files via upload by @BenjaminB109 in #147
- feat: enhanced readme by @LPkkjHD in #150
- Update README.md by @BenjaminB109 in #151
- Jeremias/champions by @JAWolfs in #152
- chore: SRS overhaul by @LPkkjHD in #156
- Update sad.md by @dolerich-hirnfiedler in #158
- Jeremias/refactor scoreboard by @JAWolfs in #159
- feat: weapons by @LPkkjHD in #163
- Jeremias/download page by @JAWolfs in #174
- feat: player movement animations and directions by @LPkkjHD in #187
- feat: filter with case-insensitive like, add tests by @LPkkjHD in #189
- feat: add running instructions to game README by @LPkkjHD in #188
- feat: Weapon shoots Bullet by @LPkkjHD in #185
- feat: muliple weapons and weapon pickup by @LPkkjHD in #194
- Pathfinding by @dolerich-hirnfiedler in #195
- Jf/tests by @dolerich-hirnfiedler in #198
- Jeremias/scoreboard pages by @JAWolfs in #197
- benni/sfx by @BenjaminB109 in #199
- feat: changed discription by @JAWolfs in #200
- feat: revised notFond page and adjusted the design by @JAWolfs in #202
- feat: added more discriptino to download page by @JAWolfs in #203
- fixx: fixed viedeoBackground by @JAWolfs in #205
- guide: test-coverage by @dolerich-hirnfiedler in #206
- feat: start working on Test by @LPkkjHD in #204
- Jeremias/wiki data by @JAWolfs in #209
- Jeremias/website tests by @JAWolfs in #213
- feat: enhance enemy by @LPkkjHD in #214
Full Changelog: v0.0.2-alpha...v0.0.3-alpha
v0.0.2-alpha
Hello and Welcome to the Patch Notes for v0.0.2-alpha of Underwatch
We worked hard to bring you this release which features many improvements in UI/UX as well as some changes to the main gameplay mechanic.
Features
- customizable input settings
- adjustable volume
- replace some fillers with content (most notably the main menu)
- new approach how we want to design maps as well as the gameplay in general
- new animations for walking into directions
- upload of highscores
- new testing maps
Known Bugs
- When dodging the game crashes (#144)
As per usual, if you encounter any bugs or have feature requests don't hesitate to reach out to us.
~ The Underwatch Team
What's Changed
- Martin/initial game by @LPkkjHD in #23
- Add collision to map and work on animation by @LPkkjHD in #37
- Neue Map: 2.0Map by @BenjaminB109 in #42
- Martin/fix lights by @LPkkjHD in #48
- #28 by @dolerich-hirnfiedler in #49
- Jeremias/website mockup by @JAWolfs in #50
- gameplay by @BenjaminB109 in #59
- finished mock-up with color-scheme by @JAWolfs in #60
- Jeremias/react test by @JAWolfs in #62
- Dev Mode by @LPkkjHD in #58
- Benjamin/testing map stuff by @BenjaminB109 in #68
- Dodge Dash by @LPkkjHD in #78
- created and added Menu-Button with functionality by @JAWolfs in #80
- sound für schießen und coin pickup by @BenjaminB109 in #79
- Jeremias/champions by @JAWolfs in #83
- setup username Filter by @JAWolfs in #84
- Jeremias/sort table by @JAWolfs in #87
- setup for the two tickets by @dolerich-hirnfiedler in #89
- added functionality to slider by @JAWolfs in #90
- Jeremias/date picker by @JAWolfs in #91
- Martin/enemy by @LPkkjHD in #96
- all filter work as intended by @JAWolfs in #94
- Added Unit Tests for the controller by @dolerich-hirnfiedler in #92
- fix: bullet now spawns in the right location by @LPkkjHD in #100
- fix the bug that the date is not shown anymore in the field by @JAWolfs in #102
- Add Ingame HUD by @LPkkjHD in #114
- feat: implement dad joke API by @LPkkjHD in #115
- Jeremias/wiki-reiter by @JAWolfs in #117
- Jeremias/wiki cards by @JAWolfs in #120
- feat: add teleporter by @LPkkjHD in #122
- feat: added cookies (without Date back in Daterange) by @LPkkjHD in #123
- feat: added import of livedata for the scoreboard by @JAWolfs in #128
- Docs by @dolerich-hirnfiedler in #138
- Martin/more animations by @LPkkjHD in #129
- Update README.md by @LPkkjHD in #141
New Contributors
- @LPkkjHD made their first contribution in #23
- @BenjaminB109 made their first contribution in #42
Full Changelog: v0.0.1-alpha...v0.0.2-alpha
v0.0.1-alpha
This is the initial release of our game Underwatch. There is not much to be seen here!