Text
Devlog 7: Update and Concluding thoughts
Well, this has not been updated for a while. Since last time, we have integrated FMOD into the project, leading to all sorts of interesting bugs and weird things that I have had to resolve. It turns out a separate system integrating into an already relatively optimized solution isn't really ideal. Nevertheless, I have focused a lot of time and energy on making the sequencer work with these outside callbacks that David made.
I have spent some time working on the target audience, competitor analysis and positioning of the game as well.
Additionally, I have been busy making a lot of visual improvements to the game. First came the parallax universe shader. It scrolls on the part of the grass shader that is not covered by grass, getting successively overtaken by the verdancy. The different textures in the shader (stars, clouds, eyes) scroll at separate speeds, but are part of the same material, so we have a marginal performance gain compared to using multiple materials (or, Grace forbid, multiple background meshes).
I also built a script that allows us to have trees in the background that start as dead husks in the corrupted areas, but as soon as they are touched by the reinvigorated spaces, they turn back to life. This is performed simply by checking the position of the tree relative to the plane it is standing on, and how far the interpolation between grass/space has progressed over the plane. If it has reached the coordinates of the tree, we force the tree to enable its crown.
I also overhauled the graphics, adding bloom to HDR colors via Unity's built-in post processing volume. To make the sequencer extra visually clear, I also made inactive sequencer tiles darker to improve contrast.
I made a plant "ray" attack, where the plant raycasts in front of it and deals damage to any enemies hit by the ray. It is a lot easier to synch with the beat than any projectile. Bloom also came in handy here in order to make these plant "lasers" look better. Quite the last-minute fix, but it really does work.
Speaking of things that work, I made two additional attacks:
The Root attack, which shoots out a trail of roots that trap enemies for two bars of music.
The Seed Bomb attack, which sends out a projectile that ascends for one beat, loiters during the next, and then rapidly descends on a target on the third beat before violently exploding on the final beat. Man am I proud of that explosion shader.
The final week became a lot of bug fixing and making sure icons behaved like they should. Probably should have done some balancing and making the game more comprehensible for new players, but hey, there has been enough work to go around as it is.
So, this is it then. The project is done, the GDD is handed in, and the itch.io page is up and running. I am proud of what we have achieved, but I am going to check with the team if I can take a week in the summer to polish this game some further, and rework some of the scripts. Some of the solutions implemented in the codebase are very much spaghetti code, and there are quite a lot of bugs remaining in the system.
Thank you for tuning in to the local devlog! It has been a pleasure.
0 notes
Text
Devlog 6: V-FX:ing this mess
Hello world! I have spent a week or so doing loads of Unity ShaderGraph, and made some cool effects. One is a grass surface that grows as the song in-game progresses. The other is a simple full-screen post-processing image shader that turns the screen strictly black and white, without any grascale in between. It works wonders for so called impact frames, exemplified here by a short 5 frame sequence from Arcane
(Full sequence here)
I am really hyped about using this for the explosion VFX that really should grab the player's attention, such as when parts of the sequencer are destroyed, which obviously is a huge blow to someone whose main weapon is the sequencer-plant combination, and something they need to do something about as quicklly as possible.
Oh, yeah, and I also implemented a state machine for the enemies (finally...) and sequencer destruction. Now to make a loss condition, scripted enemy spawns instead of random time intervals and the aforementioned explosion VFX. Hoping my teammates can get the textures and sprites for those done first so I don't have to whip out paint for some programmer art™.
0 notes
Text
Devlog sidetrack
Experimented with some instruments in FL over the weekend, came up with a pretty cool tune that could work as a first-level stand-in until my teammates finish the actual song.
Inspired by the game, I have these otherworldly bells fighting over the structure of the song with the heroic (and slightly distorted) piano. All hell breaks loose in the last seconds of the track, which would pair nicely with some intense enemy wave situation in-game, before the resolution to a nice victory jingle.
0 notes
Text
Devlog 5: It's starting to look like... Something?
I have now implemented a spawning system for enemies, health and death of said enemies, and some funky chords. These are the base features, the core of the game, which will be important for the upcoming demo session.
I already find the notes to be sort of too easy to repeat, creating boring or even obnoxious patterns. Supposedly this has to do with the melodic nature of the current sounds. It might be worthwhile to investigate if percussion instruments mapped to the plant firing sequences feel the same.
0 notes
Text
Devlog 4
Keeping up the work on the sequencer system, I have now added a singular grayboxed (or greenboxed?) plant. The sequencer signals the plant on the same row to fire when a selected tile (green) is activated. The plant then shoots a really basic projectile.
The next step will be to implement enemies to shoot, a simple health management system, an enemy spawning system and the possibility of enemies to deal damage to the sequencer.
0 notes
Text
Devlog 3
I have implemented more of the MVP items for the demo. I will list these below:
A music manager that takes in a sound file, plays it, and tracks the current time of the audio playback for a given music file. Inspired by a YouTube tutorial on the subject [1], it does so by accessing the playback position in the PCM signal and dividing it by the sample rate. By some simple unit conversions and multiplication by the BPM of the song, we can achieve accurate frame-independent tracking of progression through the song.
A framework for a sequencer, where the different squares (internally named tiles) can be selected (switching them to being triggerable by an activation signal). The sequencer alternates between columns of tiles to send activation signals each beat. See the video below for the sequencer in action.
[1] b3agz. SYNC YOUR UNITY GAME TO THE BEAT. 2023 https://www.youtube.com/watch?v=gIjajeyjRfE&pp=ygURdW5pdHkgc3luYyBhdWRpbyA%3D
1 note
·
View note
Text
Devlog 2
After a great presentation, the group found itself shocked over how near the demo presentations are already. We have therefore divided tasks more clearly.
I have started to plot out some basic requirements for the demo, a serviceable architecture for the different components, and started a new Unity project. I have also initialized a GitHub repository.
I then spent an uncomfortable amount of time researching how to make the Unity client sync its internal time-keeping with the timing of music. I know all too well how easy it is for audio and gameplay to desync following a framerate drop or any other temporary hiccup. I realized that if we base the entire game's time-tracking on the PCM position in the music file, we can reliably time in-game events to the state of the music.
0 notes
Text
Devlog 1
2 weeks have passed since the project began. In that timespan, we have managed to have 3 major meetings (1-3 hours) and a minor meeting of about 30min.
We started our journey by getting to know each other and discussing what games we liked. This paved the way for some primitive ideation, where we found some interesting themes to build upon until our next meeting. We tasked each group member to add random things to a communal Miro board (videos, images, words, gameplay mechanics) and generate some ideas.
The second meeting was all about looking through these ideas. I got stuck in the brainspace of mashing different game genres together with rhythm, and thus generated ideas like Beats and Blooms:
Beats and Blooms:
Farming game where players plant different seeds. BUT, these seeds do not grow with time. They grow with groove. The player has a couple of seedbeds, and may plant a couple of seeds in each. When they want the seeds to grow, they approach the seedbed and the rhythm game starts.
In the rhythm game, the player has to match inputs to the rhytm of the beat. What inputs are necessary and how frequently they appear are decided by what plants they have planted. Some plants create harder rhytm games but yield greater rewards for planting them, some are more lenient but lower value.
Possible extensions include
Exploration
Shops and orders
Crafting
Beat Invaders
Space invaders, but your ship is unarmed! The enemies come ever closer, advancing and shooting to the beat of the backing track. Build turrets behind you that shoot at different intervals (based on the beat of course). Their bullets can hurt you as much as they would the enemies, creating a dangerous rhythmic element for you to navigate around.
I also had the fantastic idea of a rat-chef cooking simulator, where you would be tasked with cooking different pieces of trash using random things from the sewer as cooking utensils and appliances.
This one was the least developed. Needless to say, it never made it out of the badly-painted-hardly-coherent-stage of my ideation process.
The rhythm game idea, and the plants, seemed to resonate with the group. By our third meeting, the full-group-ideation resulted in a rhytm-based tower defense game á la Plants vs Zombies, where the shooting of the plants is tied to a sequencer instead of a set timer.
I was a bit more hyped about taking care of plants rather than making an iteration of an old classic, but this could also be fun. There are some design issues that need to be handled, however. How do we make sequencer patterns fun to interact with and responsive when editing them? How many columns of plants should we have? All this and more will be covered in an upcoming devlog, so stay tuned!
0 notes