Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs

6 Games in 12 Months Game Jam Devlog

A topic by Cedar Cat Studios created 67 days ago Views: 502 Replies: 25
Viewing posts 1 to 21
(2 edits) (+2)

6 Games in 12 Months

Summary

This Devlog is quite simple. I want to do a year long game jam which will require me to complete 6 games in 12 months. There are no rules or themes other than completing the 6 games in 12 months... and having fun of course! 

The purpose of this game jam is to hold myself accountable to completing 6 games and having fun throughout the process. This Devlog will be used to keep me on track throughout the jam as well as help myself keep record of what I am working on and new things I am learning in my game development experience.

Progress

  • Game 1: Free Range - Completed July 12th, 2021
  • Game 2: Terrier Tennis - Completed September 5th, 2021
  • Game 3: Not Started
  • Game 4: Not Started
  • Game 5: Not Started
  • Game 6: Not Started

More Info

I’m a hobbyist game dev and love making games for the fun of it. However, I continually strive to improve my skills. This challenge is just for that, and I would love your feedback as I progress on this journey. I also would love if others wanted to join in my challenge or share updates on their own challenges or game developments. I have recently started a Cedar Cat Studios discord server for myself, but would love to chat with others if you would like to join. We can chat about all things game dev and hold each other accountable to finish our projects and become better game developers along the way. I hope you consider joining, and I hope you enjoy following my dev log detailing my progress on my games. Thanks and happy game developing!
(1 edit) (+1)

I have currently been able to tackle the 1st of the 6 games I will be completing in this year long game jam journey. 

The game I created was developed alongside another official game jam "My First Game Jam" which had the theme "Free". I decided to make a short but fun survival game about being a mother hen that must save your eggs/chicks from the humans in order to live life as a free range chicken. You can check this first game out here: https://cedarcatstudios.itch.io/free-range

I was able to record myself when I put this game together and will likely be posting a time-lapse of my work on this game and possibly some commentary as well. I look forward to my next post and my continued work on this game jam.

(+1)

As promised I have been able to put together an overview video of my work spent during the development of "Free Range".

(+1)

Game 2 Development Begins!

Fast Typing GIFs - Get the best GIF on GIPHY

Game Idea

I enjoy sticking with the quirky animal theme, so I will be making tennis game where you play as a dog and you must try and defeat your opponents in games of tennis. The game name will be Terrier Tennis where you play as the titular terrier and will play against an assortment of other breeds.

Focus Areas

I am planning to focus this game on really nailing down the sound effects as that has been a feature that has really lacked in my previous builds. Additionally I would really like to try and build out a new feature that I have never tried to tackle before, couch co-op! This will undoubtedly be difficult, but I feel there are a good number of tutorials on the world wide web that I can follow to help implement co-op and single player functionality into the game. Building out a dumb -> smart AI for the opponent on single player will be tricky too, but I am excited to work on this! 

Timeline

Work is pretty busy at the moment so I imagine this one will take me a while, but I will try and reuse a lot of the scripts from Free Range in this game to help on development time. Additionally, I have found a few asset packs within the Unity Asset Store that will help on my modeling efforts. However, I do really want to try and model a few assets to help flex those muscles. I will attempt to finish this game by September 5th. This will give me a full month and some extra time to help focus on really making a polished game. I will also try and post some frequent WIP updates here to show my progress as the weeks go by.

Other Projects?

I am a big fan of Brackeys as that channel helped get me into game development and I saw they are having their game jam take place in the middle of my Game 2 timeline. I may end up taking a week break from this game in the middle to work on a submission for the Brackeys game jam as those are always fun experiences! I highly encourage anyone else to join once the jam is open. Happy to collaborate with anyone as well on this game jam!

(2 edits) (+1)

Terrier Tennis Update

Base Mechanics

The mechanics of the game current are pretty simple. The player is able to easily move around the court and faces off against a bot (both just primitives currently) in a match to simply keep the ball from hitting the net or the out of bound walls. The player is able to aim by holding down the space bar and moving an invisible aim target. When the player comes into range of "hitting" the ball then an animation will trigger and the player will hit the ball towards the position of the aim target.

Improvements

