Skip to content

Commit 88ddc3a

Browse files
food-pleaseNathanLovato
authored andcommitted
feat: rewrite movement for Godot 4
1 parent e181ec3 commit 88ddc3a

File tree

413 files changed

+2881
-11168
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

413 files changed

+2881
-11168
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ mono_crash.*.json
2020
/visuals
2121
/audio
2222
/godot/debug/save
23+
.godot/

CHANGELOG.md

Lines changed: 9 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -1,157 +1,19 @@
11
# Changelog
22

3-
## [UNRELEASED] v0.4.0: Quests 📃🖋
3+
## v0.1.0 Project Demo 🏃 2023-05-19
44

55
### New
66

7-
#### Quest system
7+
The initial demo is to verify the direction of the 4.0 rewrite. The codebase is rewritten from scratch, being refactored to include Godot 4 updates as well as GDQuest best practices.
88

9-
- Start, complete quests, and have multiple objectives per quest
9+
This first demo tackles player movement throughout the gameworld. This is accomplished primarily via Godot's built-in physics engine, which is used to govern "where everything is and may be".
1010

11-
#### core
11+
Gamepiece movement is grid-based (as in the original Final Fantasy and similar games) and concurrent (gamepieces may move simultaneously). The player may move via gamepad, touch screen, or mouse + keyboard. The source code is documented and should provide a robust starting point for any RPG or Roguelike.
1212

13-
- Save and Load the game: currently only for party members
13+
Please turn on 'Debug/Visible Collision Shapes' in the editor to better see where everything is located on the grid.
1414

15-
### Fixes
15+
### Changes
1616

