mirror of
https://github.com/thegatesbrowser/thegates.git
synced 2025-08-22 23:17:26 -04:00
add cursor rules and cursorignore, update godot repo
This commit is contained in:
parent
ece18c017c
commit
a8ba66d73e
4 changed files with 120 additions and 1 deletions
21
.cursor/rules/godot-cursorrules-LICENSE
Normal file
21
.cursor/rules/godot-cursorrules-LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2025 BlueBirdBack ✨
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
82
.cursor/rules/godot-cursorrules.mdc
Normal file
82
.cursor/rules/godot-cursorrules.mdc
Normal file
|
@ -0,0 +1,82 @@
|
|||
---
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# Godot 4.4 Game Development .cursorrules
|
||||
|
||||
## Core Development Guidelines
|
||||
|
||||
- Use strict typing in GDScript for better error detection and IDE support
|
||||
- Implement \_ready() and other lifecycle functions with explicit super() calls
|
||||
- Use @onready annotations instead of direct node references in \_ready()
|
||||
- Prefer composition over inheritance where possible
|
||||
- Use signals for loose coupling between nodes
|
||||
- Follow Godot's node naming conventions (PascalCase for nodes, snake_case for methods)
|
||||
|
||||
## Code Style
|
||||
|
||||
- Use type hints for all variables and function parameters
|
||||
- Document complex functions with docstrings
|
||||
- Keep methods focused and under 30 lines when possible
|
||||
- Use meaningful variable and function names
|
||||
- Group related properties and methods together
|
||||
|
||||
## Naming Conventions
|
||||
|
||||
- Files: Use snake_case for all filenames (e.g., player_character.gd, main_menu.tscn)
|
||||
- Classes: Use PascalCase for custom class names with class_name (e.g., PlayerCharacter)
|
||||
- Variables: Use snake_case for all variables including member variables (e.g., health_points)
|
||||
- Constants: Use ALL_CAPS_SNAKE_CASE for constants (e.g., MAX_HEALTH)
|
||||
- Functions: Use snake_case for all functions including lifecycle functions (e.g., move_player())
|
||||
- Enums: Use PascalCase for enum type names and ALL_CAPS_SNAKE_CASE for enum values
|
||||
- Nodes: Use PascalCase for node names in the scene tree (e.g., PlayerCharacter, MainCamera)
|
||||
- Signals: Use snake_case in past tense to name events (e.g., health_depleted, enemy_defeated)
|
||||
|
||||
## Scene Organization
|
||||
|
||||
- Keep scene tree depth minimal for better performance
|
||||
- Use scene inheritance for reusable components
|
||||
- Implement proper scene cleanup on queue_free()
|
||||
- Use SubViewport nodes carefully due to performance impact
|
||||
- Provide step-by-step instructions to create Godot scene(s) instead of providing scene source code
|
||||
|
||||
## Signal Best Practices
|
||||
|
||||
- Use clear, contextual signal names that describe their purpose (e.g., player_health_changed)
|
||||
- Utilize typed signals to improve safety and IDE assistance (e.g., signal item_collected(item_name: String))
|
||||
- Connect signals in code for dynamic nodes, and in the editor for static relationships
|
||||
- Avoid overusing signals - reserve them for important events, not frequent updates
|
||||
- Pass only necessary data through signal arguments, avoiding entire node references when possible
|
||||
- Use an autoload "EventBus" singleton for global signals that need to reach distant nodes
|
||||
- Minimize signal bubbling through multiple parent nodes
|
||||
- Always disconnect signals when nodes are freed to prevent memory leaks
|
||||
- Document signals with comments explaining their purpose and parameters
|
||||
|
||||
## Resource Management
|
||||
|
||||
- Implement proper resource cleanup in \_exit_tree()
|
||||
- Use preload() for essential resources, load() for optional ones
|
||||
- Consider PackedByteArray storage impact on backwards compatibility
|
||||
- Implement resource unloading for unused assets
|
||||
|
||||
## Performance Best Practices
|
||||
|
||||
- Use node groups judiciously for managing collections, and prefer direct node references for frequent, specific access to individual nodes.
|
||||
- Implement object pooling for frequently spawned objects
|
||||
- Use physics layers to optimize collision detection
|
||||
- Prefer packed arrays (PackedVector2Array, etc.) over regular arrays
|
||||
|
||||
## Error Handling
|
||||
|
||||
- Implement graceful fallbacks for missing resources
|
||||
- Use assert() for development-time error checking
|
||||
- Log errors appropriately in production builds
|
||||
- Handle network errors gracefully in multiplayer games
|
||||
|
||||
## TileMap Implementation
|
||||
|
||||
- TileMap node is deprecated - use multiple TileMapLayer nodes instead
|
||||
- Convert existing TileMaps using the TileMap bottom panel toolbox option "Extract TileMap layers"
|
||||
- Access TileMap layers through TileMapLayer nodes
|
||||
- Update navigation code to use TileMapLayer.get_navigation_map()
|
||||
- Store layer-specific properties on individual TileMapLayer nodes
|
16
.cursorignore
Normal file
16
.cursorignore
Normal file
|
@ -0,0 +1,16 @@
|
|||
# Exclude large third-party engine submodule and binaries
|
||||
godot/**
|
||||
|
||||
# Godot caches and import artifacts
|
||||
**/.godot/**
|
||||
**/.import/**
|
||||
**/*.import
|
||||
|
||||
# VCS and editor metadata
|
||||
**/.vscode/**
|
||||
|
||||
# Compiled objects, libraries, and archives (keep ones not in default list)
|
||||
**/*.o
|
||||
**/*.a
|
||||
**/*.dylib
|
||||
**/*.class
|
2
godot
2
godot
|
@ -1 +1 @@
|
|||
Subproject commit b798ad4ef85fe16cb2a69a87e7f90d4b41582667
|
||||
Subproject commit feb85b49cdc7af919014315d37ce3af93a3b31c2
|
Loading…
Add table
Add a link
Reference in a new issue