Categories
Dev Log Programming

Into The Event System

By Yash Chamria

Kick Some Bass is an event-driven architecture based on the hybrid implementation of Publish/Subscribe and Observer patterns. The blog will go over how I integrated the Event system in Unity and how the team is using the events to their advantage.

Why an Event System?

Before that, it is important to understand why we decided to use the Event system in the first place. Kick Some Bass has three entirely distinct phases – Interactive Map, Fishing and Fighting. On top of that, each phase will have unique abilities, weapons, scoring system, achievement metrics, input, player moveset, camera system, AI with purpose, and the list goes on. All coupled systems will be hard to deal with and make the development process slow and potentially buggy. 

To avoid spaghetti code and cyclic dependencies, the Event System comes to the rescue. The Event System allows all the systems to stay decoupled and only communicate using the events.

Integration with Unity

An Event System is a combination of events, event subscriber delegates and an event manager working together.

An event encapsulates the necessary data to execute the task.

An event subscriber delegate is used for the callback when an event of the mentioned type occurs.

The Event Manager processes events and matches them with the subscribed delegates, invoking the delegate function pointer.

C sharp(C#) makes the process of handling a function pointer simple and straightforward using the delegates. These function pointers are then associated with an event type. All the events must have an event type attached to them, where the event type is a huge event list enum. After that, any system can subscribe the function pointer for an event type to receive the notification.

Using the Events

The team is already integrating several systems into the event architecture. For instance, the Input System uses events to notify the input detection to the interested classes. This means systems interested in input don’t need to know about the Input System as long as they are subscribed for the events they are interested in, the function pointer will invoke automatically. Similarly, the ability system, fighter system, UI system and many more are event-driven structures.

This allows all the systems to be decoupled, flexible and easy to expand.

Categories
Art Dev Log

Early Beginnings

By Michael Collins

Welcome to the Kick some Bass log, where this week I will post our concept images for Kick some Bass! They are the result of our early brainstorming sessions for enemies, locations, user interface, and map.

To start, we have a page of enemy concepts based on the blob fish, goblin shark and angler fish. As well as a late game fishing rod upgrade. For starters, I’d like to talk about design choices behind the appearance of these enemies. Going with the abyssal theme, I figured it would be a good idea to give these already nightmarish creatures, more nightmarish. For the blob fish however, it seemed funny to give this fish a more buff and outlandish appearance. The idea was to add a more intimidating foe than would be initially presented. As for the fishing rod, we have plans to make the hook fall faster underwater. As a result, a heavy set hook shaped like an anchor seemed like the perfect upgrade.

These enemies were our earliest concept ideas for NPCs, along with a basic fishing rod for reference. The sunfish enemy was initially planned to be super buff, with a little arch over its fins to give it a solar powered attack. The spike crab is a reference to the spider crab. Seeing as spider crabs are more gangly, with longer limbs, making the fighting version more combat heavy with bigger claws, same range and being protected by massive spikes; it would make for a more intimidating enemy for the player to face. For the final enemy, it’s a pun on the name. It’s a pistol shrimp, holding pistols with a cowboy hat. It is a rough concept and despite the genius behind the idea, may not end up being used.

This final page of NPC concepts features two saltwater reef fish. For the clownfish, it made sense to make it very exaggerated in style and appearance, as well as showcasing the symbiotic relationship between the clownfish and their anemone. As for the other once, a more abstract appearance seemed to fit with its aesthetic. As the creature is very colourful, it made sense to give the fighting form some bioluminescent aspects across its patterning. As for the horns, it made sense to make the prominent features of the creature be used in a more offensive stance.

The next series of concepts concern the overall map idea, and UI elements.

The overall map concept was designed to be circular and easy to use with clear areas pertaining to difficulty. The idea is for the player to walk around this map as a little character, and will unlock other areas as bosses are defeated.

The UI for the map overworld is meant to display the amount of currency the player has. This, as all these concepts are, are subject to change.

We though that this would be an effective use of fighting UI, as it is simple and effective at giving the players the information they of their health bar, as well as the enemies health bar.

The final concept is for the fishing UI. Once again, easy to read and effective at giving the player the information they need to find the fish or use powerups.

Categories
Dev Log

Brainstorms

By Brandon Coates

Hello and welcome to Goofball Games first dev blog post! For our first post I will be going over our brainstorming process and game overview. The most difficult part of initial brainstorming is deciding which idea is the best choice to pursue. In a meeting with 10 people there will be at least 20 ideas. Therefore, it is important as a team to have an open and free discussion about each possible idea. In our process each team member had the opportunity to pitch their top ideas which they believed were within our skill and scope to achieve. After that initial brainstorming discussion we had narrowed our game to a handful of ideas. To finally decide what to focus our efforts on we held a team vote. Ideas with significantly less votes would be eliminated and we would vote again. A few rounds later and we had our answer – Kick Some Bass.

Any idea originating from a single person will always be improved through the collective efforts of a passionate team. Through another series of discussions we narrowed the broad collection of ideas into a series of deliverables that can be done in our short two semester time frame. The most important question any team needs to ask is what are your unique selling points? Why should anyone bother playing your game? Well, with a unique blend of 3rd person arena combat, quick and interactive fishing, several unique biomes, and many fish puns – there is an abundance of entertainment for the player to enjoy in one packaged experience. 

The story revolves around our protagonist Jim Jimson. A salt of the earth fisherman with a unique perspective of the world. He is convinced the creatures of the deep are plotting the downfall of all surface dwellers. No one would believe him if he tried to alert the authorities, they may even think he is crazy! Thus, our hero sets out on a personal quest to tame the creatures of the sea with the only reliable tools he has ever known. His own two hands.

The game will be divided into different biomes which act as traditional game levels. As the player progresses and unlocks new abilities, those new areas will be opened up for them to test their skill and experience new enemies. After a biome is selected the player will have the opportunity to guide their fishing implement towards their desired target. If the player is successful in catching a fish they will then be thrown into the arena to subdue the mutated nautical monster and be rewarded for their efforts.

There is a lot more to cover but this has been an introduction to our design process, and a description of our game. In future posts we will discuss topics such as game design, 3d modeling, program architecture and much more. Stay tuned for more from our dev blog!