17-
- Fixed jerky move animation the first time a Pawn moves on the map
18-
- Only start interaction when clicking on the NPCs' area
19-
20-
### Source code
21-
22-
- Split GrowthStats and CharacterStats
23-
- Added docstrings to a number of files and methods in the codebase, to help understand the code a little better
24-
25-
## v0.3.0: Motion and Dialogues 😮💬
26-
27-
### New
28-
29-
#### Battle system
30-
31-
- Added support for extensible AI on battlers, allowing the ability to craft custom AI on a per enemy type/character basis.
32-
- Mouse and touch controls
33-
34-
#### Map
35-
36-
- Leader and followers now reflect the player's party's size
37-
- Touch controls with pathfinding
38-
- NPCs now have two interaction modes and look directions: they can be triggered by walking in an area around them or by pressing space in front of them
39-
- Characters on the map now have a dedicated skin and animations so characters reflect the party
40-
41-
#### Dialogues
42-
43-
- Character database: you can now reference a character and an expression by name when writing dialogues
44-
- Portrait: the dialogue box displays full-body portraits of the characters
45-
- The player's spawning point now displays as a rectangle
46-
47-
#### Interface
48-
49-
- CircularMenu: open and close animations
50-
- Added an interface to represent the characters' turn order in combat
51-
52-
#### Core
53-
54-
- Skills can now be unlocked as characters gain levels. Change the `level` property of the `Skill` to set the unlock level
55-
- Pathfinder class to find the path between two points with AStar
56-
57-
#### Art
58-
59-
- Added map sprites for Robi and Godette
60-
- Added a simple tileset for the grasslands
61-
62-
#### Tools
63-
64-
- RectExtents: a node to represent an animated character's bounding box/touch area
65-
- Manipulator to edit RectExtents (BattlerAnim bounding boxes) directly on the 2d canvas
66-
67-
### Changed
68-
69-
- Updated to Godot 3.1 alpha 3
70-
- Nicholas simplified and restructured the Battlers and Party members' code to make it more robust and easier to understand. Now the `Battler` delegates more calculations and logic to `CombatAction`
71-
- Party Members now have a battler attached to them
72-
- Increased the map's size
73-
74-
#### Code structure
75-
76-
- Improved the Grid's code
77-
- Refactored the grid, pawns, battlers and party to make the code easier to follow
78-
- Added docstrings to a few GDScript files
79-
- Cleaned up and removed unused functions and files
80-
81-
### Fixes
82-
83-
- A skill that misses will now still reduce the battler's mana
84-
- The link to the Code of Conduct in the readme is now correct
85-
- Fixed a bug with life bars where if your max hp is higher than 100, the bar wouldn't be properly filled all the way
86-
- Fixed death animation not playing when a battler dies
87-
- Fixed touch input sometimes passing through buttons
88-
- Fixed jerky animation when moving the player's pawn on the map
89-
- Fixed skills learned by characters at the wrong level
90-
91-
## v0.2.0: Better Encounters ⚔🌟 - 2018-12-01
92-
93-
This version brings a lot of new features and improvements to the project's codebase thanks to the help of @godofgrunts, @nhydock, @salvob41, @MarianoGnu, @henriiquecampos, and @guilhermehto! We did at least twice as much as we planned thanks to everyone's help 😄
94-
95-
### New
96-
97-
#### Battle system
98-
99-
- Basic skill system. Allows to create special attacks, magic, etc.
100-
- CombatAction for skills
101-
- Simple menu to select CombatActions: Attack, Skill, etc.
102-
- Skills can be executed on a given probablity
103-
- Character growth
104-
- Experience points are awarded at the end of battle to gain levels
105-
- The value of the characters' stats is based on Godot's curves
106-
- Battle Formations for monsters and the player's party, based on .tscn files
107-
- Added support for multiple targets. The interface to do it from the game is not available yet but you can now pass pass multiple targets to any combat action/command and it will affect all of them
108-
- Animated pop-up labels. They show how much damage a character to took or how much mana someone lost. There's also animations ready for healing effects.
109-
- The battlers now have a bounding rectangle based on the RectExtents node: we use it to place the interface or to determine the size of a character
110-
111-
#### Core
112-
113-
- Inventory and items: also manages the party's currency
114-
- Persistent data between the combat and the map: after an encounter, the experience and items the characters earned gets transfered to the Party. This will allow us to add savegame support
115-
116-
#### Map
117-
118-
- Grid-based character movement
119-
- Follower pawns follow the leader or playable one with a one-step delay
120-
- Dialogue system
121-
122-
#### User Interface
123-
124-
- Mana bars
125-
- Circular menu: a radial menu you can use for battle, for the character to pick one of multiple CombatActions to use on its opponent. E.g. attack, a specific skill...
126-
- Rewards screen: old-school, time-based rewards screen
127-
128-
#### Art
129-
130-
Added sprites for Godette, Robi, the porcupine, and the grasslands battle background sprites. There's also the first combat icon for Robi's base attack, the bilboshot.
131-
132-
None of the art is animated yet.
133-
134-
#### Audio
135-
136-
There is now a battle theme and a placeholder victory fanfare
137-
138-
### Changed
139-
140-
- Characters and Monsters now have mana
141-
- Enemies now have a small chance of choosing the target with the lowest health; otherwise, they randomly choose targets
142-
- Fixed job node duplicating itself with the tool mode
143-
- Refactored the initialize loop and getting battlers
144-
- Fixed incorrect indentation in Battler.gd
145-
- Improved Data persistence in and out of combat
146-
- Added some asserts in the code to help with debugging
147-
148-
## v0.1.0: Combat prototype ⚔ - 2018-11-04
149-
150-
Base combat prototype: the characters can only attack in a turn-based fashion. Health, damage, target selection, and winning and losing the fight are all present in a basic form.
151-
152-
### New
153-
154-
- Link to the contributor's guide on GDquest
155-
- Note about static typing in Godot 3.1 in the README
156-
- Note about maintainers refactoring PRs for stylization or educational purposes in the README
157-
- Initial game concept, goal, story, mechanics (combat system), characters, aesthic choice, world information, technologies used, and prototypes to game_concept.md
17+
- Changed game assets to use Kenney's Tiny Town set. The art is upscaled 5x in-game.
18+
- Updated the changelog and reset the versioning, as this is essentially a new project.
19+
- Added a credits file providing attribution to project assets.

