Categories
Art Dev Log

Updating some of the enemies

By Michael.C

Earlier on in development, there were some hiccups in the making, unwrapping and texturing of the models I created. As a result, I have gone back and touched up points of the whale shark boss, the holy mackerel fish, and the bass guitar bass. For each, I wanted each model to have their own individuality. 

To begin, I will demonstrate changes made to the whale shark boss, as in my opinion they are the most significant. 

To start, the whale shark was going to be a biped. While the body doesn’t change too much, the legs were, admittedly, poorly made. As a result, an update was in order. 

Now, between the changes, there was much more attention to the feet of the whale shark, using a triceratops for reference both for animating the legs, and modeling them. 

For the holy mackerel, most changes are applied to the robe. With his frill at the back being a major pain in the beginning. They are also not using the cloth modifier to make the robe flow nicely, and will be animated later on.

The design for the wings on the back come from the idea of manta rays being “Angels of the sea”. A sort of play on the idea of the holy mackerel being a religious figure. 

Finally, the bass guitar bass fish underwent a texture upgrade. There were also a few points on it that needed to be fixed or touched up, little errors that occurred at the beginning of the texture process. 

In the coming weeks, we will be posting about the progress of our animations, and may even have the build downloadable! Look forward to that!

Categories
Dev Log Programming

Tutorials and Progression

By Brandon Coates

Hello and welcome back to another update. Today we will be doing a quick discussion on the importance of tutorials and how we implemented them into Kick Some Bass. Another topic we will cover is the importance of progression and the feeling of achievement many games try to elicit out of their players (us included).

Firstly, I want to talk about our new tutorial system of NPC’s such as Socky (seen below) who will tell the player how to move, fight and shop. Much like a shopper during Black Friday sales events. However, in our world, the only shopper is Jim Jimson. The way he receives advice is from a living sock on a stick and his extended family.

Socky with his dialogue options

The newly implemented dialogue system which was made with the express purpose of acting as a tutorial interface, has grown into a way of delivering jokes as well as advice while keeping in the spirit of our game.

Finally, with this new tutorial system in place we decided on a simple progression system where the player must defeat the fish in a sequence which will unlock more to do on the island Jim calls home.

These are the major updates as we near our final release in the coming month. All efforts have been and will continue to be made to polish our game to a high standard. We have learned a lot from this process and personally I want to say the team has been doing a great job.

Placeholder for Marty the mechanic and his pixel sprite.
Categories
Dev Log Programming

Plans for the Final Push

by Brandon Coates

As work continues on our project we get closer to our final release. During this time the team is dedicated to polishing art and animations while refining our combat mechanics. The framework while never truly complete has reached the required completion to refocus our effort into the feel and look of the game. Animations will soon be added as well as two new arenas – one of which is visible below as the last image.

Also, we are happy to announce that our economy and ability system are complete and being integrated into the game to offer more rewards and options to players. We have decided that the store would be a physical location in the interactive map section of our game which is the fist picture below with Jim Jimson standing nearby. However, the ability system will be accessible anywhere on the interactive map and offer the player a chance to spend their ability points earned by leveling up. Or they can spend their hard earned fish bucks at the store.

Finally, as a team, we want to thank you for following along and if you’re, new check back later for the last few updates before we publicly release our game on our website and Itch.io. While this has been a great learning experience for all of us, everything must end and we just hope you get some enjoyment out of our year long labor. Have a great one!

Categories
Dev Log Programming

AI Behavior

By Yash Chamria

In Kick Some Bass, the player has to fight his way through a number of sea creatures. These fish need to have distinct behaviors for a unique experience with each fight. To achieve distinct opponents, these opponents have vastly different models, abilities and brains. This article will be focusing on the latter and involves the process of testing different AI methods to make our opponents intelligent. 

Different AI Techniques

Let’s talk about the popular and effective options to implement an AI. Behavior tree, State machine, Machine learning and Utility AI. 

We quickly opted behavior tree out as it would be really hard to come up with all the situations in a fight. Also, to have different 9*/8 behavior for different AI we will need a different tree, so this *option involved a lot of design work and careful thinking. 

Next was the state machine and it suffered from the same issues as the behavior tree. 

