-
-
Notifications
You must be signed in to change notification settings - Fork 263
Add multiplayer-bomber example. #910
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
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.