CREDITS.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Credits for external assets.
2+
3+
Tiny Series (Tiny Town & Tiny Dungeon)
4+
Author: Kenney
5+
URL: https://kenney.nl/assets/tiny-town & https://kenney.nl/assets/tiny-dungeon (accessed 2023-02-22)
6+
License: [CC0](https://creativecommons.org/publicdomain/zero/1.0/)
7+
8+
Tiny Town - Animated Characters
9+
Author: food_please; derived from Tiny Town (Kenney) & DawnLike (DragonDePlatino)
10+
URL: N/A
11+
License: [CC0](https://creativecommons.org/publicdomain/zero/1.0/)
12+
13+
Please see the [license](LICENSE).

README.md

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
1-
# Godot Open RPG
1+
# Godot 4 Open RPG
22

3-
![Godot Open RPG banner](img/Open-RPG.png)
3+
![Godot Open RPG banner](media/Open-RPG.png)
44

55
OpenRPG is a tool and a demo to create Role Playing Games with turn-based combat.
66

77
➡ Follow us on [Twitter](https://twitter.com/NathanGDQuest) and [YouTube](https://www.youtube.com/c/gdquest/) for free game creation tutorials, tips, and news! Get one of our [Godot game creation courses](https://gdquest.mavenseed.com/courses) to support our work on Free Software.
88

9-
_Looking for a Zelda-like game? Check out our [Open Source A-RPG demo](https://github.com/GDquest/make-pro-2d-games-with-godot/)._
9+
## Project Goal
1010

11-
![Combat system screenshot](https://i.imgur.com/RvrBrvR.jpg)
11+
The goal of this project is to provide the gamedev community with a demo that shows how game systems work together in a complete 2D Godot game demo.
1212

13-
## Our mission
13+
The demo draws inspiration from RPG Maker and older JRPGs like Final Fantasy or Dragon Quest as well as the Godot 3 OpenRPG.
14+
15+
Throughout the project, heavy emphasis is to be placed on code that is...
16+
17+
- Updated to take advantage of what GDScript 4 has to offer.
18+
- Simple, to best serve as a starting point for those diving into the project.
19+
- Made to conform to GDQuest's [GDScript guidelines](https://gdquest.gitbook.io/gdquests-guidelines/godot-gdscript-guidelines).
20+
21+
## Our Mission
1422

1523
Together, we're creating a codebase and tools to show you some of the best practices to create:
1624

@@ -22,12 +30,8 @@ Together, we're creating a codebase and tools to show you some of the best pract
2230

2331
And more! Do you want to contribute and improve your programming skills with Godot? Check out the open issues, suggest improvements and report bugs by opening new ones, and be sure to check the contributing guidelines below.
2432

25-
### The current project's scope
26-
27-
Our initial goal is to create a mini-demo with the full combat loop, character experience, skills, some pretty art, and basic map navigation and conversation with NPCs.
28-
2933
## Contributing Guidelines
3034

3135
All contributors are welcome 🙂. To ensure a smooth and a productive experience for everyone working together, we came up with some guidelines we all follow here.
3236

33-
Check our [Contributors Guide](https://www.gdquest.com/docs/guidelines/contributing-to/gdquest-projects/) for more information 😄
37+
Check our [Contributors Guide](https://gdquest.gitbook.io/gdquests-guidelines/contributing-to-gdquest-projects/) for more information 😄
279 Bytes
Binary file not shown.
1.18 KB
Loading
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[remap]
2+
3+
importer="texture"
4+
type="CompressedTexture2D"
5+
uid="uid://doea2mk0aaedo"
6+
path="res://.godot/imported/character_generic.png-3a713b03097983e6fd591ab469a0af67.ctex"
7+
metadata={
8+
"vram_texture": false
9+
}
10+
11+
[deps]
12+
13+
source_file="res://assets/characters/character_generic.png"
14+
dest_files=["res://.godot/imported/character_generic.png-3a713b03097983e6fd591ab469a0af67.ctex"]
15+
16+
[params]
17+
18+
compress/mode=0
19+
compress/high_quality=false
20+
compress/lossy_quality=0.7
21+
compress/hdr_compression=1
22+
compress/normal_map=0
23+
compress/channel_pack=0
24+
mipmaps/generate=false
25+
mipmaps/limit=-1
26+
roughness/mode=0
27+
roughness/src_normal=""
28+
process/fix_alpha_border=true
29+
process/premult_alpha=false
30+
process/normal_map_invert_y=false
31+
process/hdr_as_srgb=false
32+
process/hdr_clamp_exposure=false
33+
process/size_limit=0
34+
detect_3d/compress_to=1

assets/characters/gobot_field.png

1.21 KB
Loading
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[remap]
2+
3+
importer="texture"
4+
type="CompressedTexture2D"
5+
uid="uid://4ua1ohn2tllf"
6+
path="res://.godot/imported/gobot_field.png-5f823b51a69fe9b11b884401a88434b5.ctex"
7+
metadata={
8+
"vram_texture": false
9+
}
10+
11+
[deps]
12+
13+
source_file="res://assets/characters/gobot_field.png"
14+
dest_files=["res://.godot/imported/gobot_field.png-5f823b51a69fe9b11b884401a88434b5.ctex"]
15+
16+
[params]
17+
18+
compress/mode=0
19+
compress/high_quality=false
20+
compress/lossy_quality=0.7
21+
compress/hdr_compression=1
22+
compress/normal_map=0
23+
compress/channel_pack=0
24+
mipmaps/generate=false
25+
mipmaps/limit=-1
26+
roughness/mode=0
27+
roughness/src_normal=""
28+
process/fix_alpha_border=true
29+
process/premult_alpha=false
30+
process/normal_map_invert_y=false
31+
process/hdr_as_srgb=false
32+
process/hdr_clamp_exposure=false
33+
process/size_limit=0
34+
detect_3d/compress_to=1

assets/characters/knight.atlastex

277 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)