The third option is to use machine learning, though that involves extensive playtesting to collect player data, and all the abilities need to be implemented for testing. Since AI development was supposed to go in parallel, it started way before the concept of ability existed, which rolled out machine learning as an option.

Lastly, we had the UtilityAI which seemed like a perfect fit for the job. It lets you tweak the values and graphs and can easily produce vastly different behaviour with some value changes.

Implementing Utility AI

Utility AI implementation went through three major overhauls.

First implementation (graph heavy) – This version allowed the designer to create various graphs for different situations. For example if the player’s health is low it will allow the AI to choose from this specific behavior pool based on graph scores. Or if the player is doing a certain action it asks the AI to select from a series of actions based on the situation. After a while, we realized this approach involved a lot of designing and tweaking – the same problem we had with the behavior tree.

Second implementation (distance layers)

The second approach is to use distance and specify a limited series of actions within a range to limit the unnecessary parameters at play. For instance, no point in punching if the player is 50 meters away, but perhaps a stamina gain might be beneficial. This however created some gray areas when AI crossed the distance layers with contradicting actions(move back and then move ahead).

Third implementation (Brute force) – The current way goes over all the present and future possibilities(at least 5 steps ahead) and gives them a score based on a graph, this results in much more thoughtful prediction and less design work. The future implementation will involve optimizing the current approach.

Categories
Art Dev Log

The Evolution of 3D Assets in Kick Some Bass!

By Raphael Corriveau

Early on in development, the approach to 3D models was more focused on creating some true to nature models, making them more realistic and detailed. This was in part due to some course requirements and uncertainty in the favored aesthetic within the team. We were initially planning to implement a fishing system, which meant we had to make 2 different sets of models, the underwater and surface(fighting) models having their own sets. Furthermore, we worked on some fighting accessories and map elements. In time, with the project being downsized, we opted for a lower poly aesthetic and consequently began modeling with a more cartoonish style in mind.

The first models were produced for underwater fish, with a selection for different environments we thought we would have players fishing in. This included a bass, trout, angler, and schooling fish like mackerel. These were to be used to make the fighting fish models as we felt having fighters looking like their underwater counterparts was logical and would help with immersion.

Basic Trout Model
Basic Bass Model

These evolved to become the surface fighting models which are now the only ones we will be using.

Bass Fighting model with texture
Holy Mackrel Fighting model

Along with the fish, initial models also included props and items that would be used both for the fishing and fighting such as a fishing rod or a harpoon. With the downsizing, these are now just going to be elements of the décor.

Original Fishing Rod
Row boat Decor

Next, we also worked on some buildings as places of importance in the overworld map we wanted to use. Among these there were some iterations of houses for the character, a lighthouse, a dock, etc. We used basic grey-blocked models as placeholders in Unity until we could import completed assets. The style is somewhat varied as different members worked on each of the buildings.

Light house model
Fish Store model

Last but not least, the model of our main character, Jimothy Jimson. While we had an idea of the silly character fighting the fish, bringing it to life as a model proved challenging and required a couple attempts. The earlier iteration was blockier where it didn’t need to be, and the head was too small. It was a placeholder we used for a while. Here is a picture of our current work in progress model, with a side by side comparison of what we used to have. Jim will be out there fighting abnormal fish in no time. We hope you will be there to do it with him.

First pass at Jim
Current working model
Categories
Art Dev Log

Pixel Art: The Arcade Feel

By Ben Purdy

With the development of Kick Some Bass Progressing more and more, we have started implementing more and more art assets. Before we could have the art made, however, we had to decide what sort of aesthetic we want for the assets. After talking it over and assessing different styles, we decided to use pixel art

Now you might be asking yourself “Why pixel art?”. Well, I’ll walk you through our thought process. Kick Some Bass is a light-hearted game, and we needed a style that replicated that jovial tone, and for me, that was pixel art.  Pixel art to me at least has a sort of “quaint” quality to it, where while it can certainly be very intricate and detailed, it is mostly used where details are more so implied. This is not to say pixel art is easier to make, but it evokes a certain style and view of a game, that in our opinion suits Kick Some Bass rather well. Pixel art also ties the game to classic fighting games, an homage to some of the games that inspired us. While pixel art may not be for everyone, we think it very much fits the game and its style. The more arcadey feel that pixel art provides meshes very well with Kick Some Bass’s more relaxed fighting game style.