I would like to improve on the functionality of bot as it is currently a bit too good. I need to factor in some imperfections into the bot. Additionally, the bot will only move on the x axis and has a fixed aim point. To make the game more exciting I will want to add some more dynamic movements to the bot. Additionally, there is no game manager currently. The player and bot simply try and not hit the walls or net. I will want to add an actual out of bounds to the court and integrate a score counter UI witch will keep the match score. Also, I have not built in any sound effects yet! However, I feel this will be good to add during the polish phase of game development when I also am able to swap out my primitives for good looking assets.

Finally, I would like to add a multiplayer functionality to this game. I think that may be extremely out of scope; however, if there as a feasible way to integrate that then I would like to pursue it. Multiplayer is a feature that I will undoubtedly want to integrate into future games, so why not start with this game?!

What I Like

So far the movement of the player feels incredibly nice! I have moved from my old hacky input system from Free Range to actually integrating it as a framework within Terrier Tennis. The controls feel way more responsive and it has so far been a lot easier to integrate other input actions in sine I built a framework from it, opposed to the "Get Key" type process I was attempting previously. Also, the performed and canceled methods with this new input system framework are also much more responsive. See below for a quick snippet of this method I am using. I find it much better than what I have used before:

public void OnSwing(InputAction.CallbackContext context) {
        if(context.performed) {
            Debug.Log("The player has swung");
            hasSwung = true;
        }
        if(context.canceled) {
            Debug.Log("The player stopped swinging");
            hasSwung = false;
        }
    }

Moving Forward

Work the last few weeks was keeping me from progressing on the base mechanics. However, I feel the last few days I have been able to make great progress and I still feel on track for my estimated completion date for this game. I may not be able to tackle the Brackey's game jam as well, but I will be hopeful! In my next update I hope to address some of the points I highlighted above and move into the polish phase of this game. Thanks for reading and stay tuned for more!

Final Note

I am going to finally try and illustrate a logo for Cedar Cat Studios to take place of the photo I have of the titular cat himself. I hope to have this illustration done before the next Devlog post!

(1 edit) (+1)

Terrier Tennis Update 2

Game Mechanics

Since the last post I have only made a few updates to the core mechanics. For the player I included the ability to perform a high hit or a low hit. These types of hit are performed by the player inputting the relevant keys to perform either of these actions. I currently have the keys locked to "G" for low hit and "H" for high hit. I will most likely change these before release. Additionally, I included the same functionality for the bot so there can be some variety in their hits. Further, for the bot I added a few more aim points to add variety in their hit locations. The bot still seems to be "too good" and I will need to make some improvements to allow for the player to be able to actually beat the bot. 

In addition to adding functionality to the player and bot, you can probably see from the gif above that I also included a cinemachine virtual camera to take on a more grounded camera angle instead of just the static floating camera. I set the camera to follow the player but to look at the ball so the player should not get disoriented about where the ball is at any point in time. This works, but as you can see at the end of the gif this becomes somewhat strange once the ball goes behind the player. I also noticed that at some points it was hard for me to see where the ball was when it was on the other side of the court. I may want to add a glowing effect or make the ball a bit bigger to help with this in a future update.

Finally, I was able to add a sound effect when the player and bot hit the ball! It is just a punch sound that I picked up free off the asset store, but I was able to mess around with it and think it adds a lot even though it is a sound effect that doesn't necessarily fit the game. I will no doubt update this in the future, but wanted to test this out before looking for the right sound effect.

Environment

One aspect you will probably notice that was a huge improvement from the last update is the addition of some environment assets! I think this is really starting to add to the game and I cannot wait to add animations to my player and bot to make it feel more alive. I would also like to add other dogs and cats to the bleachers to make it look like a real stadium. 

Another subtle touch you may not be able to pick up on in the gif is the addition of post-processing effects in my scene. I have never worked with these effects, but I am already starting to see a drastic upgrade in lighting and atmosphere. I have never been able to find a good tutorial on post-process lighting, but I watched a tutorial by LMHPOLY and found it incredibly helpful. I really enjoyed messing around with the color grading and used ACES for the very first time!

Improvements

There is still a lot I need to do to this game before it is ready for release. I would like to add a UI so the player can see who they are playing against and the current score. On the topic of score, I need to add in a game manager to track when the ball goes out of bounds and when to add score for the player or bot. I will also need to make sure to code in the tennis feature of making sure they win by two. I would also like to add a title screen and some additional environment assets to the foreground to really sell the experience. Finally, I will want to add all my animations and accurate sound effects to work more on that skill.

