# Godot Simple Intro
by Bogay
---
# $whoami
- Bogay @ NTNU CSIE
- Game client / Backend / SRE
- 2D art
- Open source
---
# Why Godot?

1. Open source & Free
2. Lightweight
3. Programming Language Diversity
----
# Open Source & Free
- Free to use & modify
- No license fee
- Community driven
- Many free & open assets
----
# Community Driven

----
# Community Driven
[Godot Improvement Proposals](https://github.com/godotengine/godot-proposals#rules-for-submitting-a-proposal)
> All proposals must be linked to a substantive use-case. In justifying your proposal, it is not enough to say it would be "nice" or "helpful". Use the template to show how Godot is not currently meeting your needs and then explain how your proposal will meet a particular need.
----

----
There should be a real-world use-case.
----
# Lightweight
- Engine executable: ~ 100 MB
- Empty project: < 1 MB
- Low hardware requirement
----
# Programming Language
- GDScript
- C#
- [C++](https://github.com/godotengine/godot-cpp)
- GDNative / GDExtension
---
# [godot-rust](https://github.com/godot-rust/godot-rust)

*godot-rust is a Rust library that implements native bindings for the Godot game engine.*
----
# Example
```rust=
use gdnative::prelude::*;
#[derive(NativeClass)]
#[inherit(Node)]
pub struct HelloWorld;
#[methods]
impl HelloWorld {
fn new(_base: &Node) -> Self {
HelloWorld
}
#[method]
fn _ready(&self, #[base] _base: &Node) {
godot_print!("Hello, world.");
}
}
fn init(handle: InitHandle) {
handle.add_class::<HelloWorld>();
}
godot_init!(init);
```
----
# Pros
## Performance & Reliability
- Native / No GC
- Strong typing
- Memory safety
- Fearless concurrency
----
# Pros
## Ecosystem
- serde - serialization
- Bevy - ECS game engine
- glam - linear algebra
- better dev tools
----
# Cons
- Hard
- Need to write a little more code
---
# Links
- 2D 遊戲開發,除了 Unity 你還可以考慮試試 Godot!以《文字遊戲》為例([錄影](https://youtu.be/VX7i7TNSm88)、[共筆](https://hackmd.io/@samuel-t-chou/rkLdMQyhq))
- [Rust binding for GDExtension](https://github.com/godot-rust/gdextension)
{"metaMigratedAt":"2023-06-17T13:37:20.979Z","metaMigratedFrom":"YAML","title":"Godot Simple Intro","breaks":true,"contributors":"[{\"id\":\"a2575dc3-dda4-43fc-b422-5238bbb1fc34\",\"add\":2867,\"del\":449}]"}