Thanks for reading, and make sure to check back for more updates about the game and its development. Happy Swiming

Categories
Dev Log Programming

Changes for Release 3

By Brandon Coates

We are announcing a big change today. The fishing minigame has been removed. As a team we discussed the positives and negatives for keeping or removing the minigame. Yet, due to the short development cycle and the fact that half of the development time has elapsed, we have scaled down the game scope. 

However, that does not mean the game quality will suffer any negative effects from our decision. It actually will have the opposite result and greatly improve our overworld and fighting sections. The few team members who were working on fishing now will direct their full efforts to help ensure a high quality experience overall.

If you want to see our game as it was before this decision please play the browser version on itch.io: https://goofballgames.itch.io/kick-some-bass

Feedback from that release was overall very positive, however we noticed that many people refer to our work as “the fishing game.” This is a problem because we are at the core a fighting arena game. Therefore, instead of cutting the fighting and making a purely fishing game we are doubling down on the fighting mechanics of our game and we will ensure it reaches a quality that we are happy with while remaining true to our original vision. A furious fisherman who must punch his way through an assortment of fish to save the world. 

These next few months will be the most busy and hectic development to date so stay tuned for future updates.

Categories
Art Dev Log

Style and Theme

By Brandon Coates

Our intention for this game has always been to offer an absurd and funny experience while developing our own interpretation on tried and tested game mechanics. There are a lot of things that need to be done for a game to have the right “feeling.” There are games that rely heavily on visual presentation and sound effects to elicit a feeling from the player, like Journey(2012). While mechanically a simple game it is critically acclaimed because it understood what “feeling” it needed. There are other games, like Dwarf Fortress(2006) that do not rely upon art or sound design and fully commit itself to being mechanically complicated but also creatively freeing. However, it still makes the player understand it’s style and theme through it’s gameplay. 

Kick Some Bass is like most games where it imparts it’s theme through a combination of art and gameplay. The simple description of our game, where our hero Jim Jimson catches a fish then has to fist fight it into submission is self-evidently funny. However, if it was presented with the latest 4K graphics and going for an ultra-realistic aesthetic then it would tread in the uncanny valley and create feelings in the players our team does not want. Therefore, we are going for an exaggerated art style with lots of color and exaggerated proportions. With this combination of humorous gameplay and cartoonish visual presentation we hope to deliver a fun and memorable experience.

Categories
Art Dev Log

The Interactive Map and You

By Ben Purdy

In Kick Some Bass, when the player is not fishing or fighting, they will be exploring the Island on which the game takes place via the Interactive Map. In this blog post, I will go over the Interactive Map(IM for short) and explain its purpose and why we chose to go with one.

The Map as a Whole

Every good game needs a setting, right? Hyrule, Lordran, Dust2, all good settings and our game is no different.  Now, like all people, we had plenty of ambition for the map. We were planning on having multiple different biomes that the map would be divided into, but with our limited development time, we are limiting the scope to one biome, the starting area where the protagonist Jim Jimson lives.

Why a Map Anyway?

You might be wondering, why use a map in the first place, why not just use a basic level selector? While it would be much easier to have a simple 2D map, the team thought that it wouldn’t serve the type of game we are aiming for. Having a 3D map that the player can freely move around in serves multiple purposes. 

The primary reason is that it just felt right to have a map that you could walk around in, without one it would be fairly bland in between fish fights. Having the player be able to explore the map also allows for more interactivity outside of the fishing and fighting, with things such as signs and minigames scattered around to give the player some more things to do if they want a brief break from the standard gameplay loop. 

How Does the Map Work?

The map is a dedicated scene in unity that the player will load into by default. Currently, it is just a way to get to the fishing and fighting with only the starting fishing area. To enter into the fishing areas, a basic script is attached to a game object. The script detects if the player is close enough and if they press E, and fulfilling both of these criteria will send the player to the fishing area. There are also simple interactable objects like signs that will simply display a text message above it if the player gets close enough.
So that’s the map! Currently, the map is still in development but should be coming along swimmingly (haha).  Make sure to check back on here to see more of what we have coming up!

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.