Bugs

For some reason the ball will randomly clip through the ground after the player or bot hit it. I have not been able to come to an understanding about what is happening here, but will need to rectify this bug before release.

Final Note

I don't know if you noticed, but I was able to illustrate a logo for Cedar Cat Studios! As someone who knows nothing about vector art, I am quite proud of it. Additionally, I started up a discord server to chat with anyone if they want to talk about any and all things video game development. I was fortunate enough this past week to meet a few individuals who are hobbyists in the game dev space and thought it would be great to meet more. Feel free to join the server if you like. I will probably use it as a method to post interesting videos and articles I find as well as talk about random topics I come across in the development of my games. The server is completely empty right now, but maybe we can grow a community in the future!

(1 edit) (+2)

Quick Update: Animation and Style

I added a toon shader and adjusted the color grading to be more poppy and to give it some more character. I also was able to create my animation blend trees to make controlling the terrier a bit nicer. The character still seems a bit floaty, but I think it is a good start!

I am now starting to work on populating the crowds in the bleachers (you can even see the start with the corgi's on the right bleacher).

(1 edit) (+1)

Crowd Simulation Overview

Summary

This will undoubtedly be a long week at work, so I wanted to get as much into Terrier Tennis in before the weekend is over. The last bit I wanted to add was the crowd simulation (hinted in the previous post). I decided to not look up any tutorials for this and try my hand at creating this on my own, and I think I did a pretty solid job with just over an hour worth of work!

How It Works

Essentially I purchased all the low poly dog prefabs from a fantastic asset pack on the Unity Asset store by Red Deer 3D. These dogs all came with animations already created which made my job a lot easier! My idea was the create a crowd simulation script that essentially just iterates through an index and will pass the index through to a parameter in the animator. This integer would then dictate the animator to play a random animation. This random integer selection would then take place every 5 seconds to make sure there was some good variety. Below is the script I mentioned:

using UnityEngine;
public class CrowdSimulator : MonoBehaviour
{
    Animator animator;
    public int randomAnimation;
    public float repeatRate = 5f;
    void Start()
    {
        animator = GetComponent<Animator>();
        InvokeRepeating("RandomAnimation", 2.0f, repeatRate);
    }
    void RandomAnimation()
    {
        int randomValue = Random.Range(0,randomAnimation);
        animator.SetInteger("RandomAnim",randomValue);
    }
}

I then applied this script to each of the dog prefabs. I then selected one of the dogs and created an animation tree within the animator. This tree has five selected animations which I felt would fit in at a crowd for a dog tennis match and created an entry and exit transition for each back to an idle animation. Each of the five animations have a random integer which I selected to trigger the animation. Therefore, if the script above passes a 2 to the animator, then the "Attack_1" animation will play, and if the next integer is a 5 then the "Aggression" animation will play. The exit transitions are then simply a "RandomAnim NotEqual [integer]".

I then added this animator controller to all the dog prefabs. The remainder of the work consisted of me putting some good tunes (if you are curious what my random collection of "good tunes" is, then I would recommend checking out the Spotify playlist I tend to stick to) on and randomly populating one of the stands with the variety of dogs. Once the stand was populated, I just copied it three more times and added it in place of the previous stands. 

The end result looks pretty good and really adds to the atmosphere of the game. I look forward to adding some soft barking from the stands in a future update.

(+1)

AI Bot Opponent Improvements

Previous AI Bot Build

The original state of the bot opponent was configured to be locked on the Y and Z axis and follow the ball on the X axis. This meant when you played against the bot it was not very lively and the bot seemed to be extremely stationary. Additionally, with this build the bot was way too good as it always new the perfect calculation to remain on the Y and Z axis which meant it rarely missed the ball. To make the bot more lively and act more like an actually opponent, I decided to take a page from my previous game (Free Range) and leverage the Unity AI NavMesh.

Current AI Bot Build

As mentioned, I decided to leverage the Unity AI NavMesh for the bot to act more natural. I started by selecting my tennis court and configuring the court to be a static object, I then baked the NavMesh as a walkable area. However, I don't want the opponent to walk on the player side. So I created a new plane that only exists on the opponent side and created a new navigation area "BotSide" and baked the newly static plane. I then deactivated the mesh renderer of this plane. Now I have two objects (seen as colors in the gif) with the NavMesh applied: Green where the player can walk, Red where the bot can walk.

Now that I have the NavMesh set up, I simply added a NavMeshAgent to the opponent and set the area mask to "BotSide". I also set the Angular Speed to 0 so the bot didn't rotate all over the place.  with the NavMeshAgent set up I was able to rewrite the opponent movement script to move towards the ball. However, when I did this the opponent just B-lined it right to the net when it was on the player side. Therefore, I created a cube on the player side, set it as a trigger, deactivated the mesh renderer, and applied a script to the ball to change a public boolean if the ball enters and exists this cube on the player side:

using UnityEngine;
public class BallManager : MonoBehaviour
{
    public bool isPlayerSide;
    void Start()
    {
        isPlayerSide = true;
    }
    public void OnTriggerEnter(Collider col) {
        if (col.transform.tag == "PlayerSide") isPlayerSide = true;
    }
    public void OnTriggerExit(Collider col) {
        if (col.transform.tag == "PlayerSide") isPlayerSide = false;
    }

With this "isPlayerSide" variable configured I am able to call it within the opponent bot script and if the ball is on the player side then the bot will go to the back line and simply follow the ball on the X axis. However, once the ball crosses out of the isPlayerSide then the opponent will run after the ball to hit it across the net. 

using UnityEngine;
using UnityEngine.AI;
public class BotManager : MonoBehaviour
{
    public Transform ball, botResetPosition;
    void Start()
    {
        navMeshAgent = GetComponent<NavMeshAgent>();
    }
    void Update()
    { 
        if (ballCheck.GetComponent<BallManager>().isPlayerSide) {
            navMeshAgent.destination = new Vector3 (ball.position.x, botResetPosition.position.y, botResetPosition.position.z);
        }
        else {
            navMeshAgent.destination = ball.position;
        }
    }


After testing this out the bot plays a lot more like a real opponent and makes mistakes and is a lot easier and more fun than before. The gif above (sorry if there is an orange light filter applied) details how the opponent interacts with the ball on both sides now. I still need to update the animations, but I feel this is a great improvement from the previous build!

Random Tidbit

I thought it was more accurate (and more cute) to get rid of the tennis racket animation and instead have the dogs jump and hit the ball with their snout. You can see a rough start in the gif. It is much more on brand here and I love it!

why you dont make a 2d or 8 bit game that so much easy

Thanks for the post @Arlzoliptus! I may make a 2D or 8bit game for a future game in this jam. I mainly enjoy working on 3D games more and wanted to try and get better at developing in 3D. I am trying to use this 6 Games in 12 Months game jam to get better at areas I have struggled with in the past. What better way to learn than in a scenario like this :)

(+1)

maybe you can make game bet em up like we can don't fight enemy but we can talk or negoitation on enemy 

(+1)

Gameplay Adjustment

Summary

I was finding the game to not have a very fun gameplay loop. The act of aiming was very clunky and I felt like I didn't have any control over where the ball was going on the opposite side of the court. I wanted to fix that by providing the player with more control over their hit returns. I felt the most natural progression was to create a "bullet time"  (we can call it super slow ball time) mechanic and then allow the users to direct their shot during the brief window of slow motion during the game.  Super slow ball time is initiated by a cube that is a child of the player that triggers the super slow ball time once the ball enters the trigger.

I was able to achieve this relatively simply, but more improvements will for sure be made. The gif above showcases how the player experiences super slow ball time as well as a crude sphere (which will be an arrow eventually) allows the player to direct where on the other side the ball will be hit. I had to change up the button layout in order to achieve this. The player now uses the arrow keys to move and WASD to move their aim target. The aim target is only able to be moved during super slow ball time and resets when they leave super slow ball time.  

Conclusion

This makes the game already way more fun to play. I just sat against the bot for a few minutes screwing around and genuinely had fun! There is still a lot to improve, but I think this will lead to a much more satisfying gameplay loop.

(+1)

I love this concept, ngl.

(+1)

I’m so glad you love the concept! It’s been a lot of fun so far and really enjoy how it is keeping me to working on these quirky quick games. 


I am getting close to finishing Terrier Tennis and already excited about my next challenge!

(+1)

Terrier Tennis Update 3

Status

Overall I am quite happy with the progress I have been making on Terrier Tennis! The gif above (apologies if giphy cut the frame rate in half) highlights the current state of the game. I have been able to add a scoring mechanic into the game as well as properly position the titular terrier on either the right or left side after a point has been made. I also was able to model a score board to keep the track of the score as the match unfolds. Keen observes of Cedar Cat Studio games will see the infamous Stinky Cat hanging out on the score board! In addition to modeling the score board in blender I was able to also model the arrow to show the direction of the players hit. I also was able to animate it to add a bit more flare! 

While progress is going great, I will unfortunately be on the road for the next week and will not be able to work on game development in Unity until next week. While this is the case, I still have a lot of art and sound work that I want to get done which does not need to be done in Unity. I will continue to post here with updates outside of Unity for the next week. Finally, I have some days off work the following week and I am confident I will still be able to release Terrier Tennis by the deadline of September 6th!

Features Still Needed

  • True tennis scoring: 13, 35, 40, Game. As well as the "must win by two" rule.
    • I also would like to make the games be best of three so there will be a series of matches before the game is truly over.
  • I need to add a feature to allow a player and opponent to score if the ball hits in bounds and then out of bounds.
  • Main menu and opponent selection screen. I would like to add the ability for a player to choose who their opponent is (based on difficulty) and run through the gambit however they would like.
    • Unfortunately multiplayer or couch co-op are far out of the scope currently.
  • Opponent serves.
    • Currently the opponent only receives and never serves. I would like this to not be the case and to play like an actual round of tennis.
  • The opponent animator needs finishing.
  • Final background environment modeling.
  • More sound effects and theme music.
    • I will be working on this all next week :) 

Bugs That Need Squashing

  • The ball will still sometimes clip through the court for no reason. I still need to look into this.
    • Similarly sometimes the ball will hit the court and just stop in place.
  • The jump animation on the Terrier can be delayed for some reason sometimes.
  • The arrow will slowly shift further to the right as the match goes on and I do not know why?
  • I have a bounce counter which counts the number of bounces the ball takes after it is hit, and it only records in increments of two for some reason.
  • Frame rate fixing
    • I need to do performance tweaking as sometimes the frame rate can be pretty bad.

Final Notes

This has been a blast so far and I hope anyone reading is enjoying the progress on Game 2 of this game jam. Please feel free to comment on any suggestions you may have for Terrier Tennis or the game jam as a whole.

(+2)

Terrier Tennis Banner

Summary

First order of business during my week away from my computer was to flex the my “art” skills and put together a banner logo for Terrier Tennis. It’s not much, but I’m pretty happy with the outcome of this banner photo! I used Vectornator on my iPad to put this together and hope I was able to capture the titular character along with the mood of the game in this banner. I will likely use this in the official itch release banner and logo as well as on top of the score board to add some whimsy to the game. Overall this was a fun exercise, and I now need to focus on putting together some sounds for the later half of this week.

let me know what your thoughts are on the banner especially because I am extremely new to putting together this kind of art!
(1 edit) (+2)

Hey, the logo is already very cute (especially the details on the dog, the paw coming towards the viewer is amazing, haha, very dynamic), but I’d suggest playing with shadows and layering of text and image a bit, especially vectornator and similar apps allow for that very efficiently! Here’s an example I did with a vector app:

(+1)

Wow the shadows add some much more life to the graphic! Yours looks awesome! I definitely saw some easy shadow options but had no idea what I was doing. I’ll try and fool around with those and see if I can make my graphic pop more. 

I also love your colors. I kind of want to add more than just the green background now too!

(+1)

still not as good as yours, but I definitely tried to take some of the points you made to add more depth and make the banner feel way more dynamic and pop better! I’ll probably still tweak this some more, but I’m liking this way better!


(+2)

It’s already a lot more dynamic, good work! I’m sure you’ll get the hang of it faster with each game. :) You’re already doing great and I’m excited to see the other games you’ll come up with!

