Initial Version
Game Development Indepth of "Into the Nickyverse"
This game was made for the Nickyboi Art Contest with a time limit of about 1.5 months (It used to be about 1 month, but it was delayed multiple times).
I wanted to try and make a game for the contest as I have been wanting to make a game for a while now. I had also been fiddling around with the Godot game engine for it being relatively easy to use and being free to use.
There was no basic Idea for the game when starting out, but it eventually formulated into what it is now.
Starting Area
Creating the Starting Area
This would be the first area that you start into at the beginning of the game. It also has a bunch of different easter eggs which reference different things that are either related to Nicky or something funny (even though the player would only be in this area for a few minutes).
It was difficult determining how to create the overall design of this area and add in all of the different details that I wanted. The first idea that came to mind was using the CSG shapes that come built in with the Godot game engine. These shapes come with options which can allow for automatic collision so I would not have to add in a collision shape automatically and can be adjusted to any shape for different needs. However, the Godot game engine is not the best game engine for 3D games and is mostly used to create 2D games. This means that putting in too many CSG shapes could greatly impact the performance of the starting area. This issue required me to rethink how I could create the starting area and then it hit me. 3D sprites.
3D sprites are a special version of the regular sprite in the Godot 2D which can allow for a 2D image to easily be put into a 3D space. Since the sprites do not need the same processing power as CSG shapes it allows me to create multiple different sprites with different textures without affecting the performance. Also, with help from the Godot node system, I can add in both a static body and a collision shape into the sprite, so it acts similarly to a 3D object. This allowed me to create the starting area mostly out of 3D sprites (this included the walls, doors, ceiling, the papers, and other smaller details) with only a few independent CSG shapes to create the computer table, tube, elevator, mug, and sleeping bag.
Interact System
While creating the area I thought about adding in pages which the player can read to learn a little bit more about what was happening. It would also allow for the player to interact with doors and any other interactable items. Initially I did not know how to implement an interact system, but after looking at a tutorial from "Code with Tom" (Interactable Objects in Godot - Make an FPS in Godot Part 3 - YouTube) I was able to get a working interact system.
This system works by having a ray cast which comes out of the player's head. The ray cast has a code to determine if an object colliding with the ray cast is an "interactable" which is a class named code. I did alter the code for the tutorial so that I could use it to create codes which inherited the "interactable" code to perform different functions for different objects when the interact button is pressed. This on its own was mostly simple, but it took a lot of time adjusting and getting all of the functions to work properly. There was also a small issue with a part of the code from the tutorial where it uses the "OS" code system to access special operations within a computer that would change the text of the interact label to what you were looking at. It would not work properly no matter how many times I would change it and the game would stop automatically each time I tried to interact with an object that had the "interactable" code. This is most likely due to a lack in knowledge for Godot and I eventually took out the piece of code as it was not as necessary to have the interact label show what the player was looking at.
Visual Novel Section
Title Screen
After the starting area of the game, you are taken to the title screen of the Visual Novel. This section is its own independent scene that will go to the main Visual Novel scene once the start button is pressed and an exit button if someone wants to exit the game. There are also some little easter eggs that make the game look more official and not at the same time. There used to be an unfinished title card which was going to be used in the final version of the game due to the time constraints of the contest. However due to the delays, the title card was able to be redone to look more impactful and fun.
Visual Novel
This was where the main meat of the game was. Most of the time was spent on getting the dialog systems and transitions to work properly. The dialog system which was used was based on a video by "Pneuma" (How To Make a Visual Novel in Godot - YouTube) needed to work as smoothly as possible to not cause issues for the player while transitioning through the text.
How the dialog system worked is that there were two scripts, one held the dialog and the other displayed it. The script that held the dialog had a variable called Dialog_1 which was an array with each element being a line of dialog which would be displayed. Each element of the array also held information about the name of the character talking, the emotion of the sprite, and the location of the sprite on screen. The second script would then use Dialog_1 to go through each element and display the text. Once the text was finished it would wait for player input before going on to the next element in the array. Also, the elements had a special category called choice which allowed for options to be added into the text. Each choice once selected would go to a new variable in the script where it showed the text for that choice. Once the text finished it would allow for the next event to occur which I will talk about later.
After the text was able to transition without issue, I went to work on the background and the Nickyboi sprites. These were very important to help tell the story of the novel and to improve presentation (Also the placeholder for the background and sprite was a McDonalds bathroom and a broken wooden door texture.)
For the background, I based it on the background for Nickboi's room in the FNF mod made by Nickyboi (Vs. The Nicky-Verse - Definitive Edition [Friday Night Funkin'] [Mods] (gamebanana.com)). The background from the mod is what also inspired the main conflict for the game as I thought it would be funny that sunny was duck taped up was because she would cause mass havoc. For the sprites I had to create a few expressions which could be used in the dialog system to emphasize specific talking events which were Neutral, Talk, and Tired. The sprites were not that difficult to make as I was able to reuse the body and create different faces for each expression. Also, there is no sprite for the player as I wanted it to feel like the player was being there themselves even though the player character does talk.
Ending
For the ending of the game once you go through the final text option the game transitions to the finial screen which is something I will keep secret for anyone that wants to see for themselves.
Overall Thoughts
This game was supposed to be much larger, but ultimately this is all I could do in the allotted time frame. Though the finished product was something that I was proud of as I had wanted to use the Godot game engine before wanting to make a game but couldn't because the scope of the game that I wanted to make seemed too big for my capabilities. Now after making this, I understand what I can and cannot do as well as understand the Godot game engine much better.
I never did win the contest as there were many good art pieces, but it was a good learning experience and I want to work more on the game to get the vision that I originally had for it. However, the first part of the game I am going to tackle is optimization as that will make it easier to quickly add in changes and adjustments if needed. The major parts, after looking over the game, that are unoptimized included the . . .
- Dialog System: The system served its purpose for the single line of dialog, but the display code can only work in the scene that it is in, and I want to make it so that the code can easily be added into any scene. Also, the dialog does not need to be in a script variable as that decreases the performance of the game and makes it very easy to get errors in the code for simple spelling errors. That is why it would be better to put the information of the dialog in a file which the game can read from and can be called to by the scene that needs it.
- Interact System: Even though there is little time spent in the 3D beginning part of the game, there might be a part where the player goes back to a scene similar to that and I want to make sure that I can make the use of the interact be as intuitive as it can.
- Window Sizing: This was an issue that bothered me very much while making the game as I needed to adjust all of the UI elements to work with a full screen, but then it would not work for any other size screen. (I later found out that this problem could be solved by enabling screen scaling in the project settings and now I feel a little silly.)
There might be different versions of the game that will be put out as I optimize the different systems, but a major update might not be for a while due to having school to do as well as other things. But hopefully it will be something that people can enjoy.
Oh, and here is a Little Bee Boi as a bonus
I think that is all for now.
Leave a comment
Log in with itch.io to leave a comment.