-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add game features, update graphics #12
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks pretty good, mostly very minor points, and some may not make sense - I'm guessing some things about how Godot works...
*.png | ||
*.jpg |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we discussed this before, but don't we want include these artifacts to ensure the reproducibility of the project?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They are not included for the same reason as the .csv
, .ogg
, and .obj
files, which is that they can be large and take up too much space in the repo.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are they all large? I think we need to find some solution to this. Can you post some information about file sizes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.csv
points.csv
is 222KBtank10.csv
is 223MB (large)tworoom10msht.csv
is 28MB
.obj
GeigerCounter.obj
is 3MBTwoRoomModel.obj
is 43KB
.ogg
geigercounter.ogg
is 6 KB
.jpg
- In total, the
textures
folder is 18.5MB - Each
.jpg
ranges from 0.4MB to 2MB, and there are 4.jpg
used for each PBR texture. There are currently 5 PBR textures in game.
The fonts
folder is 451KB.
Another thing to consider is that the .git
folder will become very large if there are ever any changes made to these large binary files.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah... a little larger than we'd like and I don't want to get into git large file stuff...
That said, we would like to have an easy way for someone else to replicate this. We can host these files somewhere and have a step to download and unpack them into the right place.
We may also want to think about how we separate them out. For example, I could imagine building a library of textures (jpg) and sounds (ogg), but the geometry (obj) and rad data (csv) are unique to a particular case.
Closes #6, #8, #9, #11.
New Features
Main Menu Screen
Level Select Screen
Loading Screen
.csv
file into an array takes a relatively large amount of time).csv
file takes up most of the time and it happens first)Pause Screen
Objectives
For Level 1, there are two objectives:
Completing an objective will cause a notification to be displayed and will mark the objective as completed in the Pause Screen
End Screen
Models
Code Review
General thoughts:
Main
scene's name toLevel1
since the new default scene is theMainMenu
scene.onready var
for the paths to certain nodes. This is to increase readability and also performance because we only have to find the node once at the start.GeigerViewport.gd
because I realized that the tutorial I followed for 3D Labels was outdated andLabel3D
exists starting in Godot 3.5 (the version I'm using)Global.gd
Global.go_to_scene("...")
load_scene()
loads a scene in the background while displaying the loading screen. Used for loading in scenes with radiation maps that need data from.csv
files (since they load slowly)go_to_scene()
switches to a scene directly without showing the loading screen. The deferred method is there just to make sure that nothing is running when we try to switch the current scene.MainMenu.gd
The reason why we don't call
get_tree().quit()
in the_on_QuitButton_pressed()
function and instead send a notification so that the game quits in the_notification()
function is because in the future, we might want to do things before we quit, such as saving Player data and whatnot.ObjNotif.gd
This uses an array as a queue to store all the objectives because it's possible for the player to complete multiple objectives at the same time. Without the queue, only the first objective completed will send a notification, and the other objective notifications won't be shown. This could be updated in the future to use a
ScrollContainer
so that multiple objectives can be shown at once.Player.gd
Removed the
GC_click_sound
variable because it wasn't used in this script, so its existence seemed arbitrary. Don't worry, it's been added toLevel1.gd
since that's where it was actually being used.text_theme.tres
This is a
Theme
that I'm using for the buttons inMainMenu
andLevelSelect
. Originally, this was so that I could reuse the same theme in different scenes, but then I realized that I could just copy and paste themes across different scenes, so I didn't save any more of my themes as.tres
. This could be removed if necessary, it would just take a little bit of effort to remake the theme and not save it.Thoughts, Questions
Modularity
Previously, there was the idea of being able to plug in
.csv
files into the game in order to simulate different radiation situations. After texturing the TwoRoom model, I do not think this is a feasible idea without some advanced infrastructure to generate the associated models, textures, and collisions in Godot. This is because the.csv
file will get you the radiation map, but it doesn't have any information about the collisions (which must be done in Godot), model, or textures.Quit, LevelSelect Buttons
Currently, the Quit and Level Select Buttons have similar functionalities wherever they are. Should they be made into their own scenes for more modularity and not having to repeat these functions in other scenes? Currently, they are being used in the
MainMenu
,PauseScreen
, andLvlCompleteScreen
scenes, and it's unlikely they will be used in another scene. Also, making them scenes means 2 extra scripts and scenes.Final Remarks
If anyone has any ideas about what I should add to the game, please add a draft or issue in the GitHub Project.