(2 edits) (+1)

Title and Menu Screen


Summary

I was itching to get back to game development after a week away, but I am glad I was able to take the previous week to dive into the vector art for the game. As you have been able to see in the previous posts, I arrived on the title text and a cute image of the titular terrier. I really enjoyed the process of creating this vector art and I wanted to incorporate it into this game, and future games. So I felt the natural progression was to build out the title and menu screens with these features included!

A title and menu screen have never been my forte. I usually just skip over this and do a quick and easy intro to the game, but putting more time and effort into this was honestly a lot of fun! I learned how to export my vector art graphics and text using the proper resolution to unity and convert to a 2D sprite while retaining the sharpness. My previous games all leveraged TextMeshPro, but I always felt the resolution was really bad. I am so glad I was able to figure out a better pipeline using my vector art.

In addition to the vector graphics being included in the title and menu screen I really wanted to add some more flair. The silly animation on the title page was super easy, but I feel it sells the fun of the game. The opponent selection was a bit more difficult, but learned a lot about render textures and how to render out another camera in the scene. The end result I think is pretty snazzy and is by far the most polish I have put into a title screen. Finally, I have never done a scene transition before but it is astonishing how much of an effect it has.

Final Note

This was a lot of fun to spend more time on the title and menu screen, but I still have a lot of gameplay tweaking I need to add in order to complete this game by my deadline of September 6th. I look forward to posting more here!

