-
-
Notifications
You must be signed in to change notification settings - Fork 217
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 multiplayer-bomber example. #910
Add multiplayer-bomber example. #910
Conversation
API docs are being generated and will be shortly available at: https://godot-rust.github.io/docs/gdext/pr-910 |
f2a0b02
to
d24ad70
Compare
Still getting this error on this pull request:
Additionally, for some reason the tile map isn't showing up properly
On further testing, this additional error popped up, which is probably a typo
|
ah, my bad – I forget to update property in the editor in the gdext project (done it only on a copy outside the repo 😬) output.mp4 |
3c3293e
to
68a6ff1
Compare
16fb1af
to
e4f6b4c
Compare
e4f6b4c
to
fe521ea
Compare
I changed some assets in cases where their source couldn't be properly determined and added proper information about license otherwise; I couldn't determine source of explosion.png and rock_bit.png but I do believe they were created specifically for this example. |
It seems that adding this example breaks gdext$ ./check.sh
> cargo fmt --all -- --check
> cargo clippy --all-targets --no-default-features -- -D clippy::suspicious -D clippy::style -D clippy::complexity -D clippy::perf -D clippy::dbg_macro -D clippy::todo -D clippy::unimplemented -D warnings
(…)
error[E0432]: unresolved imports `godot::classes::PhysicsRayQueryParameters2D`, `godot::classes::TileMap`
--> examples/multiplayer-bomber/rust/src/bomb.rs:8:30
|
8 | use godot::classes::{Area2D, PhysicsRayQueryParameters2D, TileMap};
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ no `TileMap` in `classes`
| |
| no `PhysicsRayQueryParameters2D` in `classes`
error[E0432]: unresolved imports `godot::classes::IMultiplayerSpawner`, `godot::classes::MultiplayerSpawner`
--> examples/multiplayer-bomber/rust/src/bomb_spawner.rs:11:22
|
11 | use godot::classes::{IMultiplayerSpawner, MultiplayerSpawner};
| ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ no `MultiplayerSpawner` in `classes`
| |
| no `IMultiplayerSpawner` in `classes`
error[E0432]: unresolved imports `godot::classes::ENetMultiplayerPeer`, `godot::classes::MultiplayerApi`
--> examples/multiplayer-bomber/rust/src/game_state.rs:16:22
|
16 | use godot::classes::{ENetMultiplayerPeer, Engine, Marker2D, MultiplayerApi};
| ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ no `MultiplayerApi` in `classes`
| |
| no `ENetMultiplayerPeer` in `classes`
error[E0432]: unresolved imports `godot::classes::AcceptDialog`, `godot::classes::ItemList`, `godot::classes::LineEdit`, `godot::classes::MultiplayerApi`, `godot::classes::Panel`
--> examples/multiplayer-bomber/rust/src/lobby.rs:14:5
|
14 | AcceptDialog, Button, Control, IControl, ItemList, Label, LineEdit, MultiplayerApi, Os, Panel,
| ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ no `Panel` in `classes`
| | | | |
| | | | no `MultiplayerApi` in `classes`
| | | no `LineEdit` in `classes`
| | no `ItemList` in `classes`
| no `AcceptDialog` in `classes`
error[E0432]: unresolved imports `godot::classes::AnimationPlayer`, `godot::classes::CharacterBody2D`, `godot::classes::ICharacterBody2D`, `godot::classes::MultiplayerApi`, `godot::classes::MultiplayerSynchronizer`
--> examples/multiplayer-bomber/rust/src/player.rs:16:5
|
16 | AnimationPlayer, CharacterBody2D, ICharacterBody2D, Label, MultiplayerApi,
| ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ no `MultiplayerApi` in `classes`
| | | |
| | | no `ICharacterBody2D` in `classes`
| | no `CharacterBody2D` in `classes`
| no `AnimationPlayer` in `classes`
17 | MultiplayerSynchronizer,
| ^^^^^^^^^^^^^^^^^^^^^^^ no `MultiplayerSynchronizer` in `classes`
error[E0432]: unresolved imports `godot::classes::AnimationPlayer`, `godot::classes::CharacterBody2D`
--> examples/multiplayer-bomber/rust/src/rock.rs:3:22
|
3 | use godot::classes::{AnimationPlayer, CharacterBody2D};
| ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ no `CharacterBody2D` in `classes`
| |
| no `AnimationPlayer` in `classes`
error[E0432]: unresolved imports `godot::classes::HBoxContainer`, `godot::classes::IHBoxContainer`
--> examples/multiplayer-bomber/rust/src/score.rs:4:22
|
4 | use godot::classes::{HBoxContainer, IHBoxContainer, Label};
| ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ no `IHBoxContainer` in `classes`
| |
| no `HBoxContainer` in `classes`
error[E0433]: failed to resolve: could not find `unsafe_inherits_transitive_MultiplayerSpawner` in `class_macros`
--> examples/multiplayer-bomber/rust/src/bomb_spawner.rs:62:20
|
62 | #[class(init, base=MultiplayerSpawner)]
| ^^^^^^^^^^^^^^^^^^ could not find `unsafe_inherits_transitive_MultiplayerSpawner` in `class_macros`
error[E0433]: failed to resolve: could not find `unsafe_inherits_transitive_CharacterBody2D` in `class_macros`
--> examples/multiplayer-bomber/rust/src/player.rs:23:20
|
23 | #[class(init, base=CharacterBody2D)]
| ^^^^^^^^^^^^^^^ could not find `unsafe_inherits_transitive_CharacterBody2D` in `class_macros`
error[E0433]: failed to resolve: could not find `unsafe_inherits_transitive_CharacterBody2D` in `class_macros`
--> examples/multiplayer-bomber/rust/src/rock.rs:7:20
|
7 | #[class(init, base=CharacterBody2D)]
| ^^^^^^^^^^^^^^^ could not find `unsafe_inherits_transitive_CharacterBody2D` in `class_macros`
error[E0433]: failed to resolve: could not find `unsafe_inherits_transitive_HBoxContainer` in `class_macros`
--> examples/multiplayer-bomber/rust/src/score.rs:26:20
|
26 | #[class(init, base=HBoxContainer)]
| ^^^^^^^^^^^^^ could not find `unsafe_inherits_transitive_HBoxContainer` in `class_macros`
error[E0412]: cannot find type `MultiplayerSpawner` in module `godot::classes`
--> examples/multiplayer-bomber/rust/src/bomb_spawner.rs:62:20
|
62 | #[class(init, base=MultiplayerSpawner)]
| ^^^^^^^^^^^^^^^^^^ not found in `godot::classes`
error[E0412]: cannot find type `CharacterBody2D` in module `godot::classes`
--> examples/multiplayer-bomber/rust/src/player.rs:23:20
|
23 | #[class(init, base=CharacterBody2D)]
| ^^^^^^^^^^^^^^^ not found in `godot::classes`
error[E0412]: cannot find type `CharacterBody2D` in module `godot::classes`
--> examples/multiplayer-bomber/rust/src/rock.rs:7:20
|
7 | #[class(init, base=CharacterBody2D)]
| ^^^^^^^^^^^^^^^ not found in `godot::classes`
error[E0412]: cannot find type `HBoxContainer` in module `godot::classes`
--> examples/multiplayer-bomber/rust/src/score.rs:26:20
|
26 | #[class(init, base=HBoxContainer)]
| ^^^^^^^^^^^^^ not found in `godot::classes`
Some errors have detailed explanations: E0412, E0432, E0433.
For more information about an error, try `rustc --explain E0412`.
error: could not compile `multiplayer-bomber` (lib) due to 15 previous errors
warning: build failed, waiting for other jobs to finish...
error: could not compile `multiplayer-bomber` (lib test) due to 15 previous errors
=====================
gdext: checks FAILED.
===================== I'm not sure how should I proceed in this case. |
- Add comment clarifying purpose of usage of the `experimental-godot-api` feature
closed in favor of godot-rust/demo-projects#1 |
closes: #903
A demo adapted from: https://github.com/godotengine/godot-demo-projects/tree/master/networking/multiplayer_bomber
I took few liberties, mostly related to caching references to nodes in the scene tree by using OnReady, using signals instead of parsing tree in
process
, and declaring gamestate autoload as engine singleton.