(+1)

The Home Stretch

Almost Done!

This evening marks the completion of the first full level against the German Shepherd! I purposely made this level to be able to be copied and easily modified to fit the remaining five dogs and their difficulty levels. Today I was able to create some vector art for the game over screen and also add some fun background music to the title menu as well as the game itself. Tomorrow I will be finishing up the game by creating the final levels and applying whatever remaining polish is needed. 

In an effort of time I actually ended up cutting a lot from the final product. I decided to make it so the player will only ever serve and in order to win you just have to get to five points. This is something I would enjoy fleshing out more if I wanted to spend additional time on this game. But that is the beauty of the 6 Games in 12 Months Game Jam. I am able to spend time working on a game and learning, to then move onto the next.

I have had a lot of fun with Terrier Tennis and think this may be the most polished game I have done so far, and have learned more than I honestly expected. I hope to release the game this weekend and I also hope you all find some enjoyment from it. I will plan that my next post will be the itch page link to the in browser game. I look forward to you all playing the game soon!

(+1)

Terrier Tennis Completed!

https://cedarcatstudios.itch.io/terrier-tennis

Summary

I'm excited to have finished Terrier Tennis before the deadline I set for myself! Putting this game together was a lot of fun and I learned more than I would have thought. While there are still many things I would like to improve in this game, I felt it was time for me to upload the build and enjoy completing the game. I hope you find some enjoyment from the game, and I can't wait to get started on my next project in the coming weeks. It would be great if you would be able to play the game and let me know your feedback so I can improve when going to my next projects.

Things I Like:

  • The player movement and aiming
  • The title card and opponent select menu
  • The scene transitions 
  • The music
  • The vector art throughout the game
  • The code (I did a purposeful job to spend time working on making elegant code)

Things I Don't Like:

  • The frame rate (the build frame rate in the matches is sub par and I just don't want to spend more time tweaking performance)
  • The opponent animations are quite harsh and limited
  • The sound effects could have been greatly improved
  • Limited to desktop html build (I would have liked to do a mobile build)

Conclusion

Regardless of the features I like and don't like, I learned a lot making this game and that is all I can ask for during this process. I can't wait for the next project, and I hope you are able to play my game and find some enjoyment from it. Thank you for watching my progress over the last month. I hope you stay tuned for my next games! 

(+1)

I ended up fixing the poor frame rate by moving the build off of WebGL/HTML5. For some reason this build had quite unplayable frame rate and the only way to fix it in this time was to move the build to PC/Linux/Mac. I wish I would have been able to make it playable in browser so it would be more accessible, but I would rather allow people to enjoy it rather than be frustrated with a poor build. 

Maybe in my next game I can work more on performance tweaking so this doesn't happen. Regardless I hope you enjoy!

Terrier Tennis Break Down Video

Similar to how I broke down "Free Range", I wanted to create a post-mortem analysis of my work on Terrier Tennis. Again, I had a lot of fun putting this game together and looking forward to working on the third game in the jam!