Repository: GDquest/godot-slides
Branch: master
Commit: 79d6d3590819
Files: 198
Total size: 39.5 MB
Directory structure:
gitextract_hsveppvz/
├── .gitignore
├── LICENSE
├── README.md
└── godot-3-presentation/
├── assets/
│ └── theme/
│ ├── fonts/
│ │ ├── CJK/
│ │ │ └── NotoSansCJKjp-Medium.otf
│ │ ├── code_source_pro_18.tres
│ │ ├── default_noto_30.tres
│ │ ├── subtitle_montserrat.tres
│ │ ├── subtitle_noto.tres
│ │ ├── title_montserrat.tres
│ │ └── title_noto.tres
│ ├── godot.theme
│ └── sprites/
│ ├── footer_dusk.png.import
│ └── header_dusk.png.import
├── content/
│ ├── demos/
│ │ └── attacks/
│ │ ├── AttackDummies.tscn
│ │ ├── characters/
│ │ │ ├── Character.tscn
│ │ │ ├── body.png.import
│ │ │ ├── character.gd
│ │ │ ├── debug/
│ │ │ │ ├── direction/
│ │ │ │ │ ├── DirectionVisualizer.tscn
│ │ │ │ │ ├── arrow.png.import
│ │ │ │ │ └── direction-visualizer.gd
│ │ │ │ ├── source-code-pro-bold.otf
│ │ │ │ └── state-visualizer.gd
│ │ │ ├── health.gd
│ │ │ ├── monster/
│ │ │ │ ├── Dummy.tscn
│ │ │ │ └── dummy.png.import
│ │ │ ├── player/
│ │ │ │ ├── Player.tscn
│ │ │ │ ├── body.png.import
│ │ │ │ └── player.gd
│ │ │ ├── shadow.png.import
│ │ │ └── weapon/
│ │ │ ├── Sword.tscn
│ │ │ ├── sword-stick.png.import
│ │ │ ├── sword.gd
│ │ │ ├── sword.png.import
│ │ │ └── weapon-pivot.gd
│ │ ├── default_env.tres
│ │ ├── global-constants.gd
│ │ ├── icon.png.import
│ │ └── vfx/
│ │ ├── PoisonBubbles.tscn
│ │ └── poison-bubble.png.import
│ ├── open_source_games/
│ │ ├── MakingOpenSourceGames.csv
│ │ ├── MakingOpenSourceGames.csv.import
│ │ ├── MakingOpenSourceGames.en.translation
│ │ ├── MakingOpenSourceGames.ja.translation
│ │ ├── MakingOpenSourceGames.tscn
│ │ ├── ThankYou.tscn
│ │ ├── img/
│ │ │ ├── blender-open-movie.jpg.import
│ │ │ ├── code-guidelines-1.png.import
│ │ │ ├── code-guidelines-2.png.import
│ │ │ ├── contributor-review-2.png.import
│ │ │ ├── contributor-review.png.import
│ │ │ ├── discord-openrpg.png.import
│ │ │ ├── gdquest-github-profile.png.import
│ │ │ ├── krita.png.import
│ │ │ ├── ks-campaign.png.import
│ │ │ ├── open-arpg-demo.png.import
│ │ │ ├── openrpg-0.3-combat.png.import
│ │ │ ├── openrpg-contributions-community.png.import
│ │ │ ├── thumbnail.jpg.import
│ │ │ └── yt-videos.png.import
│ │ └── slides/
│ │ ├── HowCrowdfunding.tscn
│ │ ├── HowEmpoweringCommunity.tscn
│ │ ├── HowKrita.tscn
│ │ ├── HowSupportiveCommunity.tscn
│ │ ├── MakingGamesTogether.tscn
│ │ ├── OpenGameProjects.tscn
│ │ ├── OpenSourceGamesTitle.tscn
│ │ ├── WeMakeFreeContent.tscn
│ │ ├── WhyCodebase.tscn
│ │ └── WhySharingKnowledge.tscn
│ ├── power_pitch/
│ │ ├── PowerPitch.csv
│ │ ├── PowerPitch.csv.import
│ │ ├── PowerPitch.de.translation
│ │ ├── PowerPitch.en.translation
│ │ ├── PowerPitch.es.translation
│ │ ├── PowerPitch.fr.translation
│ │ ├── PowerPitch.id.translation
│ │ ├── PowerPitch.it.translation
│ │ ├── PowerPitch.ja.translation
│ │ ├── PowerPitch.ko.translation
│ │ ├── PowerPitch.pl.translation
│ │ ├── PowerPitch.pt_BR.translation
│ │ ├── PowerPitch.sk.translation
│ │ ├── PowerPitch.tscn
│ │ ├── PowerPitch.uk_UA.translation
│ │ ├── PowerPitch.zh.translation
│ │ ├── img/
│ │ │ ├── animation/
│ │ │ │ ├── anim-editor-01.png.import
│ │ │ │ ├── anim-editor-02.png.import
│ │ │ │ ├── anim-editor-03.png.import
│ │ │ │ ├── animation-editor-1.png.import
│ │ │ │ ├── animation-editor-3.png.import
│ │ │ │ └── animation-state-machine-2.png.import
│ │ │ ├── car-3d.jpg.import
│ │ │ ├── code-gdscript-visualscript.png.import
│ │ │ ├── conversation-editor.png.import
│ │ │ ├── create-anything/
│ │ │ │ ├── Ex-Zodiac.png.import
│ │ │ │ ├── procedural-mesh-tool-bastiaan-.jpg.import
│ │ │ │ ├── procedural-mesh-tool-bastiaan-2-1280x720.jpg.import
│ │ │ │ └── rpg-in-a-box-02-small.jpg.import
│ │ │ ├── csharp.png.import
│ │ │ ├── daisy-dangerous-game-securas-1280x720.jpg.import
│ │ │ ├── docs-community-websites.png.import
│ │ │ ├── docs-integrated-help.png.import
│ │ │ ├── gdquest-business-card.png.import
│ │ │ ├── gdscript-editor-3.1.jpg.import
│ │ │ ├── godot-3.1-editor-2d-720p.jpg.import
│ │ │ ├── godot-3.1-editor-tps-demo-720p.jpg.import
│ │ │ ├── godot-editor.png.import
│ │ │ ├── godot-pres-intro.png.import
│ │ │ ├── made-with-godot.png.import
│ │ │ ├── mesh2d_bones.png.import
│ │ │ ├── modern-engine.jpg.import
│ │ │ ├── new_3d_renderer-1264x720.jpg.import
│ │ │ ├── new_material_params.jpg.import
│ │ │ ├── repo-health.png.import
│ │ │ ├── robi-open-tps.jpg.import
│ │ │ ├── teddy-game.jpg.import
│ │ │ └── user-interface/
│ │ │ ├── ui-result.png.import
│ │ │ └── ui-theme-editor.png.import
│ │ └── slides/
│ │ ├── A_free_modern_engine.tscn
│ │ ├── All-in-one_package.tscn
│ │ ├── CodeFreely.tscn
│ │ ├── CreateAnything.tscn
│ │ ├── Godot_is_in_great_shape.tscn
│ │ ├── How_to_get_started.tscn
│ │ ├── Learn_from_simple_free_demos.tscn
│ │ ├── Made_with_godot.tscn
│ │ ├── Professionals_use_godot.tscn
│ │ ├── State_of_the_art_3d_engine.tscn
│ │ ├── Thank_you.tscn
│ │ ├── Title.tscn
│ │ └── Virtual_and_augmented_reality.tscn
│ ├── tokyo_indies_pitch/
│ │ ├── TokyoIndies.tscn
│ │ ├── img/
│ │ │ ├── banner-power-sequencer-1.1.jpg.import
│ │ │ ├── crackshot-tileset-editor.png.import
│ │ │ ├── godot-slides-2-logo.jpg.import
│ │ │ ├── intro-godot-game-engine.jpg.import
│ │ │ ├── open-rpg-banner.png.import
│ │ │ ├── tilemap-editor-crackshot-securas.png.import
│ │ │ ├── youtube-1.png.import
│ │ │ └── youtube-2.png.import
│ │ └── slides/
│ │ ├── Intro_Nathan.tscn
│ │ ├── ModularAndExtensible.tscn
│ │ ├── Thank_you_tokyo_indies.tscn
│ │ └── TokyoIndiesTitle.tscn
│ └── video/
│ ├── shooter-game.ogv
│ ├── shooter-game.ogv.import
│ ├── vr-capture.ogv
│ └── vr-capture.ogv.import
├── default_env.tres
├── icon.png.import
├── project.godot
└── src/
├── presentation/
│ ├── Presentation.gd
│ ├── Presentation.tscn
│ └── Slides.gd
├── shaders/
│ ├── TransitionColor.tscn
│ ├── masks/
│ │ ├── curtain.png.import
│ │ ├── from_center.png.import
│ │ └── shards.png.import
│ ├── outline.material
│ ├── outline.shader
│ ├── transition.material
│ └── transition.shader
├── slide/
│ ├── Margin.gd
│ ├── Slide.gd
│ ├── Slide.tscn
│ ├── layout/
│ │ ├── Grid.tscn
│ │ └── Row.tscn
│ ├── subtitle_font.tres
│ └── widgets/
│ ├── Body.tscn
│ ├── Column.tscn
│ ├── Demo.tscn
│ ├── Footer.gd
│ ├── Footer.tscn
│ ├── Header/
│ │ ├── Subtitle.gd
│ │ └── Title.gd
│ ├── Header.gd
│ ├── Header.tscn
│ ├── Picture.tscn
│ ├── PictureSlideshow.gd
│ ├── PictureSlideshow.tscn
│ ├── TextBox.gd
│ ├── TextBox.tscn
│ ├── Video.gd
│ ├── Video.tscn
│ └── text_edit/
│ ├── TextEdit.gd
│ ├── TextEdit.tscn
│ └── keywords.json
└── touch_controls/
├── InputEventSwipe.gd
├── TouchControls.gd
├── TouchControls.tscn
├── swipe_detector/
│ ├── SwipeDetector.gd
│ └── SwipeDetector.tscn
└── touch_button/
├── TouchButton.gd
├── TouchButton.tscn
├── TouchButtonLeft.tscn
├── TouchButtonRight.tscn
├── arrow_left.png.import
└── arrow_right.png.import
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Godot-specific ignores
.import/
export.cfg
export_presets.cfg
# Mono-specific ignores
.mono/
# System/tool-specific ignores
.directory
*~
# Project ignores
dist
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2018 Nathan Lovato
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.
================================================
FILE: README.md
================================================
# Godot Power Pitch
Godot Power Pitch is a Free and Open-Source presentation of the [Godot game engine](https://godotengine.org/) running in the game engine. As it's a Godot game, you can:
- Run **games inside your slides**
- **Translate your presentations** into many languages with only a spreadsheet editor
- **Animate anything** with the animation editor or tweens, add particles and sounds
- Or even be creative and display the slides inside of a game!
It'll save you hours of work if you want to introduce Godot at meetups and other gamedev events. And you can customize it to better suit your needs!
Power Pitch was made also a slideshow system made in Godot, that now became its own project: [Godot presentations](https://github.com/GDQuest/godot-presentations).
## Videos and articles
1. [Discover Godot: the Free 2D and 3D game engine](https://youtu.be/qVl3BYY6zaQ) (Power Pitch)
1. [How to Use Translations and Contribute New Languages](https://youtu.be/txCSyNgzvzw)
1. [Godot slides 2.0: open source presentation tool in Godot](https://youtu.be/JO2TvlLGf8Q) (Project overview)
You can also find a video recording of the original 40 minutes [Intro to Godot 3](https://www.youtube.com/watch?v=4v3qge-3CqQ) (*Thanks to Gabriel Marais for the English translation*).
## Controls
You can change the slide with a swipe of your finger on a touchscreen, or by hovering and clicking on the arrows on the edges of the screen. You can also navigate the slides with left and right mouse clicks: LMB and RMB.
On a keyboard, press n and p to jump to the **next** and the **previous** slide respectively. You may also use , and ., the < and > keys on QWERTY keyboards. You can use the angle brackets to avoid colliding with the demos' input actions inside your slides. To toggle fullscreen, press f.
## Help us translate the slides!
The Power Pitch currently ships with these languages in version 2.0:
- English
- French
- Japanese
- Spanish
- Portuguese (BR)
- German
- Indonesian
- Italian
- Chinese
- Korean
- Ukrainian
- Slovak
- Polish
Let's translate it in as many languages as possible! This way people can pitch Godot all around the world, in local game creator meetups.
## How to contribute translations
First, open the translations file located at `godot-3-presentation/content/power-pitch/PowerPitch.csv` with your preferred text or spreadsheets editor.
Then, you will see various language codes in the first row. Add to the next available column your language code according to [this list](https://godot.readthedocs.io/en/stable/tutorials/i18n/locales.html).
In the followings rows, add your translation for each text, in the column you used to add your language. Remember to respect the BBCode!
After that, open up the project in Godot. A `*.translation` file with your language code will be generated at `godot-3-presentation/content/power-pitch`. We will add this file to translations by going into `Project > Project Settings > Localization` and clicking the `Add` button.
Finally, open the `godot-3-presentation/presentation/Presentation.gd` file. In the first lines, you will see an exported enumeration with different language codes. Add yours (the same that you added before).
```
export(String, 'en', 'ja', 'fr', 'es', 'pt_BR', 'de', 'it') var LANGUAGE_MAIN = 'en'
export(String, 'en', 'ja', 'fr', 'es', 'pt_BR', 'de', 'it') var LANGUAGE_SECOND = 'ja'
```
Then you can set up your language in the `godot-3-presentation/presentation/Presentation.tscn` scene and run the presentation with your language.
Thank you for your translation!
## Licenses
**The code is under the MIT license terms**. The pictures and video files are under CC-By 4.0 (see below for the full credits).
### Credits
- Furry Defenders by [Kivano](http://www.kivano.games/)
- [Slyway](https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy) by Guaranapps
- [Jotsway Canyon](https://jaggygames.itch.io/jotswaycanyon) by JaggyGames
- [RPG in a Box](http://www.rpginabox.com/) by Justin
- [Andreas Esau](https://www.youtube.com/user/ndee85)
- Wallrider by [Zylann Productions](https://www.youtube.com/user/ZylannMP3/videos)
- HTC Vive/Virtual Reality demo modelled by Clelio Rossi, Davide Romboli and Andrea Laghi, developed by Lamberto Tedaldi
================================================
FILE: godot-3-presentation/assets/theme/fonts/CJK/NotoSansCJKjp-Medium.otf
================================================
[File too large to display: 15.7 MB]
================================================
FILE: godot-3-presentation/assets/theme/fonts/code_source_pro_18.tres
================================================
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://content/demos/attacks/characters/debug/source-code-pro-bold.otf" type="DynamicFontData" id=1]
[resource]
size = 18
use_filter = true
font_data = ExtResource( 1 )
================================================
FILE: godot-3-presentation/assets/theme/fonts/default_noto_30.tres
================================================
[gd_resource type="DynamicFont" load_steps=4 format=2]
[ext_resource path="res://assets/theme/fonts/CJK/NotoSans-SemiBold.ttf" type="DynamicFontData" id=1]
[ext_resource path="res://assets/theme/fonts/CJK/NotoSansCJKjp-Medium.otf" type="DynamicFontData" id=2]
[ext_resource path="res://assets/theme/fonts/arabic/NotoSansArabicUI-Medium.ttf" type="DynamicFontData" id=3]
[resource]
size = 30
use_filter = true
font_data = ExtResource( 1 )
fallback/0 = ExtResource( 2 )
fallback/1 = ExtResource( 3 )
================================================
FILE: godot-3-presentation/assets/theme/fonts/subtitle_montserrat.tres
================================================
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://assets/fonts/montserrat/montserrat-extrabold.ttf" type="DynamicFontData" id=1]
[resource]
size = 40
use_filter = true
font_data = ExtResource( 1 )
================================================
FILE: godot-3-presentation/assets/theme/fonts/subtitle_noto.tres
================================================
[gd_resource type="DynamicFont" load_steps=3 format=2]
[ext_resource path="res://assets/theme/fonts/CJK/NotoSansCJKjp-Medium.otf" type="DynamicFontData" id=1]
[ext_resource path="res://assets/theme/fonts/arabic/NotoSansArabicUI-Medium.ttf" type="DynamicFontData" id=2]
[resource]
size = 40
use_filter = true
extra_spacing_bottom = 12
font_data = ExtResource( 1 )
fallback/0 = ExtResource( 2 )
================================================
FILE: godot-3-presentation/assets/theme/fonts/title_montserrat.tres
================================================
[gd_resource type="DynamicFont" load_steps=4 format=2]
[ext_resource path="res://assets/theme/fonts/CJK/NotoSansCJKjp-Medium.otf" type="DynamicFontData" id=1]
[ext_resource path="res://assets/theme/fonts/arabic/NotoSansArabicUI-ExtraBold.ttf" type="DynamicFontData" id=2]
[ext_resource path="res://assets/fonts/montserrat/montserrat-black.ttf" type="DynamicFontData" id=3]
[resource]
size = 88
use_filter = true
extra_spacing_bottom = -14
font_data = ExtResource( 3 )
fallback/0 = ExtResource( 1 )
fallback/1 = ExtResource( 2 )
================================================
FILE: godot-3-presentation/assets/theme/fonts/title_noto.tres
================================================
[gd_resource type="DynamicFont" load_steps=3 format=2]
[ext_resource path="res://assets/theme/fonts/CJK/NotoSansCJKjp-Medium.otf" type="DynamicFontData" id=1]
[ext_resource path="res://assets/theme/fonts/arabic/NotoSansArabicUI-ExtraBold.ttf" type="DynamicFontData" id=2]
[resource]
size = 92
use_filter = true
extra_spacing_bottom = -12
font_data = ExtResource( 1 )
fallback/0 = ExtResource( 2 )
================================================
FILE: godot-3-presentation/assets/theme/sprites/footer_dusk.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/footer_dusk.png-ff5389c8682739255fc1c0ef941953da.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/theme/sprites/footer_dusk.png"
dest_files=[ "res://.import/footer_dusk.png-ff5389c8682739255fc1c0ef941953da.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/assets/theme/sprites/header_dusk.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/header_dusk.png-2ceaa44ede42e00169008f135a46608a.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/theme/sprites/header_dusk.png"
dest_files=[ "res://.import/header_dusk.png-2ceaa44ede42e00169008f135a46608a.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/AttackDummies.tscn
================================================
[gd_scene load_steps=5 format=2]
[ext_resource path="res://content/demos/attacks/characters/player/Player.tscn" type="PackedScene" id=1]
[ext_resource path="res://content/demos/attacks/characters/monster/Dummy.tscn" type="PackedScene" id=2]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=3]
[ext_resource path="res://src/slide/widgets/text_edit/TextEdit.gd" type="Script" id=4]
[node name="AttackDummies" type="Control"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
[node name="Player" parent="." index="0" instance=ExtResource( 1 )]
position = Vector2( 1398.68, 397.075 )
[node name="Dummy" parent="." index="1" instance=ExtResource( 2 )]
position = Vector2( 1596, 394 )
[node name="Dummy2" parent="." index="2" instance=ExtResource( 2 )]
position = Vector2( 1548, 250 )
[node name="Dummy3" parent="." index="3" instance=ExtResource( 2 )]
position = Vector2( 1404, 202 )
[node name="Dummy4" parent="." index="4" instance=ExtResource( 2 )]
position = Vector2( 1260, 250 )
[node name="Dummy5" parent="." index="5" instance=ExtResource( 2 )]
position = Vector2( 1212, 394 )
[node name="Dummy6" parent="." index="6" instance=ExtResource( 2 )]
position = Vector2( 1260, 538 )
[node name="Dummy7" parent="." index="7" instance=ExtResource( 2 )]
position = Vector2( 1404, 586 )
[node name="Dummy8" parent="." index="8" instance=ExtResource( 2 )]
position = Vector2( 1548, 538 )
[node name="TextEdit" type="TextEdit" parent="." index="9"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 1.0
margin_right = 900.0
rect_min_size = Vector2( 900, 0 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
focus_mode = 2
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 3
theme = ExtResource( 3 )
text = "func _change_state(new_state):
match state:
ATTACK:
hit_objects = []
attack_input_state = IDLE
ready_for_next_attack = false
match new_state:
IDLE:
combo_count = 0
$AnimationPlayer.play('idle')
monitoring = false
ATTACK:
attack_current = combo[combo_count -1]
$AnimationPlayer.play(attack_current['animation'])
monitoring = true
state = new_state
func _input(event):
if not state == ATTACK:
return
if attack_input_state != LISTENING:
return
if event.is_action_pressed('attack'):
attack_input_state = REGISTERED
func _physics_process(delta):
if attack_input_state == REGISTERED and ready_for_next_attack:
attack()
func attack():
combo_count += 1
_change_state(ATTACK)"
readonly = false
highlight_current_line = true
syntax_highlighting = true
show_line_numbers = true
highlight_all_occurrences = true
override_selected_font_color = false
context_menu_enabled = true
smooth_scrolling = false
v_scroll_speed = 80.0
hiding_enabled = 0
wrap_lines = false
caret_block_mode = false
caret_blink = false
caret_blink_speed = 0.65
caret_moving_by_right_click = true
script = ExtResource( 4 )
class_color = Color( 0.6, 0.6, 1, 1 )
member_color = Color( 0.6, 1, 0.6, 1 )
keyword_color = Color( 1, 0.6, 0.6, 1 )
quotes_color = Color( 1, 1, 0.6, 1 )
keyword_data_path = "res://slide/widgets/text_edit/keywords.json"
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/Character.tscn
================================================
[gd_scene load_steps=12 format=2]
[ext_resource path="res://content/demos/attacks/characters/character.gd" type="Script" id=1]
[ext_resource path="res://content/demos/attacks/characters/health.gd" type="Script" id=2]
[ext_resource path="res://content/demos/attacks/characters/body.png" type="Texture" id=3]
[ext_resource path="res://content/demos/attacks/vfx/PoisonBubbles.tscn" type="PackedScene" id=4]
[ext_resource path="res://content/demos/attacks/characters/weapon/weapon-pivot.gd" type="Script" id=5]
[ext_resource path="res://content/demos/attacks/characters/shadow.png" type="Texture" id=6]
[sub_resource type="Animation" id=1]
resource_name = "SETUP"
length = 0.01
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath("BodyPivot/Body:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 0, 0 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("BodyPivot/Body:rotation_degrees")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 0.0 ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("BodyPivot/Body:scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("Shadow:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -0.32052, -4.20115 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("Shadow:scale")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("BodyPivot/Body:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("Shadow:modulate")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("BodyPivot/Body:modulate")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ) ]
}
[sub_resource type="Animation" id=2]
resource_name = "die"
length = 0.7
loop = false
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath("BodyPivot/Body:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 0.296875, 0.296875, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 0.296875, 0.296875, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 0.296875, 0.296875, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Shadow:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.5, 0.7 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("BodyPivot/Body:scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0, 0.35, 0.45, 0.65 ),
"transitions": PoolRealArray( 1, 0.356926, 5.78413, 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 0.812022, 1.23284 ), Vector2( 2.7717, 0.0452506 ) ]
}
[sub_resource type="Animation" id=3]
length = 1.0
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath("BodyPivot/Body:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 0, 0 ) ]
}
[sub_resource type="Animation" id=4]
length = 0.3
loop = false
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath("BodyPivot/Body:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.3 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 0.296875, 0.296875, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 0.296875, 0.296875, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 0.296875, 0.296875, 1 ), Color( 1, 1, 1, 1 ) ]
}
[sub_resource type="RectangleShape2D" id=5]
custom_solver_bias = 0.0
extents = Vector2( 30.5911, 26.3305 )
[node name="Character" type="KinematicBody2D" index="0" groups=[
"character",
]]
input_pickable = false
collision_layer = 1
collision_mask = 0
collision/safe_margin = 0.08
script = ExtResource( 1 )
_sections_unfolded = [ "Collision", "Z Index" ]
stagger_knockback = 15
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="0"]
root_node = NodePath("..")
autoplay = ""
playback_process_mode = 1
playback_default_blend_time = 0.0
playback_speed = 1.0
anims/SETUP = SubResource( 1 )
anims/die = SubResource( 2 )
anims/idle = SubResource( 3 )
anims/stagger = SubResource( 4 )
blend_times = [ ]
[node name="Tween" type="Tween" parent="." index="1"]
repeat = false
playback_process_mode = 1
playback_speed = 1.0
playback/active = false
playback/repeat = false
playback/speed = 1.0
[node name="Health" type="Node" parent="." index="2"]
script = ExtResource( 2 )
max_health = 9
[node name="PoisonTimer" type="Timer" parent="Health" index="0"]
process_mode = 1
wait_time = 1.4
one_shot = false
autostart = false
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="3"]
position = Vector2( -1, -7.69296 )
shape = SubResource( 5 )
[node name="BodyPivot" type="Position2D" parent="." index="4"]
z_index = 2
_sections_unfolded = [ "Transform", "Visibility", "Z Index" ]
[node name="Body" type="Sprite" parent="BodyPivot" index="0"]
modulate = Color( 1, 0.296875, 0.296875, 1 )
texture = ExtResource( 3 )
offset = Vector2( 0.335912, -58.7778 )
_sections_unfolded = [ "Visibility" ]
[node name="PoisonBubbles" parent="BodyPivot" index="1" instance=ExtResource( 4 )]
position = Vector2( 38, -142 )
rotation = -1.29258
emitting = false
[node name="WeaponPivot" type="Position2D" parent="." index="5"]
position = Vector2( 0, -40 )
z_index = 2
script = ExtResource( 5 )
_sections_unfolded = [ "Transform", "Visibility", "Z Index" ]
[node name="WeaponSpawn" type="Position2D" parent="WeaponPivot" index="0"]
position = Vector2( 80, 0 )
_sections_unfolded = [ "Transform", "Visibility", "Z Index" ]
[node name="Shadow" type="Sprite" parent="." index="6"]
self_modulate = Color( 1, 1, 1, 0.313726 )
show_behind_parent = true
position = Vector2( -0.32052, -4.20115 )
texture = ExtResource( 6 )
_sections_unfolded = [ "Visibility" ]
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/body.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/body.png-6fe0d127b5ad9012998813263670adbe.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/demos/attacks/characters/body.png"
dest_files=[ "res://.import/body.png-6fe0d127b5ad9012998813263670adbe.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/character.gd
================================================
extends KinematicBody2D
signal state_changed
signal direction_changed
enum States { IDLE, ATTACK, STAGGER, DIE, DEAD }
var state = null
# MOTION
var input_direction = Vector2()
var look_direction = Vector2(1, 0)
var last_move_direction = Vector2(1, 0)
# STAGGER
var knockback_direction = Vector2(0.0, 0.0)
export(float) var stagger_knockback = 15
const STAGGER_DURATION = 0.4
# WEAPON
var weapon_path = "res://content/demos/attacks/characters/weapon/Sword.tscn"
var weapon = null
func _ready():
_change_state(States.IDLE)
$AnimationPlayer.connect('animation_finished', self, '_on_AnimationPlayer_animation_finished')
$Health.connect('health_changed', self, '_on_Health_health_changed')
$Health.connect('status_changed', self, '_on_Health_status_changed')
if not weapon_path:
return
var weapon_instance = load(weapon_path).instance()
$WeaponPivot/WeaponSpawn.add_child(weapon_instance)
weapon = $WeaponPivot/WeaponSpawn.get_child(0)
weapon.connect("attack_finished", self, "_on_Weapon_attack_finished")
func _change_state(new_state):
match state:
States.DIE:
queue_free()
States.ATTACK:
set_physics_process(true)
# Initialize the new state
match new_state:
States.IDLE:
$AnimationPlayer.play('idle')
States.ATTACK:
set_physics_process(false)
if not weapon:
print("%s tries to attack but has no weapon" % get_name())
_change_state(States.IDLE)
return
weapon.attack()
$AnimationPlayer.play('idle')
States.STAGGER:
$Tween.interpolate_property(self, 'position', position, position + stagger_knockback * -knockback_direction, STAGGER_DURATION, Tween.TRANS_QUAD, Tween.EASE_OUT)
$Tween.start()
$AnimationPlayer.play('stagger')
States.DIE:
set_process_input(false)
set_physics_process(false)
$CollisionShape2D.disabled = true
$Tween.stop(self, '')
$AnimationPlayer.play('die')
state = new_state
emit_signal('state_changed', new_state)
func _physics_process(delta):
if not input_direction:
return
last_move_direction = input_direction
if input_direction.x in [-1, 1]:
look_direction.x = input_direction.x
$BodyPivot.set_scale(Vector2(look_direction.x, 1))
func take_damage(attacker_weapon, amount, effect):
if self.is_a_parent_of(attacker_weapon):
return
knockback_direction = (attacker_weapon.global_position - global_position).normalized()
$Health.take_damage(amount, effect)
func _on_Weapon_attack_finished():
_change_state(States.IDLE)
func _on_AnimationPlayer_animation_finished(name):
if name == 'die':
_change_state(States.DEAD)
func _on_Health_health_changed(new_health):
if new_health == 0:
_change_state(States.DIE)
else:
_change_state(States.STAGGER)
func _on_Health_status_changed(new_status):
match new_status:
GlobalConstants.STATUS_POISONED:
$BodyPivot/PoisonBubbles.emitting = true
_:
$BodyPivot/PoisonBubbles.emitting = false
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/debug/direction/DirectionVisualizer.tscn
================================================
[gd_scene load_steps=3 format=2]
[ext_resource path="res://content/demos/attacks/characters/debug/direction/direction-visualizer.gd" type="Script" id=1]
[ext_resource path="res://content/demos/attacks/characters/debug/direction/arrow.png" type="Texture" id=2]
[node name="DirectionVisualizer" type="Position2D"]
script = ExtResource( 1 )
scale_range = Vector2( 0.5, 1 )
[node name="Arrow" type="Sprite" parent="." index="0"]
position = Vector2( 56.0362, -0.163977 )
texture = ExtResource( 2 )
offset = Vector2( 33.8244, -0.589883 )
[node name="Tween" type="Tween" parent="." index="1"]
repeat = false
playback_process_mode = 1
playback_speed = 1.0
playback/active = false
playback/repeat = false
playback/speed = 1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/debug/direction/arrow.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/arrow.png-6c0c1ba6b6c968e541ca3604eaa6b89c.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/demos/attacks/characters/debug/direction/arrow.png"
dest_files=[ "res://.import/arrow.png-6c0c1ba6b6c968e541ca3604eaa6b89c.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/debug/direction/direction-visualizer.gd
================================================
extends Position2D
func _ready():
var player_node = $'..'
player_node.connect("direction_changed", self, '_on_Player_direction_changed')
set_process(false)
func _on_Player_direction_changed(direction):
rotation = direction.angle()
if direction == Vector2(0, -1):
visible = false
else:
visible = true
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/debug/state-visualizer.gd
================================================
extends Label
const STATE_STRINGS = [
"spawn",
"idle",
"move",
"jump",
"bump",
"fall"
]
func _ready():
$'..'.connect('state_changed', self, '_on_Player_state_changed')
func _on_Player_state_changed(new_state):
text = STATE_STRINGS[new_state]
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/health.gd
================================================
extends Node
signal health_changed
signal health_depleted
signal status_changed
var health = 0
export(int) var max_health = 9
var status = null
const POISON_DAMAGE = 1
var poison_cycles = 0
func _ready():
health = max_health
$PoisonTimer.connect('timeout', self, '_on_PoisonTimer_timeout')
func _change_status(new_status):
match status:
GlobalConstants.Statuses.POISONED:
$PoisonTimer.stop()
match new_status:
GlobalConstants.Statuses.POISONED:
poison_cycles = 0
$PoisonTimer.start()
status = new_status
emit_signal('status_changed', new_status)
func take_damage(amount, effect=null):
if status == GlobalConstants.Statuses.INVINCIBLE:
return
health -= amount
health = max(0, health)
emit_signal("health_changed", health)
if not effect:
return
match effect[0]:
GlobalConstants.Statuses.POISONED:
_change_status(GlobalConstants.Statuses.POISONED)
poison_cycles = effect[1]
# print("%s got hit and took %s damage. Health: %s/%s" % [get_name(), amount, health, max_health])
func heal(amount):
health += amount
health = max(health, max_health)
emit_signal("health_changed", health)
# print("%s got healed by %s points. Health: %s/%s" % [get_name(), amount, health, max_health])
func _on_PoisonTimer_timeout():
take_damage(POISON_DAMAGE)
poison_cycles -= 1
if poison_cycles == 0:
_change_status(GlobalConstants.Statuses.NONE)
return
$PoisonTimer.start()
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/monster/Dummy.tscn
================================================
[gd_scene load_steps=3 format=2]
[ext_resource path="res://content/demos/attacks/characters/Character.tscn" type="PackedScene" id=1]
[ext_resource path="res://content/demos/attacks/characters/monster/dummy.png" type="Texture" id=2]
[node name="Dummy" index="0" instance=ExtResource( 1 )]
[node name="Health" parent="." index="2"]
max_health = 5
[node name="CollisionShape2D" parent="." index="3"]
position = Vector2( -1, -51.8946 )
[node name="Body" parent="BodyPivot" index="0"]
modulate = Color( 1, 1, 1, 1 )
texture = ExtResource( 2 )
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/monster/dummy.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/dummy.png-27b6bfb1cb6a2da883b1b246f9f91c25.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/demos/attacks/characters/monster/dummy.png"
dest_files=[ "res://.import/dummy.png-27b6bfb1cb6a2da883b1b246f9f91c25.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/player/Player.tscn
================================================
[gd_scene load_steps=5 format=2]
[ext_resource path="res://content/demos/attacks/characters/Character.tscn" type="PackedScene" id=1]
[ext_resource path="res://content/demos/attacks/characters/player/player.gd" type="Script" id=2]
[ext_resource path="res://content/demos/attacks/characters/player/body.png" type="Texture" id=3]
[ext_resource path="res://content/demos/attacks/characters/debug/direction/DirectionVisualizer.tscn" type="PackedScene" id=4]
[node name="Player" index="0" instance=ExtResource( 1 )]
script = ExtResource( 2 )
[node name="Body" parent="BodyPivot" index="0"]
modulate = Color( 1, 1, 1, 1 )
texture = ExtResource( 3 )
[node name="DirectionVisualizer" parent="." index="7" instance=ExtResource( 4 )]
show_behind_parent = true
_sections_unfolded = [ "Transform", "Visibility" ]
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/player/body.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/body.png-19a8f6bd62bb671d4911723601bbe096.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/demos/attacks/characters/player/body.png"
dest_files=[ "res://.import/body.png-19a8f6bd62bb671d4911723601bbe096.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/player/player.gd
================================================
extends "../character.gd"
func _input(event):
if event.is_action_pressed("attack") and state != States.ATTACK:
_change_state(States.ATTACK)
func _physics_process(delta):
input_direction = Vector2()
input_direction.x = int(Input.is_action_pressed("move_right")) - int(Input.is_action_pressed("move_left"))
input_direction.y = int(Input.is_action_pressed("move_down")) - int(Input.is_action_pressed("move_up"))
if input_direction and input_direction != last_move_direction:
emit_signal('direction_changed', input_direction)
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/shadow.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/shadow.png-56a9a0de2b8662d8cdc5a8527eeb2a48.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/demos/attacks/characters/shadow.png"
dest_files=[ "res://.import/shadow.png-56a9a0de2b8662d8cdc5a8527eeb2a48.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/weapon/Sword.tscn
================================================
[gd_scene load_steps=8 format=2]
[ext_resource path="res://content/demos/attacks/characters/weapon/sword.gd" type="Script" id=1]
[ext_resource path="res://content/demos/attacks/characters/weapon/sword.png" type="Texture" id=2]
[sub_resource type="Animation" id=1]
resource_name = "SETUP"
length = 1.0
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 0.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath(".:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
tracks/3/type = "value"
tracks/3/path = NodePath(".:monitoring")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
tracks/4/type = "value"
tracks/4/path = NodePath(".:monitorable")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=2]
resource_name = "attack_circular"
length = 0.3
loop = false
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath(".:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.15, 0.2 ),
"transitions": PoolRealArray( 0.439427, 1, 1 ),
"update": 0,
"values": [ -100.0, 100.0, 90.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.05, 0.15, 0.2 ),
"transitions": PoolRealArray( 1, 2.50795, 1, 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ), Vector2( 1, 1.3 ), Vector2( 1, 1 ), Vector2( 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath(".:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
[sub_resource type="Animation" id=3]
length = 0.45
loop = false
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath(".:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.15, 0.2 ),
"transitions": PoolRealArray( 0.439427, 1, 1 ),
"update": 0,
"values": [ -80.0, 85.0, 75.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.05, 0.15, 0.2 ),
"transitions": PoolRealArray( 1, 2.50795, 1, 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ), Vector2( 1, 1.3 ), Vector2( 1, 1 ), Vector2( 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath(".:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
tracks/3/type = "method"
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.1, 0.25 ),
"transitions": PoolRealArray( 1, 1 ),
"values": [ {
"args": [ ],
"method": "set_attack_input_listening"
}, {
"args": [ ],
"method": "set_ready_for_next_attack"
} ]
}
[sub_resource type="Animation" id=4]
resource_name = "attack_medium"
length = 0.5
loop = false
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath(".:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.05, 0.25, 0.35 ),
"transitions": PoolRealArray( 0.439427, 1, 1 ),
"update": 0,
"values": [ 95.0, -95.0, -90.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.1, 0.2, 0.25 ),
"transitions": PoolRealArray( 1, 2.50795, 1, 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ), Vector2( 1, 1.3 ), Vector2( 1, 1 ), Vector2( 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath(".:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
[sub_resource type="Animation" id=5]
length = 0.01
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[node name="Sword" type="Area2D" index="0"]
rotation = -1.5708
input_pickable = false
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
monitorable = false
collision_layer = 16
collision_mask = 3
audio_bus_override = false
audio_bus_name = "Master"
script = ExtResource( 1 )
_sections_unfolded = [ "Transform" ]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="0"]
root_node = NodePath("..")
autoplay = ""
playback_process_mode = 1
playback_default_blend_time = 0.0
playback_speed = 1.0
anims/SETUP = SubResource( 1 )
anims/attack_circular = SubResource( 2 )
anims/attack_fast = SubResource( 3 )
anims/attack_medium = SubResource( 4 )
anims/idle = SubResource( 5 )
blend_times = [ ]
_sections_unfolded = [ "Playback Options" ]
[node name="sword" type="Sprite" parent="." index="1"]
position = Vector2( 4, 0 )
texture = ExtResource( 2 )
offset = Vector2( 67, 0 )
_sections_unfolded = [ "Offset", "Transform" ]
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="." index="2"]
build_mode = 0
polygon = PoolVector2Array( 28.0001, -15.9999, 136, -15.9995, 160, 0, 136, 16.0005, 27.9999, 16.0001 )
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/weapon/sword-stick.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/sword-stick.png-1553647327943eeb56475d47abb451b9.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/demos/attacks/characters/weapon/sword-stick.png"
dest_files=[ "res://.import/sword-stick.png-1553647327943eeb56475d47abb451b9.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/weapon/sword.gd
================================================
extends Area2D
signal attack_finished
enum States { IDLE, ATTACK }
var state : int = States.IDLE
enum InputStates { WAITING, LISTENING, REGISTERED }
var attack_input_state = InputStates.WAITING
var ready_for_next_attack = false
# The combo is hard-coded in each weapon
# Unless the weapon has more than 2 or 3,
# or if you're working with a designer who needs
# to create dozens of weapons, this works well
const MAX_COMBO_COUNT = 3
var combo_count = 0
var attack_current = {}
# Using a dict for each attack, we can add new, per-attack property
# E.g. ignore_armor: true, inflicts: POISON, element: FIRE...
# You can convert this to and from JSON so it's easy
# to move it outside the code without breaking it
var combo = [{
'damage': 1,
'animation': 'attack_fast',
'effect': null
},
{
'damage': 1,
'animation': 'attack_fast',
'effect': [GlobalConstants.Statuses.POISONED, 2]
},
{
'damage': 3,
'animation': 'attack_medium',
'effect': null
}]
var hit_objects = []
func _ready():
$AnimationPlayer.connect('animation_finished', self, "_on_animation_finished")
self.connect("body_entered", self, "_on_body_entered")
_change_state(States.IDLE)
func _change_state(new_state):
match state:
States.ATTACK:
hit_objects = []
attack_input_state = InputStates.WAITING
ready_for_next_attack = false
match new_state:
States.IDLE:
combo_count = 0
$AnimationPlayer.play('idle')
monitoring = false
States.ATTACK:
attack_current = combo[combo_count -1]
$AnimationPlayer.play(attack_current['animation'])
monitoring = true
state = new_state
func _input(event):
if not state == States.ATTACK:
return
if attack_input_state != InputStates.LISTENING:
return
if event.is_action_pressed('attack'):
attack_input_state = InputStates.REGISTERED
func _physics_process(delta):
if attack_input_state == InputStates.REGISTERED and ready_for_next_attack:
attack()
func attack():
combo_count += 1
_change_state(States.ATTACK)
# use with AnimationPlayer func track
func set_attack_input_listening():
attack_input_state = InputStates.LISTENING
# use with AnimationPlayer func track
func set_ready_for_next_attack():
ready_for_next_attack = true
func _on_body_entered(body):
if body.get_rid().get_id() in hit_objects:
return
hit_objects.append(body.get_rid().get_id())
body.take_damage(self, attack_current['damage'], attack_current['effect'])
func _on_animation_finished(name):
if not attack_current:
return
if attack_input_state == InputStates.REGISTERED and combo_count < MAX_COMBO_COUNT:
attack()
else:
_change_state(States.IDLE)
emit_signal("attack_finished")
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/weapon/sword.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/sword.png-b9b9a4fcc88c274638f7155be5455e49.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/demos/attacks/characters/weapon/sword.png"
dest_files=[ "res://.import/sword.png-b9b9a4fcc88c274638f7155be5455e49.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/characters/weapon/weapon-pivot.gd
================================================
extends Position2D
var z_index_start = 0
func _ready():
$"..".connect("direction_changed", self, '_on_Parent_direction_changed')
z_index_start = z_index
func _on_Parent_direction_changed(direction):
rotation = direction.angle()
match direction:
Vector2(0, -1):
z_index = z_index_start - 1
_:
z_index = z_index_start
================================================
FILE: godot-3-presentation/content/demos/attacks/default_env.tres
================================================
[gd_resource type="Environment" load_steps=2 format=2]
[sub_resource type="ProceduralSky" id=1]
radiance_size = 4
sky_top_color = Color( 0.0470588, 0.454902, 0.976471, 1 )
sky_horizon_color = Color( 0.556863, 0.823529, 0.909804, 1 )
sky_curve = 0.25
sky_energy = 1.0
ground_bottom_color = Color( 0.101961, 0.145098, 0.188235, 1 )
ground_horizon_color = Color( 0.482353, 0.788235, 0.952941, 1 )
ground_curve = 0.01
ground_energy = 1.0
sun_color = Color( 1, 1, 1, 1 )
sun_latitude = 35.0
sun_longitude = 0.0
sun_angle_min = 1.0
sun_angle_max = 100.0
sun_curve = 0.05
sun_energy = 16.0
texture_size = 2
[resource]
background_mode = 2
background_sky = SubResource( 1 )
background_sky_custom_fov = 0.0
background_color = Color( 0, 0, 0, 1 )
background_energy = 1.0
background_canvas_max_layer = 0
ambient_light_color = Color( 0, 0, 0, 1 )
ambient_light_energy = 1.0
ambient_light_sky_contribution = 1.0
fog_enabled = false
fog_color = Color( 0.5, 0.6, 0.7, 1 )
fog_sun_color = Color( 1, 0.9, 0.7, 1 )
fog_sun_amount = 0.0
fog_depth_enabled = true
fog_depth_begin = 10.0
fog_depth_curve = 1.0
fog_transmit_enabled = false
fog_transmit_curve = 1.0
fog_height_enabled = false
fog_height_min = 0.0
fog_height_max = 100.0
fog_height_curve = 1.0
tonemap_mode = 0
tonemap_exposure = 1.0
tonemap_white = 1.0
auto_exposure_enabled = false
auto_exposure_scale = 0.4
auto_exposure_min_luma = 0.05
auto_exposure_max_luma = 8.0
auto_exposure_speed = 0.5
ss_reflections_enabled = false
ss_reflections_max_steps = 64
ss_reflections_fade_in = 0.15
ss_reflections_fade_out = 2.0
ss_reflections_depth_tolerance = 0.2
ss_reflections_roughness = true
ssao_enabled = false
ssao_radius = 1.0
ssao_intensity = 1.0
ssao_radius2 = 0.0
ssao_intensity2 = 1.0
ssao_bias = 0.01
ssao_light_affect = 0.0
ssao_color = Color( 0, 0, 0, 1 )
ssao_quality = 0
ssao_blur = 3
ssao_edge_sharpness = 4.0
dof_blur_far_enabled = false
dof_blur_far_distance = 10.0
dof_blur_far_transition = 5.0
dof_blur_far_amount = 0.1
dof_blur_far_quality = 1
dof_blur_near_enabled = false
dof_blur_near_distance = 2.0
dof_blur_near_transition = 1.0
dof_blur_near_amount = 0.1
dof_blur_near_quality = 1
glow_enabled = false
glow_levels/1 = false
glow_levels/2 = false
glow_levels/3 = true
glow_levels/4 = false
glow_levels/5 = true
glow_levels/6 = false
glow_levels/7 = false
glow_intensity = 0.8
glow_strength = 1.0
glow_bloom = 0.0
glow_blend_mode = 2
glow_hdr_threshold = 1.0
glow_hdr_scale = 2.0
glow_bicubic_upscale = false
adjustment_enabled = false
adjustment_brightness = 1.0
adjustment_contrast = 1.0
adjustment_saturation = 1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/global-constants.gd
================================================
extends Node
enum Statuses { NONE, INVINCIBLE, POISONED, STUNNED }
================================================
FILE: godot-3-presentation/content/demos/attacks/icon.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-92420cbdeb4111ce5c8be2749bb4edae.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/demos/attacks/icon.png"
dest_files=[ "res://.import/icon.png-92420cbdeb4111ce5c8be2749bb4edae.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/demos/attacks/vfx/PoisonBubbles.tscn
================================================
[gd_scene load_steps=8 format=2]
[ext_resource path="res://content/demos/attacks/vfx/poison-bubble.png" type="Texture" id=1]
[sub_resource type="Shader" id=1]
code = "shader_type particles;
uniform float spread;
uniform float flatness;
uniform float initial_linear_velocity;
uniform float initial_angle;
uniform float angular_velocity;
uniform float orbit_velocity;
uniform float linear_accel;
uniform float radial_accel;
uniform float tangent_accel;
uniform float damping;
uniform float scale;
uniform float hue_variation;
uniform float anim_speed;
uniform float anim_offset;
uniform float initial_linear_velocity_random;
uniform float initial_angle_random;
uniform float angular_velocity_random;
uniform float orbit_velocity_random;
uniform float linear_accel_random;
uniform float radial_accel_random;
uniform float tangent_accel_random;
uniform float damping_random;
uniform float scale_random;
uniform float hue_variation_random;
uniform float anim_speed_random;
uniform float anim_offset_random;
uniform float emission_sphere_radius;
uniform vec4 color_value : hint_color;
uniform int trail_divisor;
uniform vec3 gravity;
uniform sampler2D color_ramp;
uniform sampler2D scale_texture;
float rand_from_seed(inout uint seed) {
int k;
int s = int(seed);
if (s == 0)
s = 305420679;
k = s / 127773;
s = 16807 * (s - k * 127773) - 2836 * k;
if (s < 0)
s += 2147483647;
seed = uint(s);
return float(seed % uint(65536))/65535.0;
}
float rand_from_seed_m1_p1(inout uint seed) {
return rand_from_seed(seed)*2.0-1.0;
}
uint hash(uint x) {
x = ((x >> uint(16)) ^ x) * uint(73244475);
x = ((x >> uint(16)) ^ x) * uint(73244475);
x = (x >> uint(16)) ^ x;
return x;
}
void vertex() {
uint base_number = NUMBER/uint(trail_divisor);
uint alt_seed = hash(base_number+uint(1)+RANDOM_SEED);
float angle_rand = rand_from_seed(alt_seed);
float scale_rand = rand_from_seed(alt_seed);
float hue_rot_rand = rand_from_seed(alt_seed);
float anim_offset_rand = rand_from_seed(alt_seed);
float pi = 3.14159;
float degree_to_rad = pi / 180.0;
if (RESTART) {
float tex_linear_velocity = 0.0;
float tex_angle = 0.0;
float tex_anim_offset = 0.0;
float spread_rad = spread*degree_to_rad;
float angle1_rad = rand_from_seed_m1_p1(alt_seed)*spread_rad;
vec3 rot = vec3( cos(angle1_rad), sin(angle1_rad),0.0 );
VELOCITY = rot*initial_linear_velocity*mix(1.0, rand_from_seed(alt_seed), initial_linear_velocity_random);
float base_angle = (initial_angle+tex_angle)*mix(1.0,angle_rand,initial_angle_random);
CUSTOM.x = base_angle*degree_to_rad;
CUSTOM.y = 0.0;
CUSTOM.z = (anim_offset+tex_anim_offset)*mix(1.0,anim_offset_rand,anim_offset_random);
TRANSFORM[3].xyz = normalize(vec3(rand_from_seed(alt_seed) * 2.0 - 1.0, rand_from_seed(alt_seed) * 2.0-1.0, rand_from_seed(alt_seed) * 2.0-1.0 ))*emission_sphere_radius;
VELOCITY = (EMISSION_TRANSFORM * vec4(VELOCITY,0.0)).xyz;
TRANSFORM = EMISSION_TRANSFORM * TRANSFORM;
VELOCITY.z = 0.0;
TRANSFORM[3].z = 0.0;
} else {
CUSTOM.y += DELTA/LIFETIME;
float tex_linear_velocity = 0.0;
float tex_orbit_velocity = 0.0;
float tex_angular_velocity = 0.0;
float tex_linear_accel = 0.0;
float tex_radial_accel = 0.0;
float tex_tangent_accel = 0.0;
float tex_damping = 0.0;
float tex_angle = 0.0;
float tex_anim_speed = 0.0;
float tex_anim_offset = 0.0;
vec3 force = gravity;
vec3 pos = TRANSFORM[3].xyz;
pos.z = 0.0;
//apply linear acceleration
force += length(VELOCITY) > 0.0 ? normalize(VELOCITY) * (linear_accel+tex_linear_accel)*mix(1.0,rand_from_seed(alt_seed),linear_accel_random) : vec3(0.0);
//apply radial acceleration
vec3 org = EMISSION_TRANSFORM[3].xyz;
vec3 diff = pos-org;
force += length(diff) > 0.0 ? normalize(diff) * (radial_accel+tex_radial_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random) : vec3(0.0);
//apply tangential acceleration;
force += length(diff.yx) > 0.0 ? vec3(normalize(diff.yx * vec2(-1.0,1.0)),0.0) * ((tangent_accel+tex_tangent_accel)*mix(1.0,rand_from_seed(alt_seed),tangent_accel_random)) : vec3(0.0);
//apply attractor forces
VELOCITY += force * DELTA;
float base_angle = (initial_angle+tex_angle)*mix(1.0,angle_rand,initial_angle_random);
base_angle += CUSTOM.y*LIFETIME*(angular_velocity+tex_angular_velocity)*mix(1.0,rand_from_seed(alt_seed)*2.0-1.0,angular_velocity_random);
CUSTOM.x = base_angle*degree_to_rad;
CUSTOM.z = (anim_offset+tex_anim_offset)*mix(1.0,anim_offset_rand,anim_offset_random)+CUSTOM.y*(anim_speed+tex_anim_speed)*mix(1.0,rand_from_seed(alt_seed),anim_speed_random);
CUSTOM.z = clamp(CUSTOM.z,0.0,1.0);
}
float tex_scale = textureLod(scale_texture,vec2(CUSTOM.y,0.0),0.0).r;
float tex_hue_variation = 0.0;
float hue_rot_angle = (hue_variation+tex_hue_variation)*pi*2.0*mix(1.0,hue_rot_rand*2.0-1.0,hue_variation_random);
float hue_rot_c = cos(hue_rot_angle);
float hue_rot_s = sin(hue_rot_angle);
mat4 hue_rot_mat = mat4( vec4(0.299, 0.587, 0.114, 0.0),
vec4(0.299, 0.587, 0.114, 0.0),
vec4(0.299, 0.587, 0.114, 0.0),
vec4(0.000, 0.000, 0.000, 1.0)) +
mat4( vec4(0.701, -0.587, -0.114, 0.0),
vec4(-0.299, 0.413, -0.114, 0.0),
vec4(-0.300, -0.588, 0.886, 0.0),
vec4(0.000, 0.000, 0.000, 0.0)) * hue_rot_c +
mat4( vec4(0.168, 0.330, -0.497, 0.0),
vec4(-0.328, 0.035, 0.292, 0.0),
vec4(1.250, -1.050, -0.203, 0.0),
vec4(0.000, 0.000, 0.000, 0.0)) * hue_rot_s;
COLOR = textureLod(color_ramp,vec2(CUSTOM.y,0.0),0.0) * hue_rot_mat;
TRANSFORM[0] = vec4(cos(CUSTOM.x),-sin(CUSTOM.x),0.0,0.0);
TRANSFORM[1] = vec4(sin(CUSTOM.x),cos(CUSTOM.x),0.0,0.0);
TRANSFORM[2] = vec4(0.0,0.0,1.0,0.0);
float base_scale = mix(scale*tex_scale,1.0,scale_random*scale_rand);
if (base_scale==0.0) base_scale=0.000001;
TRANSFORM[0].xyz *= base_scale;
TRANSFORM[1].xyz *= base_scale;
TRANSFORM[2].xyz *= base_scale;
VELOCITY.z = 0.0;
TRANSFORM[3].z = 0.0;
}
"
[sub_resource type="Gradient" id=2]
offsets = PoolRealArray( 0, 0.0710059, 0.863905, 1 )
colors = PoolColorArray( 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 )
[sub_resource type="GradientTexture" id=3]
flags = 4
gradient = SubResource( 2 )
width = 2048
[sub_resource type="Curve" id=4]
min_value = 0.0
max_value = 1.0
bake_resolution = 100
_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0.166992 ), 0.0, 0.0, 0, 0 ]
[sub_resource type="CurveTexture" id=5]
flags = 4
width = 2048
curve = SubResource( 4 )
[sub_resource type="ShaderMaterial" id=6]
render_priority = 0
shader = SubResource( 1 )
shader_param/spread = 45.0
shader_param/flatness = 0.0
shader_param/initial_linear_velocity = 60.0
shader_param/initial_angle = 0.0
shader_param/angular_velocity = null
shader_param/orbit_velocity = 0.0
shader_param/linear_accel = 0.0
shader_param/radial_accel = 0.0
shader_param/tangent_accel = 0.0
shader_param/damping = 0.0
shader_param/scale = 0.8
shader_param/hue_variation = 0.0
shader_param/anim_speed = 0.0
shader_param/anim_offset = 0.0
shader_param/initial_linear_velocity_random = 0.4
shader_param/initial_angle_random = 0.0
shader_param/angular_velocity_random = 0.0
shader_param/orbit_velocity_random = 0.0
shader_param/linear_accel_random = 0.0
shader_param/radial_accel_random = 0.0
shader_param/tangent_accel_random = 0.0
shader_param/damping_random = 0.0
shader_param/scale_random = 0.8
shader_param/hue_variation_random = 0.0
shader_param/anim_speed_random = 0.0
shader_param/anim_offset_random = 0.0
shader_param/emission_sphere_radius = 10.0
shader_param/color_value = Color( 1, 1, 1, 1 )
shader_param/trail_divisor = 1
shader_param/gravity = Vector3( 0, -1e-06, 0 )
shader_param/color_ramp = SubResource( 3 )
shader_param/scale_texture = SubResource( 5 )
[node name="PoisonBubbles" type="Particles2D"]
rotation = -1.5708
emitting = true
amount = 3
lifetime = 1.0
one_shot = false
preprocess = 0.0
speed_scale = 1.0
explosiveness = 0.0
randomness = 0.0
fixed_fps = 0
fract_delta = true
visibility_rect = Rect2( -100, -100, 200, 200 )
local_coords = false
draw_order = 0
process_material = SubResource( 6 )
texture = ExtResource( 1 )
normal_map = null
h_frames = 1
v_frames = 1
_sections_unfolded = [ "Process Material", "Textures", "Transform" ]
================================================
FILE: godot-3-presentation/content/demos/attacks/vfx/poison-bubble.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/poison-bubble.png-2816a517038566ad1b765120ff0c8513.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/demos/attacks/vfx/poison-bubble.png"
dest_files=[ "res://.import/poison-bubble.png-2816a517038566ad1b765120ff0c8513.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/MakingOpenSourceGames.csv
================================================
id,en,ja
HalfFreeContent_Column_Header_title,A lot of free content,無料のコンテンツをたくさん作ってあげます
HalfFreeContent_Column_Body_Row_TextBox_text,"More than 50% of the work we do is available for free:
- Hundreds of [color=#26BFE3]tutorials[/color]
- Contributions to [color=#26BFE3]Free Software[/color]
- Open source [color=#26BFE3]tools[/color] for game developers
Sounds crazy? It is!
But we get to work [color=#F2971A]full-time[/color] on projects we love, and share everything we create from the start.
","自分たちのコンテンツの五割以上を無料でもらえます:
1.数百チュートリアル
2.フリーソフトに貢献します
3.ゲーム開発者のオープンソース道具
クレージーでしょうか!
でももう給料をもらえて好きなプロジェクトに毎日働けますよ。それで自由になんでも最初から交換できます。"
MakingGamesTogether_Column_Header_title,Making games together,ゲームを世界の人たちと作ること
MakingGamesTogether_Column_Body_Row_TextBox_text,"Since October 2018 we started [color=#E3266F]Open Source projects[/color] with our community.
- Our Zelda-like ARPG demo has 5 contributors.
- Open RPG, our RPG gameplay engine, has 12 contributors already.
And we are just getting started!","2018年10月からオープンソースゲームプロジェクトを開発しはじめました。
1.ZeldaみたいなARPGのゲームは5人の貢献者です
2.オープンRPG、自分たちのRPGゲームプレイエンジンはもう12人の貢献者で作っています
プロジェクトが若い割にもう数人の貢献者が手伝ってくれました。"
WhySharingKnowledge_Column_Header_title,Why? Everyone shares,どうして?みんなが技術を交換します
WhySharingKnowledge_Column_Body_Row_TextBox_text,"We all share what we know.
We are all [color=#26BFE3]mentors and students[/color] at the same time.
In the community people are kind to one another. Sometimes we even become friends!
The contributors get Free training and professional experience working in a team.","貢献者の皆さんが両方教員と学生になります。
コミュニティの方たちは他のだれに優しく新しい技術を教えてたまに親しくなってしまいます。
参加する人たちがゲームの仕方を勉強できてプロの経験を無料でもらえます。"
WhySharingKnowledge_Column_Footer_text,Together we can create something greater than we could individually.,一人でより一緒に大きいプロジェクトを作れますね。
WhyCodebase_Column_Header_title,Why? Better code,コードの書き方がうまくいっています
WhyCodebase_Column_Body_Row_TextBox_text,"Working together forces us to write code that is easy to read and to maintain.
We're working on [color=#E3266F]code guidelines[/color] that the entire community can use to that end.
People find and fix bugs we didn't know about. Contributors add features we wouldn't have the time or resources to code ourselves.","世界の人たちが貢献するようにコードを読まなくてはいけませんから読みやすくて維持しやすいコードを書かなければなりません。
そのためにコードガイドラインをだんだん作っています。
貢献者がバッグをよくに見つけて直してくれます。時間がかかる新しい機能も書いてくれます。"
WhyCodebase_Column_Footer_text,"Also, we're building up reusable tools and scripts to get new projects started faster.",皆のおかげで道具と将来のプロジェクトのためにまとめています
HowCrowdfunding_Column_Header_title,How? Crowdfunding,クラウドファンディング
HowCrowdfunding_Column_Header_subtitle,Half of our revenue comes from Kickstarter,会社のお金の半分がKickstarterでもらいます
HowCrowdfunding_Column_Body_Row_TextBox_text,"Crowdfunding works well for GDquest as the project is community-driven.
Some tips after 3 campaigns:
1. Do a [color=#26BFE3]market study[/color]! You should secure sponsors and know how many persons will support you before you launch.
2. Offer a [color=#E3266F]unique product[/color] or service.
3. Nurture your community. Keep great [color=#26BFE3]relationships[/color] with people.
4. Prepare communication and content in advance.","クラウドファンディングのコツ:
1.マケットを勉強しないといけません!スポンサーを開始する前に見つけたほうがいいでしょう
2.ユニックサビスか商品を作らないと興味が少なくなります
3.コミュニティと親しくコミュニケーションしたほうがいいでしょう
4.宣伝とコンテンツをキャンペーンの前にじゅんびしたほうがいいです"
HowCrowdfunding_Column_Footer_text,We got all three of our projects funded in 1 to 4 days doing this,GDquestの3つのKickstarterは四日間以下で必要とするお金を受けれました。
HowEmpoweringCommunity_Column_Header_title,How? Empower people,貢献者に力をあたえます
HowEmpoweringCommunity_Column_Body_Row_TextBox_text,"You want to:
1. Let people contribute ideas
2. Delegate work to contributors
3. Listen to the community
People may code or design differently from you. Don't try to control everything: take their contributions as opportunities to learn new workflows and techniques!
Also, review proposals and let people fix their work themselves.","1.皆さんのアイデアを聞いて
2.仕事をいにんして
3.コミュニティと相談したほうがいい
他のだれの開発かデザインの仕方が違うでしょう。その貢献を新しい技術を勉強できる機会になりますよ!
貢献者が成長できるようにコードを見直して失敗を教えたほうがいいです。"
HowEmpoweringCommunity_Column_Footer_text,Did I mention our community is awesome?,コミュニティが素晴らしいですよ!
HowKrita_Column_Body_Header_title,Game art: made with Krita,ゲームアート:Kritaで絵を書きます
OpenGameProjects_Column_Header_title,Gdquest’s future,GDquestの将来
OpenGameProjects_Column_Header_subtitle,Open Game projects,オープンゲームプロジェクト
OpenGameProjects_Column_Body_Row_TextBox_text,"Our ambition is to make Open Game projects like Blender's Open Movies:
1. Create great little games
2. Improve our favorite Free Software
3. Offer Free education to everyone
Everyone's welcome to work together on this journey!
We're already building the foundations.","Blender3Dのオープン動画というプロジェクトのようにオープンゲームを作ってみたいです。
ゲームをつくって好きなフリーソフトに貢献してフリー教育を作ってみたいです。
そのためにGodotエンジンのチームと一緒に共同作業しています。
貢献したいなら皆を喜んでかんげいします!
今はもうゆっくり準備しています。"
ThankYou_Column_Header_title,Thank you!,ありがとうございました!
ThankYou_Column_Body_Row_TextBox_text,"This presentation and our game projects are Free and Open Source!
Find them on [url=https://github.com/GDquest/godot-3-presentation]GDquest's GitHub page[/url].
We are on:
Twitter: [color=#26BFE3]@NathanGDquest[/color]
YouTube: [color=#F2971A]youtube.com/c/gdquest[/color]","このプレゼンとゲームプロジェクトは全てオプンソースです。
GDquestの[url=https://github.com/GDquest/godot-3-presentation]GitHubページ[/url]でダウンロードできます。
SNS:
Twitter: [color=#26BFE3]@NathanGDquest[/color]
YouTube: [color=#F2971A]youtube.com/c/gdquest[/color]"
ThankYou_Column_Footer_text,Any questions? Message me anytime or let's talk after the presentations!,質問があればいつでも連絡してください!日本語は大丈夫です。
================================================
FILE: godot-3-presentation/content/open_source_games/MakingOpenSourceGames.csv.import
================================================
[remap]
importer="csv_translation"
type="Translation"
[deps]
files=[ "res://content/open_source_games/MakingOpenSourceGames.en.translation", "res://content/open_source_games/MakingOpenSourceGames.ja.translation" ]
source_file="res://content/open_source_games/MakingOpenSourceGames.csv"
dest_files=[ "res://content/open_source_games/MakingOpenSourceGames.en.translation", "res://content/open_source_games/MakingOpenSourceGames.ja.translation" ]
[params]
compress=true
delimiter=0
================================================
FILE: godot-3-presentation/content/open_source_games/MakingOpenSourceGames.tscn
================================================
[gd_scene load_steps=17 format=2]
[ext_resource path="res://src/presentation/Presentation.tscn" type="PackedScene" id=1]
[ext_resource path="res://content/open_source_games/slides/OpenSourceGamesTitle.tscn" type="PackedScene" id=2]
[ext_resource path="res://content/tokyo_indies_pitch/slides/Intro_Nathan.tscn" type="PackedScene" id=3]
[ext_resource path="res://content/open_source_games/slides/WeMakeFreeContent.tscn" type="PackedScene" id=4]
[ext_resource path="res://content/open_source_games/slides/MakingGamesTogether.tscn" type="PackedScene" id=5]
[ext_resource path="res://content/open_source_games/slides/WhySharingKnowledge.tscn" type="PackedScene" id=6]
[ext_resource path="res://content/open_source_games/slides/WhyCodebase.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/open_source_games/slides/HowCrowdfunding.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/open_source_games/slides/HowEmpoweringCommunity.tscn" type="PackedScene" id=9]
[ext_resource path="res://content/tokyo_indies_pitch/slides/TokyoIndiesTitle.tscn" type="PackedScene" id=10]
[ext_resource path="res://content/power_pitch/slides/A_free_modern_engine.tscn" type="PackedScene" id=11]
[ext_resource path="res://content/open_source_games/slides/HowKrita.tscn" type="PackedScene" id=12]
[ext_resource path="res://content/open_source_games/slides/OpenGameProjects.tscn" type="PackedScene" id=13]
[ext_resource path="res://content/open_source_games/ThankYou.tscn" type="PackedScene" id=14]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=15]
[sub_resource type="GDScript" id=1]
script/source = "extends Label
func _ready():
hide()
"
[node name="MakingOpenSourceGames" index="0" instance=ExtResource( 1 )]
[node name="OpenSourceGamesTitle" parent="Slides" index="0" instance=ExtResource( 2 )]
[node name="Intro_GDquest" parent="Slides" index="1" instance=ExtResource( 3 )]
visible = false
[node name="HalfFreeContent" parent="Slides" index="2" instance=ExtResource( 4 )]
[node name="MakingGamesTogether" parent="Slides" index="3" instance=ExtResource( 5 )]
visible = false
[node name="WhySharingKnowledge" parent="Slides" index="4" instance=ExtResource( 6 )]
visible = false
[node name="WhyCodebase" parent="Slides" index="5" instance=ExtResource( 7 )]
visible = false
[node name="HowCrowdfunding" parent="Slides" index="6" instance=ExtResource( 8 )]
visible = false
[node name="HowEmpoweringCommunity" parent="Slides" index="7" instance=ExtResource( 9 )]
visible = false
[node name="GodotTitle" parent="Slides" index="8" instance=ExtResource( 10 )]
visible = false
[node name="A_free_modern_engine" parent="Slides" index="9" instance=ExtResource( 11 )]
visible = false
[node name="HowKrita" parent="Slides" index="10" instance=ExtResource( 12 )]
visible = false
[node name="OpenGameProjects" parent="Slides" index="11" instance=ExtResource( 13 )]
visible = false
margin_top = 1.0
margin_bottom = 1.0
[node name="ThankYou" parent="Slides" index="12" instance=ExtResource( 14 )]
visible = false
[node name="TouchControls" parent="." index="2"]
visible = false
[node name="Label" type="Label" parent="." index="3"]
anchor_right = 1.0
margin_top = -101.5
margin_bottom = -14.5
theme = ExtResource( 15 )
text = "Short presentation about bringing people together to make Free and Open Source Games
The goal is to poke people's interest in collaborative work, and hopefully Free Software like Godot, Krita..."
script = SubResource( 1 )
================================================
FILE: godot-3-presentation/content/open_source_games/ThankYou.tscn
================================================
[gd_scene load_steps=12 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/gdquest-business-card.png" type="Texture" id=8]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=10]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="ThankYou" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Thank you!"
subtitle = ""
font_override = null
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 730.0
script = SubResource( 2 )
text = "This presentation and our game projects are Free and Open Source!
Find them on [url=https://github.com/GDquest/godot-3-presentation]GDquest's GitHub page[/url].
We are on:
Twitter: [color=#26BFE3]@NathanGDquest[/color]
YouTube: [color=#F2971A]youtube.com/c/gdquest[/color]"
center = false
[node name="Picture" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 730.0
texture = ExtResource( 8 )
[node name="Footer" parent="Column" index="2" instance=ExtResource( 10 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Any questions? Message me anytime or let's talk after the presentations!"
================================================
FILE: godot-3-presentation/content/open_source_games/img/blender-open-movie.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/blender-open-movie.jpg-19469444d10a87edaeaea32b539c555a.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/blender-open-movie.jpg"
dest_files=[ "res://.import/blender-open-movie.jpg-19469444d10a87edaeaea32b539c555a.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/code-guidelines-1.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/code-guidelines-1.png-831f86e6effa0c047ed175a4ca772149.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/code-guidelines-1.png"
dest_files=[ "res://.import/code-guidelines-1.png-831f86e6effa0c047ed175a4ca772149.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/code-guidelines-2.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/code-guidelines-2.png-04f29e623f2d41ccc55a24b597f47a8e.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/code-guidelines-2.png"
dest_files=[ "res://.import/code-guidelines-2.png-04f29e623f2d41ccc55a24b597f47a8e.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/contributor-review-2.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/contributor-review-2.png-8103f5ebe726a42a14923f5207eb2a0a.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/contributor-review-2.png"
dest_files=[ "res://.import/contributor-review-2.png-8103f5ebe726a42a14923f5207eb2a0a.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/contributor-review.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/contributor-review.png-bb26aa1f8ec9e83a370aeea73200e26f.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/contributor-review.png"
dest_files=[ "res://.import/contributor-review.png-bb26aa1f8ec9e83a370aeea73200e26f.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/discord-openrpg.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/discord-openrpg.png-624a396524ab22307715da7c6d39b44b.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/discord-openrpg.png"
dest_files=[ "res://.import/discord-openrpg.png-624a396524ab22307715da7c6d39b44b.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/gdquest-github-profile.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/gdquest-github-profile.png-257111e1931a1bd3ca5ecaf002ae5768.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/gdquest-github-profile.png"
dest_files=[ "res://.import/gdquest-github-profile.png-257111e1931a1bd3ca5ecaf002ae5768.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/krita.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/krita.png-81ea0ed1170a232300dfedb5ba8677cd.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/krita.png"
dest_files=[ "res://.import/krita.png-81ea0ed1170a232300dfedb5ba8677cd.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/ks-campaign.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/ks-campaign.png-0f87b63f9ee5d0f5672d8fe990eaf0ff.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/ks-campaign.png"
dest_files=[ "res://.import/ks-campaign.png-0f87b63f9ee5d0f5672d8fe990eaf0ff.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/open-arpg-demo.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/open-arpg-demo.png-3adc1bbdcf42e94702fd1be28bdcb42a.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/open-arpg-demo.png"
dest_files=[ "res://.import/open-arpg-demo.png-3adc1bbdcf42e94702fd1be28bdcb42a.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/openrpg-0.3-combat.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/openrpg-0.3-combat.png-251554ce364e5b25c197e827dee8ed89.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/openrpg-0.3-combat.png"
dest_files=[ "res://.import/openrpg-0.3-combat.png-251554ce364e5b25c197e827dee8ed89.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/openrpg-contributions-community.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/openrpg-contributions-community.png-d39363fa5d7463a12e28590b7eedee90.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/openrpg-contributions-community.png"
dest_files=[ "res://.import/openrpg-contributions-community.png-d39363fa5d7463a12e28590b7eedee90.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/thumbnail.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/thumbnail.jpg-ff6cfef315d07ab27b6c2336050abe28.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/thumbnail.jpg"
dest_files=[ "res://.import/thumbnail.jpg-ff6cfef315d07ab27b6c2336050abe28.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/img/yt-videos.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/yt-videos.png-f7e1053faea100ace19c180a19f21261.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/open_source_games/img/yt-videos.png"
dest_files=[ "res://.import/yt-videos.png-f7e1053faea100ace19c180a19f21261.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/open_source_games/slides/HowCrowdfunding.tscn
================================================
[gd_scene load_steps=12 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/open_source_games/img/ks-campaign.png" type="Texture" id=8]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=9]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
export(Resource) var font_override = null
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if font_override:
title_node.set('custom_fonts/font', font_override)
title_shadow_node.set('custom_fonts/font', font_override)
return
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="HowCrowdfunding" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "How? Crowdfunding"
subtitle = "Half of our revenue comes from Kickstarter"
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 710.0
margin_bottom = 730.0
script = SubResource( 2 )
text = "Crowdfunding tips:
1. Do a market study! You should secure sponsors and know how many persons will support you before you launch.
2. Offer a unique product or service.
3. Nurture your community. Keep great relationships with people.
4. Prepare communication and content in advance.
"
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 714.0
margin_right = 1921.0
margin_bottom = 730.0
size_flags_stretch_ratio = 1.7
[node name="picture1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 8 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 9 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "This way, we got all three of our projects funded in 1 to 4 days"
================================================
FILE: godot-3-presentation/content/open_source_games/slides/HowEmpoweringCommunity.tscn
================================================
[gd_scene load_steps=14 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/theme/fonts/title_montserrat.tres" type="DynamicFont" id=4]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/open_source_games/img/contributor-review.png" type="Texture" id=9]
[ext_resource path="res://content/open_source_games/img/contributor-review-2.png" type="Texture" id=10]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=11]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
export(Resource) var font_override = null
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if font_override:
title_node.set('custom_fonts/font', font_override)
title_shadow_node.set('custom_fonts/font', font_override)
return
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="HowEmpoweringCommunity" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "How? Empower people"
font_override = ExtResource( 4 )
[node name="Body" parent="Column" index="1" instance=ExtResource( 5 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 6 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 7 )]
margin_right = 710.0
margin_bottom = 730.0
script = SubResource( 2 )
text = "You want to:
1. Let people contribute ideas
2. Delegate work to contributors
3. Listen to the community
People may code or design differently from you. Don't try to control everything: take their contributions as opportunities to learn new workflows and techniques!
Also, review proposals and let people fix their work themselves."
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 8 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 714.0
margin_right = 1921.0
margin_bottom = 730.0
size_flags_stretch_ratio = 1.7
DISPLAY_DURATION = 8.0
[node name="picture1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="picture2" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="3"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 10 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 11 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Did I mention our community is great?"
================================================
FILE: godot-3-presentation/content/open_source_games/slides/HowKrita.tscn
================================================
[gd_scene load_steps=12 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=5]
[ext_resource path="res://content/open_source_games/img/krita.png" type="Texture" id=6]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=7]
[ext_resource path="res://assets/theme/sprites/header_dusk.png" type="Texture" id=8]
[ext_resource path="res://assets/theme/fonts/title_montserrat.tres" type="DynamicFont" id=9]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
if not title_node:
return
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Label
onready var shadow_node = $Shadow
func display(string):
text = string
shadow_node.text = string
func _on_Subtitle_visibility_updated(visible):
if visible:
valign = Label.VALIGN_BOTTOM
shadow_node.valign = Label.VALIGN_BOTTOM
else:
valign = Label.VALIGN_CENTER
shadow_node.valign = Label.VALIGN_CENTER
"
[node name="HowKrita" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Body" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 4 )]
[node name="PictureSlideshow" parent="Column/Body/Row" index="0" instance=ExtResource( 5 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="godot_editor_2d" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 6 )
expand = true
stretch_mode = 6
[node name="Header" type="TextureRect" parent="Column/Body" index="1" groups=[
"translate",
]]
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_top = -252.0
margin_bottom = -4.0
rect_min_size = Vector2( 0, 210 )
size_flags_horizontal = 3
theme = ExtResource( 7 )
texture = ExtResource( 8 )
expand = true
script = SubResource( 1 )
title = "Game art: made with Krita"
[node name="Title" type="Label" parent="Column/Body/Header" index="0"]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -800.5
margin_top = -116.0
margin_right = 800.5
margin_bottom = 117.0
rect_min_size = Vector2( 800, 0 )
mouse_filter = 0
size_flags_vertical = 3
size_flags_stretch_ratio = 2.2
custom_fonts/font = ExtResource( 9 )
text = "Game art: made with Krita"
align = 1
valign = 1
clip_text = true
uppercase = true
script = SubResource( 2 )
[node name="Shadow" type="Label" parent="Column/Body/Header/Title" index="0"]
modulate = Color( 0.351563, 0, 0.703125, 0.487922 )
show_behind_parent = true
anchor_right = 1.0
anchor_bottom = 1.0
margin_top = 57.7501
margin_bottom = 57.7501
mouse_filter = 0
size_flags_vertical = 3
size_flags_stretch_ratio = 2.2
custom_fonts/font = ExtResource( 9 )
text = "Game art: made with Krita
"
align = 1
valign = 1
clip_text = true
uppercase = true
================================================
FILE: godot-3-presentation/content/open_source_games/slides/HowSupportiveCommunity.tscn
================================================
[gd_scene load_steps=13 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/theme/fonts/title_montserrat.tres" type="DynamicFont" id=4]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/open_source_games/img/ks-campaign.png" type="Texture" id=9]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=10]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
export(Resource) var font_override = null
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if font_override:
title_node.set('custom_fonts/font', font_override)
title_shadow_node.set('custom_fonts/font', font_override)
return
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="HowSupportiveCommunity" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Our community is great!"
subtitle = "Hundreds of developers trust and support us"
font_override = ExtResource( 4 )
[node name="Body" parent="Column" index="1" instance=ExtResource( 5 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 6 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 7 )]
visible = false
margin_right = 710.0
margin_bottom = 730.0
script = SubResource( 2 )
text = "Crowdfunding tips:
1. Do a market study! You should secure sponsors and know how many persons will support you before you launch.
2. Offer a unique product or service.
3. Nurture your community. Keep great relationships with people.
4. Prepare communication and content in advance.
"
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 8 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 730.0
size_flags_stretch_ratio = 1.7
DISPLAY_DURATION = 8.0
[node name="picture1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 10 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "This way, we got all three of our projects funded in 1 to 4 days"
================================================
FILE: godot-3-presentation/content/open_source_games/slides/MakingGamesTogether.tscn
================================================
[gd_scene load_steps=13 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/theme/fonts/title_montserrat.tres" type="DynamicFont" id=4]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/open_source_games/img/open-arpg-demo.png" type="Texture" id=9]
[ext_resource path="res://content/open_source_games/img/openrpg-0.3-combat.png" type="Texture" id=10]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
export(Resource) var font_override = null
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if font_override:
title_node.set('custom_fonts/font', font_override)
title_shadow_node.set('custom_fonts/font', font_override)
return
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="MakingGamesTogether" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Making games together"
font_override = ExtResource( 4 )
[node name="Body" parent="Column" index="1" instance=ExtResource( 5 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 6 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 7 )]
margin_right = 766.0
margin_bottom = 870.0
script = SubResource( 2 )
text = "Since October 2018 we started Open Source projects with our community.
- Our Zelda-like ARPG demo has 5 contributors.
- Open RPG, our RPG gameplay engine, has 12 contributors already.
And we are just getting started!"
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 8 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 770.0
margin_right = 1921.0
margin_bottom = 870.0
size_flags_stretch_ratio = 1.5
DISPLAY_DURATION = 8.0
[node name="picture1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="picture2" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="3"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 10 )
expand = true
stretch_mode = 6
================================================
FILE: godot-3-presentation/content/open_source_games/slides/OpenGameProjects.tscn
================================================
[gd_scene load_steps=11 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/open_source_games/img/blender-open-movie.jpg" type="Texture" id=8]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="OpenGameProjects" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Going further"
subtitle = "Open Game projects"
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 870.0
script = SubResource( 2 )
text = "Our ambition is to make Open Game projects like Blender's Open Movies:
1. Create great little games
2. Improve our favorite Free Software
3. Offer Free education to everyone
Everyone's welcome to work together on this journey!
We're already building the foundations."
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 870.0
DISPLAY_DURATION = 6.0
[node name="godot_editor_2d" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 8 )
expand = true
stretch_mode = 6
================================================
FILE: godot-3-presentation/content/open_source_games/slides/OpenSourceGamesTitle.tscn
================================================
[gd_scene load_steps=4 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=2]
[ext_resource path="res://content/open_source_games/img/thumbnail.jpg" type="Texture" id=3]
[node name="OpenSourceGamesTitle" index="0" instance=ExtResource( 1 )]
[node name="Picture" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
texture = ExtResource( 3 )
================================================
FILE: godot-3-presentation/content/open_source_games/slides/WeMakeFreeContent.tscn
================================================
[gd_scene load_steps=14 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/theme/fonts/title_montserrat.tres" type="DynamicFont" id=4]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/tokyo_indies_pitch/img/godot-slides-2-logo.jpg" type="Texture" id=9]
[ext_resource path="res://content/tokyo_indies_pitch/img/open-rpg-banner.png" type="Texture" id=10]
[ext_resource path="res://content/open_source_games/img/gdquest-github-profile.png" type="Texture" id=11]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
export(Resource) var font_override = null
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if font_override:
title_node.set('custom_fonts/font', font_override)
title_shadow_node.set('custom_fonts/font', font_override)
return
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="HalfFreeContent" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Game Design Quest"
font_override = ExtResource( 4 )
[node name="Body" parent="Column" index="1" instance=ExtResource( 5 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 6 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 7 )]
margin_right = 766.0
margin_bottom = 870.0
script = SubResource( 2 )
text = " More than 50% of the work we do is available for free:
- Hundreds of tutorials
- Contributions to Free Software
- Open source tools for game developers
Sounds crazy? It is!
But we get to work full-time on projects we love, and share everything we create from the start.
"
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 8 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 770.0
margin_right = 1921.0
margin_bottom = 870.0
size_flags_stretch_ratio = 1.5
DISPLAY_DURATION = 8.0
[node name="Column" parent="Column/Body/Row/PictureSlideshow" index="2" instance=ExtResource( 2 )]
size_flags_stretch_ratio = 1.4
[node name="godot-slides-2-logo" type="TextureRect" parent="Column/Body/Row/PictureSlideshow/Column" index="0"]
margin_right = 1151.0
margin_bottom = 435.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 9 )
expand = true
stretch_mode = 5
[node name="banner-power-sequencer-1.1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow/Column" index="1"]
margin_top = 435.0
margin_right = 1151.0
margin_bottom = 870.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 10 )
expand = true
stretch_mode = 5
[node name="picture1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="3"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 11 )
expand = true
stretch_mode = 6
================================================
FILE: godot-3-presentation/content/open_source_games/slides/WhyCodebase.tscn
================================================
[gd_scene load_steps=14 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/theme/fonts/title_montserrat.tres" type="DynamicFont" id=4]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/open_source_games/img/code-guidelines-1.png" type="Texture" id=9]
[ext_resource path="res://content/open_source_games/img/code-guidelines-2.png" type="Texture" id=10]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=11]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
export(Resource) var font_override = null
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if font_override:
title_node.set('custom_fonts/font', font_override)
title_shadow_node.set('custom_fonts/font', font_override)
return
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="WhyCodebase" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Why? Better code"
font_override = ExtResource( 4 )
[node name="Body" parent="Column" index="1" instance=ExtResource( 5 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 6 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 7 )]
margin_right = 710.0
margin_bottom = 730.0
script = SubResource( 2 )
text = "Working together forces us to write code that is easy to read and to maintain.
We're working on code guidelines that the entire community can use to that end.
People find and fix bugs we didn't know about. Contributors add features we wouldn't have the time or resources to code ourselves."
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 8 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 714.0
margin_right = 1921.0
margin_bottom = 730.0
size_flags_stretch_ratio = 1.7
DISPLAY_DURATION = 8.0
[node name="picture1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="picture2" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="3"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 10 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 11 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Also, we're building up reusable tools and scripts to get new projects started faster."
================================================
FILE: godot-3-presentation/content/open_source_games/slides/WhySharingKnowledge.tscn
================================================
[gd_scene load_steps=14 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/theme/fonts/title_montserrat.tres" type="DynamicFont" id=4]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/open_source_games/img/discord-openrpg.png" type="Texture" id=9]
[ext_resource path="res://content/open_source_games/img/openrpg-contributions-community.png" type="Texture" id=10]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=11]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
export(Resource) var font_override = null
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if font_override:
title_node.set('custom_fonts/font', font_override)
title_shadow_node.set('custom_fonts/font', font_override)
return
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="WhySharingKnowledge" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Why? Everyone shares"
font_override = ExtResource( 4 )
[node name="Body" parent="Column" index="1" instance=ExtResource( 5 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 6 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 7 )]
margin_right = 766.0
margin_bottom = 730.0
script = SubResource( 2 )
text = "We all share what we know.
We are all mentors and students at the same time.
In the community people are kind to one another. Sometimes we even become friends!
The contributors get Free training and professional experience working in a team."
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 8 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 770.0
margin_right = 1921.0
margin_bottom = 730.0
size_flags_stretch_ratio = 1.5
DISPLAY_DURATION = 8.0
[node name="picture1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="picture2" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="3"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 10 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 11 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Together we can create something greater than we could individually."
================================================
FILE: godot-3-presentation/content/power_pitch/PowerPitch.csv
================================================
id,en,fr,ja,es,pt_BR,de,it,zh,uk_UA,ko,sk,pl,id
A_free_modern_engine_Column_Header_title,A Free modern engine,Un moteur moderne et gratuit,最新のオープンソースゲームエンジン,Un motor libre y moderno,Livre e Moderno,Eine freie moderne Spiele-Engine,Un motore di gioco libero,一个现代化的免费引擎,Вілний та сучасний двигун,자유로운 현대적인 엔진,Moderný herný engine zadarmo,Darmowy współczesny silnik,Sebuah Engine mutakhir yang bebas
A_free_modern_engine_Column_Body_Row_TextBox_text,"Separate [color=#26BFE3]2d[/color] and [color=#E3266F]3d[/color] renderers
Complete [color=#F2971A]game editor[/color]
Create projects with Windows, Mac, Linux
Build games for PC, mobile, web*
4 years after being open sourced, Godot is becoming a serious alternative to engines like Unity or Unreal.","Moteurs de rendu [color=#26BFE3]2d[/color] et [color=#E3266F]3d[/color] séparés
[color=#F2971A] Éditeur de jeu[/color] complet
Créez vos projets sur Windows, Mac, ou Linux
Exportez vos jeux sur PC, mobile, web*","[color=#26BFE3]2D[/color]と[color=#E3266F]3D[/color] 両方のレンダリングエンジン
全面的な[color=#F2971A]ゲームエディタ[/color]
プロジェクトは、WindowsかMacかLinuxで作ることができます。
ゲームを[color=#02E180]コンピューター[/color]や[color=#02E180]モバイル[/color]、[color=#02E180]インターネット[/color]などにエクスポートできます*
4年前にオプンソースになりましたが最初ゲーム会社のエンジンで10年まえからずっと開発されました。
Godotは若い割に段々UnityやUnrealなどのように大きくなっています。","Renderers [color=#26BFE3]2D[/color] y [color=#E3266F]3D[/color] independientes
[color=#F2971A]Editor de juegos[/color] completo
Crea proyectos en Windows, Mac y Linux
Exportalos a PC, móvil, web*","[color=#26BFE3]2d[/color] e [color=#E3266F]3d[/color] independentes
Um [color=#F2971A]editor de jogos[/color] completo
Crie projetos com Windows, Mac e Linux
Crie jogos para PC, mobile e Web*","Getrennte [color=#26BFE3]2d[/color] und [color=#E3266F]3d[/color] Render-Engines
Kompletter [color=#F2971A]Spiele Editor[/color]
Bearbeite deine Projekte mit: Windows, Mac, Linux
Erstelle Spiele für PC, Handy, Web*","Renderer [color=#26BFE3]2d[/color] e [color=#E3266F]3d[/color] moderni
[color=#F2971A]Game editor[/color] completo
Crea progetti con Windows, Mac, Linux
Crea giochi per PC, mobile, web*","独立分开的 [color=#26BFE3]2d[/color] 和 [color=#E3266F]3d[/color] 渲染引擎
全能的[color=#F2971A]游戏编辑器[/color]
支持在 Windows, Mac, Linux 操作系统上创建项目
最终发布到电脑,手机,网页平台上*","Окремі [color=#26BFE3]2d[/color] та [color=#E3266F]3d[/color] рендерери
Довершений [color=#F2971A]ігровий редактор[/color]
Створюйте свої проекти на Windows, Mac, Linux
Експортуйте для PC, mobile, web*","[color=#26BFE3]2d[/color] 와 [color=#E3266F]3d[/color] 렌더러를 분리
통합된 [color=#F2971A]게임 에디터[/color]
윈도우, 맥, 리눅스에서 프로젝트를 제작합니다
PC, 모바일, 웹*으로 게임을 출시할 수 있습니다","Oddelené [color=#26BFE3]2D[/color] a [color=#E3266F]3D[/color] renderery
Kompletný [color=#F2971A]herný editor[/color]
Tvorba projektov na Windows, Mac, Linux
Zostavenie hier pre PC, mobily, web*","Osobne silniki renderujące [color=#26BFE3]2D[/color] i [color=#E3266F]3D[/color]
Kompletny [color=#F2971A]edytor gier[/color]
Twórz projekty na Windowsie, Macu, Linuksie
Buduj gry na PC, urządzenia mobilne, przeglądarki*","Perender berbeda untuk [color=#26BFE3]2d[/color] dan [color=#E3266F]3d[/color]
[color=#F2971A]Editor game[/color] yang lengkap
Buat proyek dengan Windows, Mac, Linux
Bangun game untuk PC, mobile, web*"
A_free_modern_engine_Column_Footer_text,"*And PS4, XboxOne, Switch, PS Vita...","*Et sur PS4, XboxOne, Switch, PS Vita ...",*コンソールのためにも出力できます,"*Y PS4, Xbox One, Switch, PS Vita...","*E também PS4, XboxOne, Switch, PS Vita...","*Und PS4, XboxOne, Switch, PS Vita...","*e per PS4, XboxOne, Switch, PS Vita...","*包括 PS4, XboxOne, Switch, PS Vita 等平台...","*Та PS4, XboxOne, Switch, PS Vita...","*그리고 PS4, XboxOne, Switch, PS Vita 등","*a PS4, XboxOne, Switch, PS Vita...","*A także PS4, XboxOne, Switch, PS Vita...","*Dan PS4, XboxOne, Switch, PS Vita..."
State_of_the_art_3d_engine_Column_Header_title,State of the art 3d engine,Moteur 3d dernier-cri,最先端の3Dエンジン,Motor 3D a la última,Um moderno motor 3D,Aktuelle 3d Engine,3D engine allo stato dell’arte,先进的3d引擎技术,Сучасний 3d двигун,3D 엔진의 기술 수준,3d engine na úrovni doby,Nowoczesny silnik 3d,Engine 3D yang revolusioner
State_of_the_art_3d_engine_Column_Body_Row_TextBox_text,"[color=#E3266F]Physically-based rendering[/color] with full MSAA support
[color=#02E180]Full principled BSDF[/color] with Subsurface Scattering, reflection, refraction, clearcoat...
[color=#26BFE3]Global illumination[/color] for gorgeous real-time graphics
[color=#F2971A]Mid and Post processing effects[/color] including curves and auto exposure, screen-space reflections, fog, bloom, depth of field...","[color=#E3266F]Rendu PBR (Physically-based rendering)[/color] avec anti-aliasing MSAA
[color=#02E180]Matériau BSDF[/color] de Pixar avec support du Subsurface Scattering, réflexion, réfraction, clearcoat...
[color=#26BFE3]Illumination globale[/color] en temps réel
[color=#F2971A]Effets d'image mid et post-rendu[/color]: courbes et exposition automatique, reflets en espace-écran, brouillard, bloom, profondeur de champ...","MSAAをサポートする[color=#E3266F]物理ベースレンダリング[/color]
[color=#02E180]BSDFマテリアル[/color]:皮下拡散(Subsurface Scattering)や反射率, 空間屈折(Refraction)などに使用可能です
[color=#26BFE3]間接光・放射[/color](Global Illumination)
[color=#F2971A]後処理[/color]:自動露光しSSRし被写界深度などがあります","[color=#E3266F]Renderizado basado en físicas[/color] con soporte para MSAA
[color=#02E180]Soporta BSDF[/color] con Subsurface Scattering, reflejos, refracción, clearcoat...
[color=#26BFE3]Iluminación global[/color] para preciosos gráficos en tiempo real
[color=#F2971A]Efectos de mid/pos-procesado[/color], incluyendo curvas y auto exposición, reflejos en screen-space, niebla, resplandores, profundidad de campo…","[color=#E3266F]Renderização Baseada em Física(PBR)[/color] com suporte completo para MSAA
[color=#02E180]Materiais BSDF[/color] com Subsurface Scattering, reflexos, refração, clearcoat...
[color=#26BFE3]Iluminação Global[/color] para lindos gráficos em tempo real
[color=#F2971A]Efeitos de Mid e Pós processamento[/color] incluindo curvas e exposição automática, reflexos em screen-space, névoa, brilho (bloom), profundidade de campo…","[color=#E3266F]Physically-based rendering[/color] mit voller MSAA Unterstützung
[color=#02E180]Full principled BSDF[/color] mit Subsurface Scattering, Reflektion, Lichtbrechung, Klarlack...
[color=#26BFE3]Global Illumination[/color] für großartige Echtzeitgrafik
[color=#F2971A]Mid und Post processing Effekte[/color] mit Kurven, automatische Belichtung, Screen-Space Reflektionen, Nebel, Bloom, Tiefenschärfe…","[color=#E3266F]Physically-based rendering[/color] con pieno supporto a MSAA
[color=#02E180]Full principled BSDF[/color] con Subsurface Scattering, riflessi, rifrazioni, clearcoat...
[color=#26BFE3]Global illumination[/color] per una stupenda grafica real-time
[color=#F2971A]Effetti Mid and Post processing[/color] con curve e auto esposizione, riflessi screen-space, fog, bloom, depth of field...","[color=#E3266F]基于物理引擎渲染[/color]并且全面支持多重采样抗锯齿(MSAA)功能
[color=#02E180]完全遵循双向散射分布函数(BSDF)规则[/color]以及细分表面散射, 反射, 折射, 透明涂层等等...
[color=#26BFE3]支持全局光照功能[/color]以实现华丽而又真实的画面特效
[color=#F2971A]支持中后期特效处理技术[/color]包括曲线式和自动式曝光, 屏幕空间反射, 雾气, 亮光, 以及景深设置等等…","[color=#E3266F]PBR рендерер[/color] з повною підтримкою MSAA
[color=#02E180]Повна реалізація принципів BSDF[/color] із Підповерхневим розсіюванням, відбиттям, рефракцією, прозорістю тощо…
[color=#26BFE3]Глобальне освітлення[/color] для отримання неперевершеної графіки в реальному часі
[color=#F2971A]Mid та Post processing ефекти[/color] в тому числі криві, авто експозиція, screen-space відбиття, імла, світіння, глибина різкості тощо…","완전한 MSAA를 지원하는 [color=#E3266F]물리 기반 렌더링[/color]
Subsurface Scattering, 반사, 굴절, Clearcoat 등으로 [color=#02E180]완전한 principled BSDF[/color]
멋진 실시간 그래픽을 위한 [color=#26BFE3]글로벌 일루미네이션[/color]
곡선 및 자동 노출, 스크린 영역 반사(SSR), 안개, 눈부심, 피사계심도 등이 포함된 [color=#F2971A]중간 및 포스트 프로세싱 효과[/color]","[color=#E3266F]Fyzikálne-založený rendering[/color] s plnou podporou MSAA
[color=#02E180]Úplný 'Principled BSDF'[/color] s podpovrchovým rozptylom, odrazom, lomom svetla, bezfarebným lakom...
[color=#26BFE3]Globálne osvetlenie[/color] pre úžasnú grafiku v reálnom čase
[color=#F2971A]Mid a Post processing efekty[/color] vrátane kriviek a automatickej expozície, screen-space odrazov, hmly, presvetlenia, hĺbky ostrosti...","[color=#E3266F]Rendering bazujący na fizyce (PBR)[/color] z pełnym wsparciem dla MSAA
[color=#02E180]Pełen „Principled BSDF”[/color] z rozpraszaniem powierzchniowym, odbiciami, załamaniem światła, clearcoat...
[color=#26BFE3]Globalne oświetlenie[/color] dla pięknej grafiki w czasie rzeczywistym
[color=#F2971A]Efekty mid- i post-processing[/color], w tym krzywe, auto-naświetlenie, technika SSR, mgła, efekt bloom, głębia ostrości (DOF)...","[color=#E3266F]Physically-based rendering[/color] dengan dukungan penuh MSAA
[color=#02E180]Full principled BSDF[/color] dengan Subsurface Scattering, refleksi, refraksi, clearcoat...
[color=#26BFE3]Global illumination[/color] untuk grafik yang cantik secara real time
[color=#F2971A]Efek Mid and Post processing[/color] termasuk kurva dan auto exposure, pemantulan layar-ruang, kabut, bloom, depth of field..."
State_of_the_art_3d_engine_Column_Footer_text,Designed to work well with Blender 2.8's Eevee realtime engine,Compatible avec le moteur en temps réel Eevee de Blender 2.8,Blender3d 2.8のEeveeリアルタイムレンダリングエンジンと互換します,Diseñado para funcionar perfectamente junto al motor en tiempo real Eeevee de Blender 2.8,"Desenhado para uma excelente integração com o motor gráfico Eevee, disponível no Blender 2.8+","Entwickelt, um mit Eevee, Echtzeit-Engine von Blender 2.8, gut zu funktionieren",Progettato per integrarsi con Eevee il motore realtime di Blender 2.8,深度配合Blender 2.8版本中的Eevee实时渲染引擎,Призначений для роботи з Blender 2.8's Eevee realtime engine,Blender 2.8의 Eevee 실시간 엔진과도 잘 작동되도록 설계되었습니다,Navrhnutý pre dobrú spoluprácu s Eevee realtime engine z Blendera 2.8,Zaprojektowany dla dobrej współpracy z silnikiem Eevee Blendera 2.8,"Didesain untuk bekerja secara baik dengan engine real time milik Blender 2.8, Eevee"
All_in_one_package_Column_Header_title,All-in-one package,Un outil tout-en-un,必要とするツールは全て含まれています,Todo en uno,Tudo em um!,All-in-one Paket,Tutto in uno,一体化配置,Все в одному,일체형 패키지,Balík všetko v jednom,Wszystko w jednym,Semua dalam satu paket
All_in_one_package_Column_Body_Row_TextBox_text,"- [color=#E3266F]Code editor[/color] with embedded docs and autocompletion
- [color=#26BFE3]Animation[/color] editor with 2d rigging
- [color=#F2971A]Tilemap editor[/color] with autotiles
- [color=#02E180]Shader[/color] editor, visual and code
- [color=#02E180]UI theme editor[/color]
New tools get in with each version!","- [color=#E3266F]Éditeur de code[/color] avec référence intégrée et autocomplétion
- [color=#26BFE3]Éditeur d'animations[/color] avec skinning et rigging 2D
- [color=#F2971A]Éditeur de tilesets et de tilemaps[/color], autotiles inclus
- [color=#02E180]Éditeur de shader[/color]: sous forme de briques visuelles ou via un langage simplifié
- [color=#02E180]Éditeur de thème de l'interface utilisateur[/color]
De nouveaux outils sont ajoutés avec chaque version!","- 便覧が含まれている[color=#E3266F]開発環境[/color]
- IKとリギングできる[color=#26BFE3]アニメーションエディタ[/color]
- [color=#F2971A]タイルセットとタイルマップエディタ[/color]
- [color=#02E180]シェーダーエディタ[/color]、表か書かれたコードでプログラミングできます
- [color=#02E180]ジーユーアイテーマエディタ[/color]
開発者たちはいつも新しいツールを作っています","- [color=#E3266F]Editor de texto[/color] con autocompletado y documentación
- Editor de [color=#26BFE3]animaciones[/color] con rigging 2D
- [color=#F2971A]Editor de tilemaps[/color] con autotiles
- Editor de [color=#02E180]shaders[/color], visual y en código
- [color=#02E180]Editor de temas para UIs[/color]
¡Nuevas herramientas en cada versión!","- [color=#E3266F]Editor de Texto[/color] com documentação e autocompletar embutidos
- [color=#26BFE3]Editor de Animações[/color] com rigging 2D
- [color=#F2971A]Editor de Tilemaps[/color] com autotiles
- [color=#02E180]Editor de Shaders[/color] com programação visual e textual
- [color=#02E180]Editor de Interface de Usuário[/color] para criar temas incríveis
Novas ferramentas a cada versão!","- [color=#E3266F]Code Editor[/color] mit integrierter Dokumentation und Autovervollständigung
- [color=#26BFE3]Animation[/color] Editor mit 2d Rigging
- [color=#F2971A]Tilemap Editor[/color] mit Auto-Tiles
- [color=#02E180]Shader[/color] Editor, Visuell- und Codebasiert
- [color=#02E180]UI Theme-Editor[/color]
Mit jeder Version kommen neue Tools hinzu!","- [color=#E3266F]Code editor[/color] con documentazione integrata ed autocompletamento
- [color=#26BFE3]Animation[/color] editor con 2d rigging
- [color=#F2971A]Tilemap editor[/color] con autotiles
- [color=#02E180]Shader[/color] editor, visuale e testuale
- [color=#02E180]Editor di temi UI[/color]
Nuovi tool in ogni nuova versione!","- 内嵌文档和自动补全功能的[color=#E3266F]代码编辑器[/color]
- 支持2D骨骼绑定的[color=#26BFE3]动画[/color]编辑工具
- 自动瓦片设定的[color=#F2971A]瓦片地图编辑器[/color]
- 可视化代码编写功能的[color=#02E180]着色[/color]编辑器
- 以及[color=#02E180]UI主题编辑器[/color]
每个版本都有新的工具发布!","- [color=#E3266F]Редактор коду[/color] з вубдованою документацією та автодоповнюванням
- [color=#26BFE3]Редактор анімацій[/color] із 2d ріґінґом
- [color=#F2971A]Редактор тайлів[/color] з автотайлінгом
- [color=#02E180]Редагування шейдерів[/color] як візуальне, так і за допомоги коду
- [color=#02E180]Редактор тем інтерфейсу[/color]
Із кожною версією додаються нові інструменти!","- 사전이 내장되어있고 자동완성을 지원하는 [color=#E3266F]코드 에디터[/color]
- 2d 리깅을 지원하는 [color=#26BFE3]애니메이션[/color] 에디터
- 오토타일을 지원하는 [color=#F2971A]타일맵 에디터[/color]
- [color=#02E180]셰이터[/color] 에디터, 시각적 코드 또는 문자 코드
- [color=#02E180]UI 테마 에디터[/color]
새로운 도구가 각 버전마다 도입됩니다!","- [color=#E3266F]Code editor[/color] so vstavanou dokumentáciou a autodopĺňaním
- [color=#26BFE3]Animation[/color] editor s 2D riggingom
- [color=#F2971A]Tilemap editor[/color] s autotiles
- [color=#02E180]Shader[/color] editor, vizuálny a cez kód
- [color=#02E180]UI theme editor[/color]
Každá ďalšia verzia prináša nové nástroje!","- [color=#E3266F]Edytor kodu[/color] z wbudowaną dokumentacją i autouzupełnianiem
- [color=#26BFE3]Edytor animacji[/color] z riggingiem 2d
- [color=#F2971A]Edytor tilemap[/color] z autotile'ami
- [color=#02E180]Edytor shaderów[/color] wizualny i kodowy
- [color=#02E180]Edytor motywów UI[/color]
Z nowymi narzędziami dodawanymi w każdej wersji!","- [color=#E3266F]Editor kode[/color] dengan dokumentasi dan pelengkapan otomatis
- Editor [color=#26BFE3]Animasi[/color] dengan rigging 2d
- [color=#F2971A]Editor Tilemap[/color] dengan pembuatan tile otomatis
- Editor [color=#02E180]Shader[/color], secara visual dan kode
- [color=#02E180]Editor tema UI[/color]
Fitur baru akan masuk disetiap versinya!"
All_in_one_package_Column_Footer_text,For instance Godot 3.1 ships with a new animation editor that supports cut-scenes,"La version 3.1 apporte un éditeur de cinématiques avec le séquençage d'animations, par exemple",2D IKとメッシュスッキニングはもう入手可能,"Por ejemplo, Godot 3.1 trae un nuevo editor de animaciones con soporte para cinemáticas","Por exemplo, Godot 3.1 traz um editor de animações novo que facilita a criação de cut-scenes",Zum Beispiel Godot 3.1 kommt mit einem neuen Animation-Editor der Cut-Szenen unterstützt,Ad esempio Godot 3.1 è rilasciato con un nuovo editor di animazioni con supporto alle cut-scene,例如Godot 3.1版本中搭载了一个全新的支持场景剪裁功能的动画编辑器,"Наприклад, Godot 3.1 йде в комплекті з новим редактором анімацій, що підтримує катсцени",예를들어 Godot 3.1에서는 컷 씬을 지원하는 새로운 애니메이션 에디터가 도입됩니다,Napr. Godot 3.1 príde s novým editorom animácií s podporou cut-scenes,"Godot 3.1, na przykład, wydany został z nowym edytorem animacji wspierającym cutscenki","Sebagai contoh, Godot 3.1 akan hadir dengan editor animasi yang mendukung pembuatan cut-scenes"
CreateAnything_Column_Header_title,Create Anything,Créez toutes sortes d'applications,何でも作られます,Creación sin límites,Crie qualquer coisa,Erstelle alles Mögliche,Crea qualsiasi cosa,创造任何你所想,Створюй Будь-що,무엇이든 만드십시오,Vytvorte čokoľvek,Twórz co zechcesz,Buat apa saja
CreateAnything_Column_Header_subtitle,"2d and 3d Games, tools, or applications","Jeux 2d et 3d, outils ou programmes",2Dと3Dゲームしツールしソフトウェアもできます,"Juegos en 2D y 3D, herramientas, aplicaciones…","Jogos 2D e 3D, ferramentas, aplicativos…","2d und 3d Spiele, Tools, oder Anwendungen","Giochi 2d e 3d, strumenti o applicazioni","2D和3D游戏,工具,应用软件等","2d чи 3d Ігри, інструменти чи додатки","2d 및 3d 게임, 도구, 혹은 응용 프로그램","2D a 3D hry, nástroje alebo aplikácie","Gry 2D i 3D, narzędzia, aplikacje...","Games 2d dan 3d, perkakas, atau aplikasi"
CreateAnything_Column_Body_Row_TextBox_text,"Projects:
- [color=#F2971A]Ex Zodiac[/color], by Ben Hickling
- [color=#02E180]RPG in a Box[/color], by Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], by Bastiaan Olij","Projets:
- [color=#F2971A]Ex Zodiac[/color], par Ben Hickling
- [color=#02E180]RPG dans une boîte[/color], par Justin Arnold
- [color=#26BFE3]Procedural mesh graph*[/color], outil de modélisation procédurale via un langage visuel, par Bastiaan Olij","プロジェクト:
- ベン・ヒックリングの[color=#F2971A]Ex Zodiac[/color]
- ジャスティン・アーノルドの[color=#02E180]RPG in a Box[/color]
- バスティアン・オリェの[color=#26BFE3]Procedural Mesh Generator[/color]*","Proyectos:
- [color=#F2971A]Ex Zodiac[/color], por Ben Hickling
- [color=#02E180]RPG in a Box[/color], por Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], por Bastiaan Olij","Projetos:
- [color=#F2971A]Ex Zodiac[/color], por Ben Hickling
- [color=#02E180]RPG in a Box[/color], por Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], por Bastiaan Olij","Projekte*:
- [color=#F2971A]Ex Zodiac[/color], von Ben Hickling
- [color=#02E180]RPG in a Box[/color], von Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], von Bastiaan Olij","Progetti:
- [color=#F2971A]Ex Zodiac[/color], di Ben Hickling
- [color=#02E180]RPG in a Box[/color], di Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], di Bastiaan Olij","项目列表:
- [color=#F2971A]Ex Zodiac[/color], 作者 Ben Hickling
- [color=#02E180]RPG in a Box[/color], 作者 Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], 作者 Bastiaan Olij","Проекти:
- [color=#F2971A]Ex Zodiac[/color], від Ben Hickling
- [color=#02E180]RPG in a Box[/color], від Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], від Bastiaan Olij","프로젝트:
- Ben Hickling이 만든 [color=#F2971A]Ex Zodiac[/color]
- Justin Arnold가 만든 [color=#02E180]RPG in a Box[/color]
- Bastiaan Olij가 만든 [color=#26BFE3]Procedural Mesh Generator[/color]","Projekty*:
- [color=#F2971A]Ex Zodiac[/color], autor Ben Hickling
- [color=#02E180]RPG in a Box[/color], autor Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], autor Bastiaan Olij","Projekty*:
- [color=#F2971A]Ex Zodiac[/color], autor: Ben Hickling
- [color=#02E180]RPG in a Box[/color], autor: Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], autor: Bastiaan Olij","Proyek:
- [color=#F2971A]Ex Zodiac[/color], oleh Ben Hickling
- [color=#02E180]RPG in a Box[/color], oleh Justin Arnold
- [color=#26BFE3]Procedural Mesh Generator[/color], oleh Bastiaan Olij"
CreateAnything_Column_Footer_text,"*Open source, available on GitHub","*Open Source, disponible sur GitHub",*GitHubでダウンロードできるオプンソースパラグイン,"*Open source, disponible en GitHub","*Código aberto, disponível no GitHub","*Open source, verfügbar auf GitHub","*Open source, disponibile su GitHub",*开源在GitHub上,"*Відкритий код, доступний на GitHub","*오픈소스로, GitHub에서 사용하실 수 있습니다","*Open source, dostupné na GitHub-e","*Open source, dostępne na GitHubie","*Sumber terbuka, tersedia di GitHub"
CodeFreely_Header_title,Code freely,"Programmez librement
",自由にプログラミングできます,Programa a tu manera,Programe livremente,Freies Coden,Programma liberamente,自由代码编写,Програмуй вільно,자유로운 코딩,Slobodné kódovanie,Swobodne kodowanie,Bebas mengkode
CodeFreely_Body_Row_TextBox_text,"Godot lets you use many programming languages:
[color=#02E180]GDScript[/color] Python-like scripting language, designed for gameplay developers
[color=#F2971A]C# 7.0[/color] support using Mono
Full [color=#E3266F]C[/color] and [color=#E3266F]C++[/color] support without having to recompile the engine
[color=#26BFE3]Visual scripting[/color] using a graph of blocks","Godot vous donne le choix entre de nombreux langages de programmation:
[color=#02E180]GDScript[/color], langage de scripting ressemblant à Python, conçu pour les programmeurs gameplay
[color=#F2971A]C# 7.0[/color] avec le compileur Mono
Support de [color=#E3266F]C[/color] et de [color=#E3266F]C ++[/color] sans avoir à recompiler le moteur
[color=#26BFE3]VisualScript[/color], langage de programmation visuel","Godotでいろんなコンピューター言語で書けます:
Pythonのような[color=#02E180]GDScript[/color]と言うゲーム開発者用言語
MicrosoftのMonoコンパイラで[color=#F2971A]C# 7.0[/color]サポート
エンジンをコンパイル無しで全体の[color=#E3266F]C[/color]と[color=#E3266F]C++[/color]サポート
表の[color=#26BFE3]VisualScript[/color]というのデザイナーのための言語","Godot te deja usar muchos lenguajes de programación:
[color=#02E180]GDScript[/color] lenguaje similar a Python, diseñado para desarrolladores de gameplay
[color=#F2971A]C# 7.0[/color] usando Mono
Full [color=#E3266F]C[/color] y [color=#E3266F]C++[/color] sin necesidad de recompilar el motor
[color=#26BFE3]Scripting visual[/color] usando grafos de bloques","Godot lhe permite usar várias linguagens de programação:
[color=#02E180]GDScript[/color] uma linguagem de scripts muito parecida com Python, desenhada para desenvolvimento de gameplay
[color=#F2971A]C# 7.0[/color] usando o compilador Mono
Suporte completo para [color=#E3266F]C[/color] e [color=#E3266F]C++[/color] sem ter de recompilar
[color=#26BFE3]Visual scripting[/color] usando editor gráfico e blocos de lógica","Godot kann man mit vielen Programmiersprachen nutzen:
[color=#02E180]GDScript[/color] Python-ähnliche Skriptsprache, Entwickelt für Spieleentwickler
[color=#F2971A]C# 7.0[/color] Unterstützung mit Mono
Full [color=#E3266F]C[/color] und [color=#E3266F]C++[/color] Unterstützung, ohne die Engine neu kompilieren zu müssen
[color=#26BFE3]Visuelles Skripting[/color] mit einem Graph von Blöcken","Godot ti permette di usare vari linguaggi di programmazione:
[color=#02E180]GDScript[/color] un linguaggio di scripting Python-like, progettato per gameplay developer
[color=#F2971A]C# 7.0[/color] supportato utilizzando Mono
Pieno supporto [color=#E3266F]C[/color] and [color=#E3266F]C++[/color] senza bisogno di ricompilare l’engine
[color=#26BFE3]Visual scripting[/color] utilizzando grafi e blocchi","Godot支持很多门编程语言:
[color=#02E180]GDScript[/color]是一门类似Python的脚本语言, 为游戏开发者量身打造
支持在Mono平台上使用[color=#F2971A]C# 7.0[/color]语言进行开发
完全支持 [color=#E3266F]C[/color] 和 [color=#E3266F]C++[/color] 编程语言,无需重新编译
使用图形化代码块的[color=#26BFE3]可视化脚本语言[/color]","Godot дозволяє користатися багатьма мовами програмування:
[color=#02E180]GDScript[/color] Python-подібна скриптова мова, спроектована для розробників ігор
[color=#F2971A]C# 7.0[/color] підтримується за дпомоги Mono
Повна підтримка [color=#E3266F]C[/color] та [color=#E3266F]C++[/color] без необхідності рекомпіляції двигуна
[color=#26BFE3]Візуальне програмування[/color] за допомги блочних графів","Godot에서는 많은 프로그래밍 언어를 사용하실 수 있습니다:
Python과 유사한 스크립트 언어로, 게임플레이 개발자를 위해 설계된 [color=#02E180]GDScript[/color]
Mono를 사용하여 지원하는 [color=#F2971A]C# 7.0[/color]
엔진을 리컴파일 할 필요 없이 완전한 [color=#E3266F]C[/color] 와 [color=#E3266F]C++[/color] 을 지원
블록의 그래프로 이루어지는 [color=#26BFE3]Visual scripting[/color]","Godot umožňuje používať viacero programovacích jazykov:
[color=#02E180]GDScript[/color] je skriptovací jazyk podobný Pythonu, navrhnutý pre vývojárov hier
Podpora [color=#F2971A]C# 7.0[/color] cez Mono
Úplná podpora [color=#E3266F]C[/color] a [color=#E3266F]C++[/color] bez nutnosti prekompilovať engine
[color=#26BFE3]Visual scripting[/color] prostredníctvom grafu blokov","Godot umożliwia używanie różnych języków programowania:
[color=#02E180]GDScript[/color] język skryptowy podobny do Pythona, zaprojektowany dla gameplay designerów
Wsparcie dla [color=#F2971A]C# 7.0[/color] przy użyciu Mono
Pełne wsparcie dla [color=#E3266F]C[/color] i [color=#E3266F]C++[/color] bez konieczności rekompilowania silnika
[color=#26BFE3]Skrypt wizualny[/color] używający diagram z blokami","Godot mengizinkanmu untuk menggunakan banyak bahasa pemrograman:
[color=#02E180]GDScript[/color] Bahasa scripting yang mirip Python, didesain untuk pengembang game
Dukungan [color=#F2971A]C# 7.0[/color] dengan Mono
Dukungan penuh [color=#E3266F]C[/color] dan [color=#E3266F]C++[/color] tanpa harus mengkompilasi ulang Engine
Mengkode secara [color=#26BFE3]Visual[/color] dengan blok "
CodeFreely_Footer_text,"Community-supported languages: Python, Nim, D, Rust...","D'autres langages sont pris en charge grâce à la communauté: Python, Nim, D, Rust...",コミュニティのおかげでPythonとかNimとかDなども使えます,"Lenguajes con soporte comunitario: Python, Nim, D, Rust…","Linguagens com suporte da comunidade: Python, Nim, D, Rust...","Sprachen von der Community unterstützt: Python, Nim, D, Rust...","Linguaggi supportati grazie alla community: Python, Nim, D, Rust...","由社区推动支持的编程语言: Python, Nim, D, Rust等...","Мови програмування, що підтримуються спільнотою: Python, Nim, D, Rust...","커뮤니티가 지원하는 언어: Python, Nim, D, Rust 등","Komunitou podporované jazyky: Python, Nim, D, Rust...","Wsparcie dla języków rozwijane przez społeczność: Python, Nim, D, Rust...","Bahasa yang didukung komunitas: Python, Nim, D, Rust…"
Virtual_and_augmented_reality_Column_Header2_title,Virtual and Augmented Reality,Réalité Virtuelle et Augmentée,仮想現実(VR)と拡張現実(AR),Realidad Virtual y Aumentada,Realidade Virtual e Aumentada,Virtual and Augmented Reality,Virtual e Augmented Reality,虚拟现实和增强现实,Віртуальна та Розширена реальність,가상현실(VR)과 증강현실(AR),Virtuálna a Rozšírená realita,VR i rzeczywistość rozszerzona,Virtual dan Augmented Reality
Virtual_and_augmented_reality_Column_Body_Row_TextBox_text,"Powered by [color=#E3266F]OpenVR[/color]
Supports all common hardware: Occulus Rift, Gear VR, Leap Motion...
Augmented Reality powered by the [color=#26BFE3]ARKit[/color]","Grâce à [color=#E3266F] OpenVR[/color]
Support du matériel commun: Occulus Rift, Gear VR, Leap Motion...
Support de la réalité augmentée via [color=#26BFE3]Arkit[/color]","[color=#E3266F]OpenVR[/color]
通常のハードウェアをサポートします:Occulus Rift, Gear VR, Leap Motion...
拡張現実は[color=#26BFE3]ARKit[/color]を使って開発できます","Usando [color=#E3266F]OpenVR[/color]
Soporte para: Occulus Rift, Gear VR, Leap Motion...
Realidad Aumentada usando [color=#26BFE3]ARKit[/color]","Realidade Virtual usando [color=#E3266F]OpenVR[/color]
Suporta os hardware mais conhecidos do mercado: Occulus Rift, Gear VR, Leap Motion...
Realidade Aumentada usando [color=#26BFE3]ARKit[/color]","Basiert auf [color=#E3266F]OpenVR[/color]
Gängige Hardware wird unterstützt: Occulus Rift, Gear VR, Leap Motion...
Augmented Reality basiert auf [color=#26BFE3]ARKit[/color]","Powered by [color=#E3266F]OpenVR[/color]
Supporta tutti i dispositivi comuni: Oculus Rift, Gear VR, Leap Motion...
Augmented Reality grazie a [color=#26BFE3]ARKit[/color]","由 [color=#E3266F]OpenVR[/color] 提供技术支持
支持所有常见硬件设备: Occulus Rift, Gear VR, Leap Motion等...
增强现实由 [color=#26BFE3]ARKit[/color] 提供技术支持","На базі [color=#E3266F]OpenVR[/color]
Підтримка усіх видів поширених пристроїв: Occulus Rift, Gear VR, Leap Motion...
Розширена реальність на базі [color=#26BFE3]ARKit[/color]","[color=#E3266F]OpenVR[/color] 기반
모든 일반적인 하드웨어를 지원합니다: Occulus Rift, Gear VR, Leap Motion...
[color=#26BFE3]ARKit[/color] 기반 증강현실","Založená na [color=#E3266F]OpenVR[/color]
Podporuje všetok bežný hardware: Occulus Rift, Gear VR, Leap Motion...
Rozšírená realita založená na [color=#26BFE3]ARKit[/color]","Wirtualna rzeczywistość napędzana przez [color=#E3266F]OpenVR[/color]
Wspiera wszystkie typy osprzętu: Occulus Rift, Gear VR, Leap Motion...
AR wspierane przez [color=#26BFE3]ARKit[/color]","Disokong oleh [color=#E3266F]OpenVR[/color]
Mendukung semua perangkat umum: Occulus Rift, Gear VR, Leap Motion...
Augmented Reality didukung oleh [color=#26BFE3]ARKit[/color]"
Professionals_use_godot_Column_Header_title,Professionals use Godot,Les pros utilisent Godot,Godotを使うプロがいます,Usado en el entorno profesional,Profissionais usando Godot,Profis nutzen Godot,I professionisti usano Godot,专业人员使用Godot,Професіонали користуються Godot,Godot를 사용하는 전문가들,Godot používajú profesionáli,Godot używany profesjonalnie,Profesional juga pakai Godot
Professionals_use_godot_Column_Body_Row_TextBox_text,"[color=#E3266F]Game studios[/color] like Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Schools[/color] including School4Games Berlin, KidsCanCode...
[color=#02E180]Content creators[/color] like Heartbeast, GamesFromScratch, [i]GDQuest[/i]...","Des [color=#E3266F]studios de jeux[/color] comme Gamblify, GuaranApps, Kivano...
Des [color=#26BFE3]écoles[/color] telles que School4Games Berlin, KidsCanCode...
Des [color=#02E180]vidéastes[/color] comme Heartbeast, GamesFromScratch, [i]GDQuest[/i]...","[color=#E3266F]ゲームスタジオ[/color]:Gamblify, GuaranApps, Kivano...
[color=#26BFE3]大学[/color]:School4Games ベルリン, KidsCanCode...
[color=#02E180]学習用の製作者[/color]:Heartbeast, GamesFromScratch, [i]GDQuest[/i]...今はまだ日本語の動画は少ないでしょう","[color=#E3266F]Estudios de videojuegos[/color] como Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Escuelas[/color] como School4Games Berlin, KidsCanCode...
[color=#02E180]Creadores de contenido[/color] como Heartbeast, GamesFromScratch, [i]GDQuest[/i]...","[color=#E3266F]Estúdios de Jogos[/color] como Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Escolas[/color] incluindo School4Games Berlin, KidsCanCode...
[color=#02E180]Criadores de conteúdo[/color] como Heartbeast, GamesFromScratch, [i]GDQuest[/i]...","[color=#E3266F]Spielestudios[/color] wie z.B. Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Schulen[/color], unter anderem School4Games Berlin, KidsCanCode...
[color=#02E180]Inhaltsentwickler[/color] wie z.B. Heartbeast, GamesFromScratch, [i]GDQuest[/i]...","[color=#E3266F]Game studios[/color] come Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Scuole[/color] come School4Games Berlin, KidsCanCode...
[color=#02E180]Content creator[/color] come Heartbeast, GamesFromScratch, [i]GDQuest[/i]...","[color=#E3266F]游戏开发工作室[/color]比如Gamblify, GuaranApps, Kivano等...
[color=#26BFE3]学校[/color]包括School4Games Berlin, KidsCanCode等...
[color=#02E180]内容创作者[/color]像Heartbeast, GamesFromScratch, [i]GDQuest[/i]等...","[color=#E3266F]Геймстудії[/color] такі, як Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Школи[/color] серед яких School4Games Berlin, KidsCanCode...
[color=#02E180]Творці контенту[/color] серед яких Heartbeast, GamesFromScratch, [i]GDQuest[/i]...","[color=#E3266F]게임 스튜디오[/color] : Gamblify, GuaranApps, Kivano 등
[color=#26BFE3]교육[/color] : School4Games Berlin, KidsCanCode 등
[color=#02E180]콘텐츠 크리에이터[/color] : Heartbeast, GamesFromScratch, [i]GDQuest[/i] 등","[color=#E3266F]Herné štúdiá[/color] ako Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Školy[/color] ako School4Games Berlin, KidsCanCode...
[color=#02E180]Tvorcovia obsahu[/color] ako Heartbeast, GamesFromScratch, [i]GDQuest[/i]...","[color=#E3266F]Producenci gier[/color] jak Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Szkoły[/color], w tym School4Games Berlin, KidsCanCode...
[color=#02E180]Twórcy contentu w sieci[/color] jak Heartbeast, GamesFromScratch, [i]GDQuest[/i]...","[color=#E3266F]Studio Game[/color] seperti Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Sekolah[/color] termasuk School4Games Berlin, KidsCanCode...
[color=#02E180]Pembuat konten[/color] seperti Heartbeast, GamesFromScratch, [i]GDQuest[/i]..."
Made_with_godot_Column_Header2_title,Made with Godot,Un jeu conçu avec Godot,Godotで作ったゲーム,Made with Godot,Feito com Godot,Made with Godot,Sviluppati con Godot,Godot制作开发,Створено за допомоги Godot,Godot로 만들었습니다,Made with Godot,Stworzone przy użyciu Godot,Dibuat dengan Godot
Made_with_godot_Column_Footer2_text,"Galactic Bulwark Strike, by Josep G. Camarasa","Galactic Bulwark Strike, par Josep G. Camarasa",Josep G. CamarasaのGalactic Bulwark Strike,"Galactic Bulwark Strike, por Josep G. Camarasa","Galactic Bulwark Strike, por Josep G. Camarasa","Galactic Bulwark Strike, von Josep G. Camarasa","Galactic Bulwark Strike, di Josep G. Camarasa","Galactic Bulwark Strike, 由 Josep G. Camarasa 开发制作","Galactic Bulwark Strike, від Josep G. Camarasa",Josep G. Camarasa가 만든 Galactic Bulwark Strike ,"Galactic Bulwark Strike, autor Josep G. Camarasa","Galactic Bulwark Strike, autor: Josep G. Camarasa","Galactic Bulwark Strike, oleh Josep G. Camarasa"
Godot_is_in_great_shape_Column_Header2_title,Godot is in great shape,Un projet en grande forme,Godotはうまくいっています,Desarrollo muy activo,Godot está em ótima forma,Godot ist in super Zustand,Godot è in ottima forma,Godot发展已经成型,Godot є в чудовій формі,Godot는 좋은 환경입니다,Godot je vo výbornej kondícii,Godot ma się świetnie,Godot dalam kondisi luar biasa
Godot_is_in_great_shape_Column_Body_Row_TextBox2_text,"Godot is [color=#26BFE3]Free Software[/color] built by [color=#26BFE3]hundreds of people[/color]. It's the fastest-growing game technology on GitHub:
- [color=#02E180]700+[/color] contributors
- 18 000+ commits
- 18 000+ stars
It’s not only free to use: contrary to other engines, you will never have to pay royalties.
It also brings sane competition to proprietary engines, pushing innovation.","Godot est un [color=#26BFE3]Logiciel Libre[/color] développé par [color=#26BFE3]des centaines de personnes[/color]. Son évolution accélère au fil du temps:
- [color=#02E180]Plus de 700[/color] contributeurs
- 18 000+ commits
- 18 000+ étoiles sur GitHub
- Le projet est bien organisé
Godot génère plus de [color=#02E180]$8000[/color] de donations par mois sur Patreon.","Godot は[color=#26BFE3]数百[/color]の人が開発しました[color=#26BFE3]フリーソフトウェア[/color]
段々早く成長しています:
- [color=#02E180]700[/color]人以上の開発者
- 18 000+ commits
- 18 000+ stars
- 完全なコードベース
Godotで作ったプロジェクトとフォークはさすがいつまでも無料です。
Godotの成長は、Unityのようなエンジンとの健全な競争をもたらし、革新を持続させる","Godot es [color=#26BFE3]software libre[/color] hecho por [color=#26BFE3]cientos de personas[/color]. No para de crecer:
- [color=#02E180]700+[/color] contribuidores
- 18 000+ commits
- 18 000+ estrellas
- Proyecto bien organizado
El proyecto obtiene [color=#02E180]$8000+[/color] al mes en Patreon.","Godot é um [color=#26BFE3]Software Livre[/color] criado por [color=#26BFE3]centenas de pessoas[/color]. E não para de crescer:
- [color=#02E180]700+[/color] contribuidores
- 18 000+ commits
- 18 000+ estrelas
- Tudo muito bem organizado
O projeto arrecada mais de [color=#02E180]$8000+[/color] mensalmente pelo Patreon.","Godot ist [color=#26BFE3]Freie Software[/color], erstellt von [color=#26BFE3]hunderten von Leuten[/color]. Es wächst im laufe der Zeit immer schneller:
- [color=#02E180]700+[/color] Mitwirkende
- 18 000+ Commits
- 18 000+ Sterne
- Gut organisiertes Projekt
Auf Patreon wird das Projekt mit [color=#02E180]mehr als $8000[/color] im Monat unterstützt.","Godot è un progetto [color=#26BFE3]Free Software[/color] sviluppato da [color=#26BFE3]centinaia di persone[/color] ed in continua crescita:
- [color=#02E180]700+[/color] contributor
- 18 000+ commit
- 18 000+ star
- Progetto ben organizzato
Il progetto ottiene più di [color=#02E180]$8000[/color] al mese su Patreon.","Godot是一款由[color=#26BFE3]成千上万群众[/color]共同打造的[color=#26BFE3]免费软件[/color].它随着时间的发展而飞速发展:
- [color=#02E180]超过700个[/color]贡献者参与
- 18 000多次的提交
- 18 000多个星星
- 一个组织健全的项目
Godot项目每个月能从老顾主那里得到高达[color=#02E180]9000多美元[/color]的赞助费.","Godot є [color=#26BFE3]Свобдним ПЗ[/color], що його будують [color=#26BFE3]сотні людей[/color]. Він зростає чим швидше із кожною хвилиною:
- [color=#02E180]700+[/color] вкладників
- 18 000+ комітів
- 18 000+ зірочок
- Добре організований проект
Проект отримує [color=#02E180]$8000+[/color] кожного місяця на Patreon.","Godot는 [color=#26BFE3]무료 소프트웨어로[/color] [color=#26BFE3]수백명의 사람들로[/color] 만들어졌습니다. 시간이 갈수록 빠른 성장을 보이고 있습니다:
- [color=#02E180]700+[/color] 기여자들
- 18 000+ commits
- 18 000+ stars
- 잘 조직화된 프로젝트
프로젝트는 매달 Patreon으로 [color=#02E180]$8000+[/color] 을 받습니다.","Godot je [color=#26BFE3]Free Software[/color], ktorý tvoria [color=#26BFE3]stovky ľudí[/color]. A rastie s časom:
- [color=#02E180]700+[/color] prispievateľov
- 18 000+ príspevkov
- 18 000+ hviezd
- dobre zorganizovaný projekt
Projekt dostáva mesačne viac ako [color=#02E180]$8000[/color] cez Patreon.","Godot to [color=#26BFE3]darmowe oprogramowanie[/color] tworzone przez [color=#26BFE3]setki ludzi[/color]. Z czasem rośnie coraz szybciej:
- [color=#02E180]700+[/color] współautorów
- 18 000+ commitów
- 18 000+ gwiazdek
- Dobrze zorganizowany projekt
Projekt zbiera [color=#02E180]ponad $8000[/color] miesięcznie na Patreonie.","Godot adalah [color=#26BFE3]Software Bebas[/color] yang dibangun oleh [color=#26BFE3]ratusan orang[/color] dan tumbuh cepat dari waktu ke waktu:
- [color=#02E180]700+[/color] penyumbang
- 18 000+ commits
- 18 000+ bintang
- Proyek yang terorganisir
Proyek ini mendapatkan [color=#02E180]$8000+[/color] setiap bulannya dari Patreon."
Godot_is_in_great_shape_Column_Footer2_text,"Godot is lead by full-time, experienced engineers: it gets [color=#02E180]$8000+[/color] a month on Patreon and is sponsored by organizations like Mozilla and Microsoft.","Certaines fonctionnalités sont parrainées par des entreprises: l'export WebGL par Mozilla, le support de C# par Microsoft ...",老練の技術者の常勤さんから主導していろんな機能は大きい組織主催です:WebGL(Mozilla)、C#(Microsoft),"Algunas características están patrocinadas por compañías: exportar a WebGL por Mozilla, soporte de C# por Microsoft...","Algumas funcionalidades foram patrocinadas por grandes companhias: WebGL export pela Mozilla, suporte C# pela Microsoft…","Einige Features werden von namhaften Firmen gesponsort: WebGL Export von Mozilla, C# Unterstützung von Microsoft...","Alcune funzionalità sono sponsorizzate dalle compagnie: WebGL export da Mozilla, supporto C# da Microsoft...","一些功能由大型公司赞助: WebGL export 由Mozilla提供, C# 由Microsoft支持等...","Деякі функції профінансовані сторонніми компаніями: експорт до WebGL - Mozilla, підтримка C# - Microsoft...","일부 기능은 회사로부터 후원을 받았습니다: Mozilla의 WebGL, Microsoft의 C# 등","Niektoré funkcie sú sponzorované spoločnosťami: WebGL export od Mozilly, C# podpora od Microsoftu...","Niektóre funkcje są sponsorowane przez korporacje: eksport WebGL przez Mozillę, wsparcie dla C# przez Microsoft...","Beberapa fitur disponsori oleh perusahaan: ekspor WebGL oleh Mozilla, dukungan C# oleh Microsoft..."
How_to_get_started_Header_title,How to get started,Comment bien débuter,どうやって始められますか? ,Cómo empezar,Como começar,Wie fange ich an?,Come cominciare,如何迈开第一步?,З чого почати,시작하는 법,Ako začať?,Jak zacząć?,Cara memulai
How_to_get_started_Body_Row_TextBox_text,"The [color=#26BFE3]community[/color] is [b]very[/b] active. Social networks, forum, IRC, Discord…
There's a [color=#26BFE3]Questions/Answers[/color] website
You'll find plenty of official [color=#02E180]tutorials[/color] in the [color=#02E180]online manual[/color]
There's [color=#E3266F]built-in code reference[/color] inside the game editor
Use the [color=#F2971A]open source demos[/color]","La [color=#26BFE3]communauté[/color] est [b]très[/b] active. Vous trouverez du monde sur les réseaux sociaux, le forum, IRC, Discord...
Il y a un site de [color=#26BFE3]Questions/Réponses[/color]
Vous trouverez beaucoup de [color=#02E180]tutoriels officiels[/color] dans le [color=#02E180]manuel en ligne[/color]
La [color=#E3266F]référence de code[/color] est intégrée dans l'éditeur
Vous trouverez de nombreuses [color=#F2971A]démos open source[/color]!","[color=#26BFE3]コミュニティ[/color]は[b]とても[/b]にぎやかです。
SNSしIRCしDiscordしでGodotのユーザーと会えます
[color=#26BFE3]質問と答え[/color]のウェブサイトもあります
[color=#02E180]リファレンス[/color]に公式の[color=#02E180]学習用[/color]が多いです
開発環境に[color=#E3266F]コードのドキュメント[/color]が含まれます
[color=#F2971A]オープンソースのデモ[/color]も多いです","La [color=#26BFE3]comunidad[/color] es [b]muy[/b] activa. Redes sociales, foro, IRC, Discord…
Hay una página de [color=#26BFE3]Preguntas/Respuestas[/color]
Encontrarás muchos [color=#02E180]tutorialess[/color] oficiales en el [color=#02E180]manual online[/color]
Hay [color=#E3266F]documentación[/color] dentro del propio editor
Usa [color=#F2971A]demos open source[/color]","A [color=#26BFE3]comunidade[/color] é [b]muito[/b] ativa. Redes sociais, fórum, IRC, Discord…
Página de [color=#26BFE3]Perguntas&Respostas[/color]
Você vai encontrar vários [color=#02E180]tutoriais[/color] oficiais no [color=#02E180]manual online[/color]
O editor de textos possui[color=#E3266F]documentação integrada[/color]
Use as [color=#F2971A]demos com código aberto[/color]","Die [color=#26BFE3]Community[/color] ist [b]sehr[/b] aktiv. Soziale Netzwerke, Forum, IRC, Discord…
Es gibt eine [color=#26BFE3]Frage und Antwort[/color] Webseite
Du findest viele offizielle [color=#02E180]Tutorials[/color] im [color=#02E180]online Handbuch[/color]
Es gibt eine [color=#E3266F]eingebaute Code-Referenz[/color] im Spiele-Editor
Erforsche die [color=#F2971A]Open Source Demos[/color]","La [color=#26BFE3]community[/color] è [b]molto[/b] attiva. Social network, forum, IRC, Discord…
C’è un sito web con [color=#26BFE3]Questions/Answers[/color]
Troverai tanti [color=#02E180]tutorial[/color] ufficiali nel [color=#02E180]manuale online[/color]
C’è una [color=#E3266F]documentazione API integrata[/color] all’interno dell’editor di gioco
Usa [color=#F2971A]le demo open source[/color]","我们的[color=#26BFE3]社区[/color][b]非常[/b]活跃. 包括社交网络, 论坛, 即时聊天平台, 在线聊天工具等…
我们有一个在线的[color=#26BFE3]问/答[/color]网站
你可以在[color=#02E180]在线手册[/color]里发现许多官方[color=#02E180]教程[/color]
Godot游戏编辑器有一个[color=#E3266F]内置的代码参考工具[/color]可供使用
可以使用[color=#F2971A]开源示例[/color]","[b]Дуже[/b] активна [color=#26BFE3]спільнота[/color]. Соціальні мережі, форум, IRC, Discord…
Сайт у форматі [color=#26BFE3]Питання/Відповідь[/color]
В [color=#02E180]онлайн мануалі[/color] можна знайти достатньо офіційних [color=#02E180]навчальних матеріалів[/color]
Також існує [color=#E3266F]вбудована довідка до коду[/color] просто в ігровому редакторі
Скористайтеся [color=#F2971A]демо проектами із відкритим кодом[/color]","[color=#26BFE3]커뮤니티[/color] 는 [b]매우[/b] 활발합니다. 소셜 네트워크, 포럼, IRC, Discord 등
[color=#26BFE3]질의응답[/color] 웹사이트가 있습니다
[color=#02E180]온라인 설명서[/color] 에서 많은 공식 [color=#02E180]튜토리얼[/color] 을 찾으실 수 있습니다
게임 에디터 내에 [color=#E3266F]내장 코드 참조[/color] 가 있습니다
[color=#F2971A]오픈 소스 데모[/color] 를 사용하십시오","[color=#26BFE3]Komunita[/color] je [b]veľmi[/b] aktívna. Sociálne siete, fórum, IRC, Discord…
K dispozícii je webstránka [color=#26BFE3]otázok a odpovedí[/color]
V [color=#02E180]online manuáli[/color] nájdete viacero oficiálnych [color=#02E180]tutoriálov[/color]
Herný editor obsahuje [color=#E3266F]zabudované referencie kódu[/color]
Využite [color=#F2971A]open source demá[/color]","[color=#26BFE3]Społeczność[/color] jest [b]bardzo[/b] aktywna. Serwisy społecznościowe, forum, IRC, Discord…
Jest również dostępna strona [color=#26BFE3]Q&A[/color]
Znajdziesz mnóstwo oficjalnych [color=#02E180]tutoriali[/color] w [color=#02E180]internetowym podręczniku[/color]
W edytorze jest [color=#E3266F]wbudowana dokumentacja kodu[/color]
Użyj [color=#F2971A]otwartoźródłowych dem[/color]","[color=#26BFE3]Komunitas[/color] yang [b]sangat[/b] aktif. Jaringan sosial, forum, IRC, Discord…
Ada juga situs web [color=#26BFE3]Questions/Answers[/color]
Ada beberapa [color=#02E180]tutorial[/color] resmi di [color=#02E180]manual daring[/color]
Ada [color=#E3266F]referensi kode bawaan[/color] didalam game editor
Pelajari [color=#F2971A]demo sumber terbuka[/color]"
How_to_get_started_Footer_text,Most of the resources are in English though... a good way to practice?,"L'éditeur est déjà traduit en français, ainsi qu'une part croissante des tutoriels officiels",大体情報は英語ですが、良い練習になるでしょうね?,),La mayoría de los recursos están en inglés… ¿hora de aprender?,Porém boa parte das coisas estão em inglês...é até uma boa chance para praticar!,Ma molte risorse sono in Inglese... è una buona scusa per fare pratica?,Viele der Quellen sind in Englisch... eine gute Möglichkeit zu üben!,"Проте більшість ресурсів на англійській...тож гарна нагода попркатикуватися, чи не так?",비록 대부분의 자원은 영어입니다... 하지만 연습하기에 좋은 방식이지 않을까요?,Väčšina zdrojov je však v angličtine... dobrý spôsob na zdokonalenie sa?,Większość zasobów jest jednak po angielsku... dobra okazja na trening?,Sumber pembelajaran lebih banyak menggunakan bahasa Inggris… mungkin bisa jadi alasan belajar bahasa Inggris juga?
Learn_from_simple_free_demos_Column_Header2_title,Learn from simple Free demos,Démos libres,読みやすいデモで勉強できます,Aprende de demos simples y libres,Aprenda através de demos simples e livres,"Einfache, freie Demos zum lernen",Impara dalle demo libere,从简单免费的示例开始入手学习,Навчайтеся за допомги простих та безкоштовних демопроектів,간단한 무료 데모를 통해 배워보기,Na učenie využite free demá,"Ucz się z prostych, darmowych dem",Belajar dari demo yang gratis
Learn_from_simple_free_demos_Column_Footer2_text,Both official and 3rd-party,"Il y en a beaucoup, officielles ou mises à disposition par la communauté",公式プロジェクトもコミュニティのもあります,Tanto oficiales como de terceros,Tanto oficiais quanto de terceiros,Sowohl Offizielle als auch Dirttanbieter,Sia ufficiali che 3rd party,官方的和第三方的都有,"Як офііцних, так і від третіх сторін",공식 프로젝트와 커뮤니티의 프로젝트가 있습니다,Či už oficiálne alebo od tretích strán,Zarówno oficjalnych jak i tworzonych przez społeczność,Resmi atau pun pihak ketiga
Thank_you_Column_Header2_title,Thank you!,Merci beaucoup!,ありがとうございました!,¡Muchas gracias!,Muito obrigado!,Vielen Dank!,Grazie!,非常感谢!,Щіро дякую!,감사합니다!,Ďakujem za pozornosť!,Dzięki!,Terima Kasih!
Thank_you_Column_Header2_subtitle,Any question?,Des questions?,質問がありますか?,¿Alguna pregunta?,Dúvidas ou perguntas?,Noch Fragen?,Domande?,还有疑问吗?,Маєте запитання?,질문 있으신가요?,Otázky?,Masz pytania?,Ada pertanyaan?
Thank_you_Column_Body_Row_TextBox2_text,"SNS:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Credits:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] by GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] by Justin
This presentation is an Open Source Godot project!
Find it on [url=https://github.com/GDquest/godot-slides]GitHub[/url]. It's available in multiple languages.","Réseaux sociaux:[color=#26BFE3] @NathanGDquest[/color]
[color=#F2971A] youtube.com/c/gdquest[/color]
Crédits:
- [url=https://play.google.com/store/apps/detailsid=fr.guaranapps.games.get_teddy?]Get Teddy[/url] par GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] par Justin
Cette présentation est un projet Godot Libre!
Téléchargez-la et contribuez-y sur [url=https://github.com/GDquest/godot-slides]GitHub[/url]. Elle est traduite dans plusieurs langues.","ツイタ:[color=#26BFE3]@NathanGDquest[/color]
Youtube:[color=#F2971A]youtube.com/c/gdquest[/color]
Credits:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] by GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] by Justin
この発表はオープンソースのGodotのプロジェクトです:[url=https://github.com/GDquest/godot-slides]GitHub[/url]でダウンロードできます. 色々な言語で利用可能です。","SNS:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Créditos:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] por GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] por Justin
¡Esta presentación es un proyecto open-source hecho en Godot!
Está en [url=https://github.com/GDquest/godot-slides]GitHub[/url]. Disponible en varios idiomas.","SNS:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Créditos:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] por GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] por Justin
Essa apresentação é um projeto livre e de código aberto feito e rodando no Godot!
Disponível em [url=https://github.com/GDquest/godot-slides]GitHub[/url] em vários idiomas.","SNS:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Credits:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] von GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] von Justin
Diese Päsentation ist ein Open Source Godot Projekt!
Es befindet sich auf [url=https://github.com/GDquest/godot-3-presentation]GitHub[/url] und ist in mehreren Sprachen verfügbar.","SNS:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Credits:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] di GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] di Justin
Questa presentazione è un progetto Godot Open Source!
La puoi trovare su [url=https://github.com/Gdquest/godot-slides]GitHub[/url], disponibile in molti linguaggi.","社交网络:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
荣誉:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] 作者 GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] 作者 Justin
本演示文稿是一个开源的Godot项目!
可以在[url=https://github.com/GDquest/godot-slides]GitHub[/url]上找到它. 并且提供了多个语言版本.","SNS:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Подяки матеріали:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] від GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] від Justin
Ця презентація є проектом Godot із відритим кодом!
Його можна знайти на [url=https://github.com/GDquest/godot-slides]GitHub[/url]. Він доступний на багатьох мовах.","SNS:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Credits:
- GuaranApps에서 만든[url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url]
- Justin이 만든 [url=http://www.rpginabox.com/]RPG in a Box[/url]
이 프레젠테이션은 오픈 소스 Godot 프로젝트입니다!
[url=https://github.com/GDquest/godot-slides]GitHub[/url] 에서 찾으실 수 있습니다. 다양한 언어로 이용하실 수 있습니다.","SNS:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Credits:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] od GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] autor Justin
Táto prezentácia je Open Source Godot projekt!
Nájdete ju na [url=https://github.com/GDquest/godot-slides]GitHub[/url]. Dostupná vo viacerých jazykoch","Media społecznościowe:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Źródła:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] od GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url], autor: Justin
Ta prezentacja jest otwartoźródłowym projektem Godot!
Link: [url=https://github.com/GDquest/godot-slides]GitHub[/url]. Jest dostępna w wielu językach.","Situs jejaring sosial:
[color=#26BFE3]@NathanGDquest[/color]
[color=#F2971A]youtube.com/c/gdquest[/color]
Penghargaan:
- [url=https://play.google.com/store/apps/details?id=fr.guaranapps.games.get_teddy]Get Teddy[/url] oleh GuaranApps
- [url=http://www.rpginabox.com/]RPG in a Box[/url] oleh Justin
Presentasi ini adalah proyek sumber terbuka Godot!
Temukan di [url=https://github.com/GDquest/godot-slides]GitHub[/url]. Tersedia dalam beberapa bahasa."
BuildUponGodot_Column_Header_title,Extend the editor with ease,,プラグインを簡単に開発できます,Extiende el editor con facilidad,,,,,,,,,
BuildUponGodot_Column_Header_subtitle,,,,,,,,,,,,,
BuildUponGodot_Column_Body_Row_TextBox_text,"The Godot editor is a Godot game! It relies on the same tools you'll use to make your game.
Thanks to that, you can [color=#02E180]code add-ons and games the same way[/color].
The [color=#26BFE3]open source Assets Library[/color] lets you download add-ons from GitHub into your projects.",,"Godotのエヂターは[color=#02E180]Godotゲーム[/color]なのでエンジンのAPIで開発されました。
それで自分のゲームと開発環境のパラグインは両方[color=#02E180]同じツール[/color]で作られます。
[color=#26BFE3]オーブンソースアセットライブラリー[/color]で無料でパラグインをGitHubからダウンロードできます。","El editor de Godot es un juego de Godot! Se basa en las mismas herramientas que usarás para crear tu juego.
Gracias a eso, puedes [color=#02E180]programar add-ons y juegos de la misma manera[/color].
La [color=#26BFE3]open source Assets Library[/color] te deja descargar add-ons desde GitHub a tus proyectos.",,,,,,,,,
BuildUponGodot_Column_Footer_text,Projects: RPG in a Box by Justin Arnold and Procedural Mesh Generator by Bastiaan Olij,,プロジェクト: ジャスティン・アーノルドのRPG in a Box、 バスティアン・オリェのProcedural Mesh Generator,Proyectos: RPG in a Box de Justin Arnold y Procedural Mesh Generator de Bastiaan Olij,,,,,,,,,
Thank_you_tokyo_indies_Column_Header_title,Thank you!,,ありがとうございました,¡Gracias!,,,,,,,,,
Thank_you_tokyo_indies_Column_Header_subtitle,,,,,,,,,,,,,
Thank_you_tokyo_indies_Column_Body_Row_TextBox_text,"All our game demos and tools are Free and Open Source!
Find them on [url=https://github.com/GDquest/godot-3-presentation]GDquest's GitHub page[/url].
Gdquest’s mission is to bring game developers together to become better creators.
You can find us on:
Twitter: [color=#26BFE3]@NathanGDquest[/color]
YouTube: [color=#F2971A]youtube.com/c/gdquest[/color]",,"GDquestのゲームプロジェクトは全てオプンソース。
GDquestの[url=https://github.com/GDquest/godot-3-presentation]GitHubページ[/url]でダウンロードできます。
SNS:
Twitter: [color=#26BFE3]@NathanGDquest[/color]
YouTube: [color=#F2971A]youtube.com/c/gdquest[/color]","¡Todas nuestras demos de juegos y herramientas son gratis y libres!
Encuéntralas en [url=https://github.com/GDquest/godot-3-presentation]el GitHub de GDquest[/url].
La misión de Gdquest es reunir a los desarrolladores de juegos para que se conviertan en mejores creadores.
Nos puedes encontrar en:
Twitter: [color=#26BFE3]@NathanGDquest[/color]
YouTube: [color=#F2971A]youtube.com/c/gdquest[/color]",,,,,,,,,
Thank_you_tokyo_indies_Column_Footer_text,"If you have any questions, please get in touch anytime!",,質問があればいつでも連絡してください!,"¡Si tiene alguna pregunta, por favor ponte en contacto en cualquier momento!",,,,,,,,,
Intro_GDquest_Column_Header_title,Game Design Quest,,,Game Design Quest,,,,,,,,,
Intro_GDquest_Column_Body_Row_TextBox_text,"GDquest's mission is to [color=#26BFE3]bring people together[/color] to become better game developers.
We do that creating Free and Open Source [color=#E3266F]game demos[/color], [color=#26BFE3]tutorials[/color], and [color=#F2971A]tools[/color] to help you learn professional game creation techniques.",,"GDquestのミッションは、ゲームを作りたい方達と[color=#26BFE3]一緒になってすばらしいゲームデザイナーになること[/color]です。
世界のゲームプランナー達がプロの方法を勉強できるためにフリーソフトを使ってオープンソース[color=#E3266F]ゲームデモ[/color]を開発したり[color=#26BFE3]チュートリアルを作ったり[/color]ゲーム開発者の[color=#F2971A]道具[/color]をシェアしたりします","La misión de GDquest es [color=#26BFE3]reunir a la gente[/color] para que se conviertan en mejores desarrolladores de videojuegos.
Hacemos eso creando [color=#E3266F]demos de juegos[/color] gratis y libres, [color=#26BFE3]tutoriales[/color], y [color=#F2971A]herramientas[/color] para ayudarte a aprender técnicas profesionales de creación de videojuegos.",,,,,,,,,
Intro_GDquest_Column_Footer_text,"It's become my full-time job, and I can even pay people to work together with!",,自分の仕事になってしまったが毎日オープンソースの分野に働えてフリランサを雇えますよ!,"¡Se ha convertido en mi trabajo a jornada completa, e incluso puedo pagar a gente con la que trabajar!",,,,,,,,,
================================================
FILE: godot-3-presentation/content/power_pitch/PowerPitch.csv.import
================================================
[remap]
importer="csv_translation"
type="Translation"
[deps]
files=[ "res://content/power_pitch/PowerPitch.en.translation", "res://content/power_pitch/PowerPitch.fr.translation", "res://content/power_pitch/PowerPitch.ja.translation", "res://content/power_pitch/PowerPitch.es.translation", "res://content/power_pitch/PowerPitch.pt_BR.translation", "res://content/power_pitch/PowerPitch.de.translation", "res://content/power_pitch/PowerPitch.it.translation", "res://content/power_pitch/PowerPitch.zh.translation", "res://content/power_pitch/PowerPitch.uk_UA.translation", "res://content/power_pitch/PowerPitch.ko.translation", "res://content/power_pitch/PowerPitch.sk.translation", "res://content/power_pitch/PowerPitch.pl.translation", "res://content/power_pitch/PowerPitch.id.translation" ]
source_file="res://content/power_pitch/PowerPitch.csv"
dest_files=[ "res://content/power_pitch/PowerPitch.en.translation", "res://content/power_pitch/PowerPitch.fr.translation", "res://content/power_pitch/PowerPitch.ja.translation", "res://content/power_pitch/PowerPitch.es.translation", "res://content/power_pitch/PowerPitch.pt_BR.translation", "res://content/power_pitch/PowerPitch.de.translation", "res://content/power_pitch/PowerPitch.it.translation", "res://content/power_pitch/PowerPitch.zh.translation", "res://content/power_pitch/PowerPitch.uk_UA.translation", "res://content/power_pitch/PowerPitch.ko.translation", "res://content/power_pitch/PowerPitch.sk.translation", "res://content/power_pitch/PowerPitch.pl.translation", "res://content/power_pitch/PowerPitch.id.translation" ]
[params]
compress=true
delimiter=0
================================================
FILE: godot-3-presentation/content/power_pitch/PowerPitch.tscn
================================================
[gd_scene load_steps=15 format=2]
[ext_resource path="res://content/power_pitch/slides/Godot_is_in_great_shape.tscn" type="PackedScene" id=1]
[ext_resource path="res://content/power_pitch/slides/Learn_from_simple_free_demos.tscn" type="PackedScene" id=2]
[ext_resource path="res://content/power_pitch/slides/A_free_modern_engine.tscn" type="PackedScene" id=3]
[ext_resource path="res://content/power_pitch/slides/Professionals_use_godot.tscn" type="PackedScene" id=4]
[ext_resource path="res://content/power_pitch/slides/Title.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/presentation/Presentation.tscn" type="PackedScene" id=6]
[ext_resource path="res://content/power_pitch/slides/CreateAnything.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/slides/CodeFreely.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/power_pitch/slides/State_of_the_art_3d_engine.tscn" type="PackedScene" id=9]
[ext_resource path="res://content/power_pitch/slides/All-in-one_package.tscn" type="PackedScene" id=10]
[ext_resource path="res://content/power_pitch/slides/Thank_you.tscn" type="PackedScene" id=11]
[ext_resource path="res://content/power_pitch/slides/How_to_get_started.tscn" type="PackedScene" id=12]
[ext_resource path="res://content/power_pitch/slides/Made_with_godot.tscn" type="PackedScene" id=13]
[ext_resource path="res://content/power_pitch/slides/Virtual_and_augmented_reality.tscn" type="PackedScene" id=14]
[node name="PowerPitch" instance=ExtResource( 6 )]
[node name="Title" parent="Slides" index="0" instance=ExtResource( 5 )]
[node name="A_free_modern_engine" parent="Slides" index="1" instance=ExtResource( 3 )]
visible = false
[node name="State_of_the_art_3d_engine" parent="Slides" index="2" instance=ExtResource( 9 )]
visible = false
[node name="All_in_one_package" parent="Slides" index="3" instance=ExtResource( 10 )]
visible = false
[node name="CreateAnything" parent="Slides" index="4" instance=ExtResource( 7 )]
visible = false
[node name="CodeFreely" parent="Slides" index="5" instance=ExtResource( 8 )]
visible = false
[node name="Virtual_and_augmented_reality" parent="Slides" index="6" instance=ExtResource( 14 )]
visible = false
[node name="Professionals_use_godot" parent="Slides" index="7" instance=ExtResource( 4 )]
[node name="Made_with_godot" parent="Slides" index="8" instance=ExtResource( 13 )]
visible = false
[node name="Godot_is_in_great_shape" parent="Slides" index="9" instance=ExtResource( 1 )]
visible = false
[node name="Learn_from_simple_free_demos" parent="Slides" index="10" instance=ExtResource( 2 )]
visible = false
[node name="How_to_get_started" parent="Slides" index="11" instance=ExtResource( 12 )]
visible = false
[node name="Thank_you" parent="Slides" index="12" instance=ExtResource( 11 )]
visible = false
[node name="TouchControls" parent="." index="2"]
visible = false
================================================
FILE: godot-3-presentation/content/power_pitch/img/animation/anim-editor-01.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/anim-editor-01.png-f324b26239bbba025747cb255eff8e6f.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/animation/anim-editor-01.png"
dest_files=[ "res://.import/anim-editor-01.png-f324b26239bbba025747cb255eff8e6f.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/animation/anim-editor-02.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/anim-editor-02.png-6dd9e82aee59b18bf4464bff20b3d6bb.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/animation/anim-editor-02.png"
dest_files=[ "res://.import/anim-editor-02.png-6dd9e82aee59b18bf4464bff20b3d6bb.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/animation/anim-editor-03.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/anim-editor-03.png-26a353b60c6ca34098ce8ab2bd4e68ea.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/animation/anim-editor-03.png"
dest_files=[ "res://.import/anim-editor-03.png-26a353b60c6ca34098ce8ab2bd4e68ea.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/animation/animation-editor-1.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/animation-editor-1.png-69cc77f75b62c6ae4838255ad49ce3a2.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/animation/animation-editor-1.png"
dest_files=[ "res://.import/animation-editor-1.png-69cc77f75b62c6ae4838255ad49ce3a2.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/animation/animation-editor-3.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/animation-editor-3.png-5e2b0812f086d4189ed260c339bd91ce.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/animation/animation-editor-3.png"
dest_files=[ "res://.import/animation-editor-3.png-5e2b0812f086d4189ed260c339bd91ce.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/animation/animation-state-machine-2.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/animation-state-machine-2.png-baf70ff4067eaba0e5bf32462ebb8be4.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/animation/animation-state-machine-2.png"
dest_files=[ "res://.import/animation-state-machine-2.png-baf70ff4067eaba0e5bf32462ebb8be4.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/car-3d.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/car-3d.jpg-3be9f19ad924f19b54ac70feb60ff5f2.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/car-3d.jpg"
dest_files=[ "res://.import/car-3d.jpg-3be9f19ad924f19b54ac70feb60ff5f2.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/code-gdscript-visualscript.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/code-gdscript-visualscript.png-0184f2a18b466ab6eb7deb34823a55d2.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/code-gdscript-visualscript.png"
dest_files=[ "res://.import/code-gdscript-visualscript.png-0184f2a18b466ab6eb7deb34823a55d2.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/conversation-editor.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/conversation-editor.png-a5816911c1d72d69843943fc0b200b77.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/conversation-editor.png"
dest_files=[ "res://.import/conversation-editor.png-a5816911c1d72d69843943fc0b200b77.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/create-anything/Ex-Zodiac.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Ex-Zodiac.png-ca98e6f1a19d9eadd302422ca1bb1f0e.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/create-anything/Ex-Zodiac.png"
dest_files=[ "res://.import/Ex-Zodiac.png-ca98e6f1a19d9eadd302422ca1bb1f0e.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/create-anything/procedural-mesh-tool-bastiaan-.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/procedural-mesh-tool-bastiaan-.jpg-565f1081001db008186bfb4144d216cf.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/create-anything/procedural-mesh-tool-bastiaan-.jpg"
dest_files=[ "res://.import/procedural-mesh-tool-bastiaan-.jpg-565f1081001db008186bfb4144d216cf.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/create-anything/procedural-mesh-tool-bastiaan-2-1280x720.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/procedural-mesh-tool-bastiaan-2-1280x720.jpg-83279391d20f78a3ece2d7d7f6282ee4.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/create-anything/procedural-mesh-tool-bastiaan-2-1280x720.jpg"
dest_files=[ "res://.import/procedural-mesh-tool-bastiaan-2-1280x720.jpg-83279391d20f78a3ece2d7d7f6282ee4.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/create-anything/rpg-in-a-box-02-small.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/rpg-in-a-box-02-small.jpg-b6cc59665479d040fd259e6cee1f6e5e.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/create-anything/rpg-in-a-box-02-small.jpg"
dest_files=[ "res://.import/rpg-in-a-box-02-small.jpg-b6cc59665479d040fd259e6cee1f6e5e.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/csharp.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/csharp.png-3a7febcc136094ce064fc4aac6471ac5.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/csharp.png"
dest_files=[ "res://.import/csharp.png-3a7febcc136094ce064fc4aac6471ac5.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/daisy-dangerous-game-securas-1280x720.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/daisy-dangerous-game-securas-1280x720.jpg-228ed46eb6ee1b8dd8a892d2da860e85.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/daisy-dangerous-game-securas-1280x720.jpg"
dest_files=[ "res://.import/daisy-dangerous-game-securas-1280x720.jpg-228ed46eb6ee1b8dd8a892d2da860e85.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/docs-community-websites.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/docs-community-websites.png-89b79ed6fea330442f46d6e311c014aa.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/docs-community-websites.png"
dest_files=[ "res://.import/docs-community-websites.png-89b79ed6fea330442f46d6e311c014aa.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/docs-integrated-help.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/docs-integrated-help.png-ff8a1d66002ce0153ff520c1dfa36859.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/docs-integrated-help.png"
dest_files=[ "res://.import/docs-integrated-help.png-ff8a1d66002ce0153ff520c1dfa36859.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/gdquest-business-card.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/gdquest-business-card.png-9916bfa6e7ebdf8f67cfcf2102cdde21.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/gdquest-business-card.png"
dest_files=[ "res://.import/gdquest-business-card.png-9916bfa6e7ebdf8f67cfcf2102cdde21.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/gdscript-editor-3.1.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/gdscript-editor-3.1.jpg-ed3a3b71868da54bb140d5c399a4d25d.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/gdscript-editor-3.1.jpg"
dest_files=[ "res://.import/gdscript-editor-3.1.jpg-ed3a3b71868da54bb140d5c399a4d25d.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/godot-3.1-editor-2d-720p.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/godot-3.1-editor-2d-720p.jpg-95abfb489060c0006506779f8e3a5206.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/godot-3.1-editor-2d-720p.jpg"
dest_files=[ "res://.import/godot-3.1-editor-2d-720p.jpg-95abfb489060c0006506779f8e3a5206.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/godot-3.1-editor-tps-demo-720p.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/godot-3.1-editor-tps-demo-720p.jpg-89e6d471e280a558dce30dd38a587367.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/godot-3.1-editor-tps-demo-720p.jpg"
dest_files=[ "res://.import/godot-3.1-editor-tps-demo-720p.jpg-89e6d471e280a558dce30dd38a587367.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/godot-editor.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/godot-editor.png-d59f876a32a019479c907cd6c456c1f4.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/godot-editor.png"
dest_files=[ "res://.import/godot-editor.png-d59f876a32a019479c907cd6c456c1f4.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/godot-pres-intro.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/godot-pres-intro.png-c6a49997b2d174063c90c4c316d69d9b.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/godot-pres-intro.png"
dest_files=[ "res://.import/godot-pres-intro.png-c6a49997b2d174063c90c4c316d69d9b.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/made-with-godot.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/made-with-godot.png-3ff5e168031d8dc88817dfe3e3fa5610.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/made-with-godot.png"
dest_files=[ "res://.import/made-with-godot.png-3ff5e168031d8dc88817dfe3e3fa5610.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/mesh2d_bones.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/mesh2d_bones.png-78124bee4dfa413fe933c169cf67f087.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/mesh2d_bones.png"
dest_files=[ "res://.import/mesh2d_bones.png-78124bee4dfa413fe933c169cf67f087.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/modern-engine.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/modern-engine.jpg-c40bf1c043f94f0a305441c24aee96a5.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/modern-engine.jpg"
dest_files=[ "res://.import/modern-engine.jpg-c40bf1c043f94f0a305441c24aee96a5.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/new_3d_renderer-1264x720.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/new_3d_renderer-1264x720.jpg-aa0aea50ee32ed80f04f081393d17e13.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/new_3d_renderer-1264x720.jpg"
dest_files=[ "res://.import/new_3d_renderer-1264x720.jpg-aa0aea50ee32ed80f04f081393d17e13.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/new_material_params.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/new_material_params.jpg-1a76ab2db9023191be460773ca7f5c13.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/new_material_params.jpg"
dest_files=[ "res://.import/new_material_params.jpg-1a76ab2db9023191be460773ca7f5c13.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/repo-health.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/repo-health.png-fad49303eda23c70659ec97dc0a97773.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/repo-health.png"
dest_files=[ "res://.import/repo-health.png-fad49303eda23c70659ec97dc0a97773.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/robi-open-tps.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/robi-open-tps.jpg-996f253226a5fdcd0bb7bb931c8ba4d0.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/robi-open-tps.jpg"
dest_files=[ "res://.import/robi-open-tps.jpg-996f253226a5fdcd0bb7bb931c8ba4d0.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/teddy-game.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/teddy-game.jpg-62264f0ee0bcfcc46c4a95aaa9137524.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/teddy-game.jpg"
dest_files=[ "res://.import/teddy-game.jpg-62264f0ee0bcfcc46c4a95aaa9137524.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/user-interface/ui-result.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/ui-result.png-94c4aa7564ec296397cce7b3b8197e89.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/user-interface/ui-result.png"
dest_files=[ "res://.import/ui-result.png-94c4aa7564ec296397cce7b3b8197e89.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/img/user-interface/ui-theme-editor.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/ui-theme-editor.png-bb428ab959522e7873ea542a744be5a6.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/power_pitch/img/user-interface/ui-theme-editor.png"
dest_files=[ "res://.import/ui-theme-editor.png-bb428ab959522e7873ea542a744be5a6.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/power_pitch/slides/A_free_modern_engine.tscn
================================================
[gd_scene load_steps=12 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/godot-3.1-editor-2d-720p.jpg" type="Texture" id=8]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=9]
[ext_resource path="res://content/power_pitch/img/godot-3.1-editor-tps-demo-720p.jpg" type="Texture" id=10]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=11]
[node name="A_free_modern_engine" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = ""
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 730.0
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 730.0
[node name="godot_editor_2d" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 8 )
expand = true
stretch_mode = 6
[node name="godot_editor_3d" parent="Column/Body/Row/PictureSlideshow" index="3" instance=ExtResource( 9 )]
texture = ExtResource( 10 )
[node name="Footer" parent="Column" index="2" instance=ExtResource( 11 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "*And PS4, XboxOne, Switch, PS Vita..."
================================================
FILE: godot-3-presentation/content/power_pitch/slides/All-in-one_package.tscn
================================================
[gd_scene load_steps=19 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/gdscript-editor-3.1.jpg" type="Texture" id=8]
[ext_resource path="res://content/power_pitch/img/animation/animation-editor-3.png" type="Texture" id=9]
[ext_resource path="res://content/power_pitch/img/animation/animation-state-machine-2.png" type="Texture" id=10]
[ext_resource path="res://content/power_pitch/img/animation/anim-editor-03.png" type="Texture" id=11]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=12]
[ext_resource path="res://content/power_pitch/img/mesh2d_bones.png" type="Texture" id=13]
[ext_resource path="res://content/tokyo_indies_pitch/img/crackshot-tileset-editor.png" type="Texture" id=14]
[ext_resource path="res://content/tokyo_indies_pitch/img/tilemap-editor-crackshot-securas.png" type="Texture" id=15]
[ext_resource path="res://content/power_pitch/img/user-interface/ui-theme-editor.png" type="Texture" id=16]
[ext_resource path="res://content/power_pitch/img/user-interface/ui-result.png" type="Texture" id=17]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=18]
[node name="AllInOnePackage" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = ""
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 730.0
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 730.0
[node name="gdscript-editor-3.1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 8 )
expand = true
stretch_mode = 6
[node name="animation-editor-1" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="3"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 3
size_flags_vertical = 3
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="Column" parent="Column/Body/Row/PictureSlideshow" index="4" instance=ExtResource( 2 )]
editor/display_folded = true
visible = false
[node name="animation-state-machine-2" type="TextureRect" parent="Column/Body/Row/PictureSlideshow/Column" index="0"]
margin_right = 1278.0
margin_bottom = 365.0
size_flags_vertical = 3
texture = ExtResource( 10 )
expand = true
stretch_mode = 7
[node name="anim-editor-03" type="TextureRect" parent="Column/Body/Row/PictureSlideshow/Column" index="1"]
margin_top = 365.0
margin_right = 1278.0
margin_bottom = 730.0
size_flags_horizontal = 3
size_flags_vertical = 3
texture = ExtResource( 11 )
expand = true
stretch_mode = 7
[node name="skinning-editor" parent="Column/Body/Row/PictureSlideshow" index="5" instance=ExtResource( 12 )]
texture = ExtResource( 13 )
[node name="crackshot-tileset-editor" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="6"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 14 )
expand = true
stretch_mode = 6
[node name="tilemap-editor-crackshot-securas" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="7"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 15 )
expand = true
stretch_mode = 6
[node name="ui-theme-editor" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="8"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 16 )
expand = true
stretch_mode = 6
[node name="ui-result" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="9"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 17 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 18 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
================================================
FILE: godot-3-presentation/content/power_pitch/slides/CodeFreely.tscn
================================================
[gd_scene load_steps=11 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=6]
[ext_resource path="res://content/power_pitch/img/code-gdscript-visualscript.png" type="Texture" id=7]
[ext_resource path="res://content/power_pitch/img/gdscript-editor-3.1.jpg" type="Texture" id=8]
[ext_resource path="res://content/power_pitch/img/csharp.png" type="Texture" id=9]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=10]
[node name="CodeFreely" index="0" instance=ExtResource( 1 )]
[node name="Header" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = "Code freely"
[node name="Body" parent="." index="2" instance=ExtResource( 3 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Body" index="0" instance=ExtResource( 4 )]
[node name="TextBox" parent="Body/Row" index="0" instance=ExtResource( 5 )]
margin_right = 639.0
margin_bottom = 730.0
custom_constants/margin_right = 20
text = "Godot lets you use many programming languages:
[color=#02E180]GDScript[/color] Python-like scripting language, designed for gameplay developers
[color=#F2971A]C# 7.0[/color] support using Mono
Full [color=#E3266F]C[/color] and [color=#E3266F]C++[/color] support without having to recompile the engine
[color=#26BFE3]Visual scripting[/color] using a graph of blocks"
[node name="PictureSlideshow" parent="Body/Row" index="1" instance=ExtResource( 6 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 730.0
[node name="code-gdscript-visualscript" type="TextureRect" parent="Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 7 )
expand = true
stretch_mode = 6
[node name="gdscript-editor-3.1" type="TextureRect" parent="Body/Row/PictureSlideshow" index="3"]
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 11
size_flags_vertical = 11
texture = ExtResource( 8 )
expand = true
stretch_mode = 6
[node name="csharp" type="TextureRect" parent="Body/Row/PictureSlideshow" index="4"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="Footer" parent="." index="3" instance=ExtResource( 10 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Community-supported languages: Python, Nim, D, Rust..."
================================================
FILE: godot-3-presentation/content/power_pitch/slides/CreateAnything.tscn
================================================
[gd_scene load_steps=12 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/create-anything/Ex-Zodiac.png" type="Texture" id=8]
[ext_resource path="res://content/power_pitch/img/create-anything/rpg-in-a-box-02-small.jpg" type="Texture" id=9]
[ext_resource path="res://content/power_pitch/img/create-anything/procedural-mesh-tool-bastiaan-2-1280x720.jpg" type="Texture" id=10]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=11]
[node name="CreateAnything" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = ""
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 730.0
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 730.0
[node name="Ex-Zodiac" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 8 )
expand = true
stretch_mode = 6
[node name="rpg-in-a-box-02-small" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="3"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="procedural-mesh-tool-bastiaan-" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="4"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 10 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 11 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
================================================
FILE: godot-3-presentation/content/power_pitch/slides/Godot_is_in_great_shape.tscn
================================================
[gd_scene load_steps=10 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/repo-health.png" type="Texture" id=8]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=9]
[node name="Godot_is_in_great_shape" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header2" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = ""
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox2" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 730.0
[node name="Picture" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 730.0
texture = ExtResource( 8 )
[node name="Footer2" parent="Column" index="2" instance=ExtResource( 9 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
================================================
FILE: godot-3-presentation/content/power_pitch/slides/How_to_get_started.tscn
================================================
[gd_scene load_steps=10 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=6]
[ext_resource path="res://content/power_pitch/img/docs-community-websites.png" type="Texture" id=7]
[ext_resource path="res://content/power_pitch/img/docs-integrated-help.png" type="Texture" id=8]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=9]
[node name="How_to_get_started" index="0" instance=ExtResource( 1 )]
[node name="Header" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = "How to get started"
[node name="Body" parent="." index="2" instance=ExtResource( 3 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Body" index="0" instance=ExtResource( 4 )]
[node name="TextBox" parent="Body/Row" index="0" instance=ExtResource( 5 )]
margin_right = 871.0
margin_bottom = 730.0
text = "The [color=#26BFE3]community[/color] is [b]very[/b] active. Social networks, forum, IRC, Discord...
There's a [color=#26BFE3]Questions/Answers[/color] website
You'll find plenty of official [color=#02E180]tutorials[/color] in the [color=#02E180]online manual[/color]
There's [color=#E3266F]built-in code reference[/color] inside the game editor
Use the [color=#F2971A]open source demos[/color]"
[node name="PictureSlideshow" parent="Body/Row" index="1" instance=ExtResource( 6 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 875.0
margin_right = 1921.0
margin_bottom = 730.0
size_flags_stretch_ratio = 1.2
[node name="docs-community-websites" type="TextureRect" parent="Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 7 )
expand = true
stretch_mode = 6
[node name="docs-integrated-help" type="TextureRect" parent="Body/Row/PictureSlideshow" index="3"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 8 )
expand = true
stretch_mode = 6
[node name="Footer" parent="." index="3" instance=ExtResource( 9 )]
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Most of the resources are in English though... a good way to practice?"
================================================
FILE: godot-3-presentation/content/power_pitch/slides/Learn_from_simple_free_demos.tscn
================================================
[gd_scene load_steps=7 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://content/demos/attacks/AttackDummies.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=6]
[node name="Learn_from_simple_free_demos" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header2" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = "Learn from simple Free demos"
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="AttackDummies" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="Footer2" parent="Column" index="2" instance=ExtResource( 6 )]
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Both official and 3rd-party"
================================================
FILE: godot-3-presentation/content/power_pitch/slides/Made_with_godot.tscn
================================================
[gd_scene load_steps=9 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/Video.tscn" type="PackedScene" id=6]
[ext_resource path="res://content/video/shooter-game.ogv" type="VideoStream" id=7]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=8]
[node name="Made_with_godot" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header2" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = "Made with Godot"
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="Video" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 320.0
margin_top = 5.0
margin_right = 1600.0
margin_bottom = 725.0
rect_min_size = Vector2( 1280, 720 )
stream = ExtResource( 7 )
autoplay = true
[node name="Footer2" parent="Column" index="2" instance=ExtResource( 8 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Galactic Bulwark Strike, by Josep G. Camarasa"
================================================
FILE: godot-3-presentation/content/power_pitch/slides/Professionals_use_godot.tscn
================================================
[gd_scene load_steps=9 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/teddy-game.jpg" type="Texture" id=8]
[node name="Professionals_use_godot" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = "Professionals use Godot"
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 870.0
text = "[color=#E3266F]Game studios[/color] like Gamblify, GuaranApps, Kivano...
[color=#26BFE3]Schools[/color] including School4Games Berlin, KidsCanCode...
[color=#02E180]Content creators[/color] like Heartbeast, GamesFromScratch, [i]GDQuest[/i]...
"
[node name="Picture" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 870.0
texture = ExtResource( 8 )
================================================
FILE: godot-3-presentation/content/power_pitch/slides/State_of_the_art_3d_engine.tscn
================================================
[gd_scene load_steps=11 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/robi-open-tps.jpg" type="Texture" id=8]
[ext_resource path="res://content/power_pitch/img/new_material_params.jpg" type="Texture" id=9]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=10]
[node name="State_of_the_art_3d_engine" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = "State of the art 3d engine"
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 684.0
margin_bottom = 730.0
text = "[color=#E3266F]Physically-based rendering[/color] with full MSAA support
[color=#02E180]Full principled BSDF[/color] with Subsurface Scattering, reflection, refraction, clearcoat...
[color=#26BFE3]Global illumination[/color] for gorgeous real-time graphics
[color=#F2971A]Mid and Post processing effects[/color] including curves and auto exposure, screen-space reflections, fog, bloom, depth of field..."
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 688.0
margin_right = 1921.0
margin_bottom = 730.0
size_flags_stretch_ratio = 1.8
[node name="new_3d_renderer-1264x720" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 8 )
expand = true
[node name="new_material_params" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="3"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 10 )]
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Designed to work well with Blender 2.8's Eevee realtime engine"
================================================
FILE: godot-3-presentation/content/power_pitch/slides/Thank_you.tscn
================================================
[gd_scene load_steps=9 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/gdquest-business-card.png" type="Texture" id=8]
[node name="Thank_you" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header2" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = ""
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox2" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 870.0
[node name="Picture" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 870.0
texture = ExtResource( 8 )
================================================
FILE: godot-3-presentation/content/power_pitch/slides/Title.tscn
================================================
[gd_scene load_steps=4 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=2]
[ext_resource path="res://content/power_pitch/img/godot-pres-intro.png" type="Texture" id=3]
[node name="Title" index="0" instance=ExtResource( 1 )]
[node name="Picture" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
texture = ExtResource( 3 )
================================================
FILE: godot-3-presentation/content/power_pitch/slides/Virtual_and_augmented_reality.tscn
================================================
[gd_scene load_steps=9 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/Video.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/video/vr-capture.ogv" type="VideoStream" id=8]
[node name="Virtual_and_augmented_reality" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header2" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
title = ""
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 870.0
[node name="Video" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 898.0
margin_right = 1666.0
margin_bottom = 870.0
rect_min_size = Vector2( 720, 0 )
size_flags_vertical = 7
stream = ExtResource( 8 )
autoplay = true
expand = false
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/TokyoIndies.tscn
================================================
[gd_scene load_steps=14 format=2]
[ext_resource path="res://content/power_pitch/slides/Godot_is_in_great_shape.tscn" type="PackedScene" id=1]
[ext_resource path="res://content/power_pitch/slides/A_free_modern_engine.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/presentation/Presentation.tscn" type="PackedScene" id=3]
[ext_resource path="res://content/power_pitch/slides/CodeFreely.tscn" type="PackedScene" id=4]
[ext_resource path="res://content/power_pitch/slides/State_of_the_art_3d_engine.tscn" type="PackedScene" id=5]
[ext_resource path="res://content/power_pitch/slides/All-in-one_package.tscn" type="PackedScene" id=6]
[ext_resource path="res://content/tokyo_indies_pitch/slides/Intro_Nathan.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/slides/How_to_get_started.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/tokyo_indies_pitch/slides/Thank_you_tokyo_indies.tscn" type="PackedScene" id=9]
[ext_resource path="res://content/tokyo_indies_pitch/slides/ModularAndExtensible.tscn" type="PackedScene" id=10]
[ext_resource path="res://content/tokyo_indies_pitch/slides/TokyoIndiesTitle.tscn" type="PackedScene" id=11]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=12]
[sub_resource type="GDScript" id=1]
script/source = "extends Label
func _ready():
hide()
"
[node name="TokyoIndies" instance=ExtResource( 3 )]
[node name="TokyoIndiesTitle" parent="Slides" index="0" instance=ExtResource( 11 )]
[node name="Intro_GDquest" parent="Slides" index="1" instance=ExtResource( 7 )]
[node name="A_free_modern_engine" parent="Slides" index="2" instance=ExtResource( 2 )]
[node name="All_in_one_package" parent="Slides" index="3" instance=ExtResource( 6 )]
[node name="State_of_the_art_3d_engine" parent="Slides" index="4" instance=ExtResource( 5 )]
[node name="BuildUponGodot" parent="Slides" index="5" instance=ExtResource( 10 )]
[node name="CodeFreely" parent="Slides" index="6" instance=ExtResource( 4 )]
[node name="Godot_is_in_great_shape" parent="Slides" index="7" instance=ExtResource( 1 )]
[node name="How_to_get_started" parent="Slides" index="8" instance=ExtResource( 8 )]
[node name="Thank_you_tokyo_indies" parent="Slides" index="9" instance=ExtResource( 9 )]
visible = false
[node name="TouchControls" parent="." index="2"]
visible = false
[node name="Label" type="Label" parent="." index="3"]
anchor_right = 1.0
margin_top = -82.0
margin_bottom = -68.0
theme = ExtResource( 12 )
text = "A 5 minutes intro to Godot [3.1] and the open projects on GDquest, for the Tokyo Indies meetup in Tokyo, Japan."
script = SubResource( 1 )
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/img/banner-power-sequencer-1.1.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/banner-power-sequencer-1.1.jpg-826565a5e7573ce32093b2858070e987.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/tokyo_indies_pitch/img/banner-power-sequencer-1.1.jpg"
dest_files=[ "res://.import/banner-power-sequencer-1.1.jpg-826565a5e7573ce32093b2858070e987.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/img/crackshot-tileset-editor.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/crackshot-tileset-editor.png-da739bb2e69c6788e7b73b23e534710f.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/tokyo_indies_pitch/img/crackshot-tileset-editor.png"
dest_files=[ "res://.import/crackshot-tileset-editor.png-da739bb2e69c6788e7b73b23e534710f.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/img/godot-slides-2-logo.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/godot-slides-2-logo.jpg-32da7ebce7236ff1090698a632ddc674.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/tokyo_indies_pitch/img/godot-slides-2-logo.jpg"
dest_files=[ "res://.import/godot-slides-2-logo.jpg-32da7ebce7236ff1090698a632ddc674.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/img/intro-godot-game-engine.jpg.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/intro-godot-game-engine.jpg-402ae5c01032e0656dfbf13d47487577.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/tokyo_indies_pitch/img/intro-godot-game-engine.jpg"
dest_files=[ "res://.import/intro-godot-game-engine.jpg-402ae5c01032e0656dfbf13d47487577.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/img/open-rpg-banner.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/open-rpg-banner.png-236586eb376f7e0af2d756f4c6428f6f.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/tokyo_indies_pitch/img/open-rpg-banner.png"
dest_files=[ "res://.import/open-rpg-banner.png-236586eb376f7e0af2d756f4c6428f6f.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/img/tilemap-editor-crackshot-securas.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/tilemap-editor-crackshot-securas.png-1b567b5fb92b5c72c1c7ef736a362880.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/tokyo_indies_pitch/img/tilemap-editor-crackshot-securas.png"
dest_files=[ "res://.import/tilemap-editor-crackshot-securas.png-1b567b5fb92b5c72c1c7ef736a362880.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/img/youtube-1.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/youtube-1.png-a4bc72fe3a532d156512db92e3826281.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/tokyo_indies_pitch/img/youtube-1.png"
dest_files=[ "res://.import/youtube-1.png-a4bc72fe3a532d156512db92e3826281.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/img/youtube-2.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/youtube-2.png-4040b3a69df7b242027e9acaabf4cd11.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://content/tokyo_indies_pitch/img/youtube-2.png"
dest_files=[ "res://.import/youtube-2.png-4040b3a69df7b242027e9acaabf4cd11.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/slides/Intro_Nathan.tscn
================================================
[gd_scene load_steps=13 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/theme/fonts/title_montserrat.tres" type="DynamicFont" id=4]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=8]
[ext_resource path="res://content/open_source_games/img/yt-videos.png" type="Texture" id=9]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=10]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
export(Resource) var font_override = null
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if font_override:
title_node.set('custom_fonts/font', font_override)
title_shadow_node.set('custom_fonts/font', font_override)
return
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="Intro_GDquest" index="0" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Game Design Quest"
font_override = ExtResource( 4 )
[node name="Body" parent="Column" index="1" instance=ExtResource( 5 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 6 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 7 )]
margin_right = 766.0
margin_bottom = 730.0
script = SubResource( 2 )
text = "GDquest's mission is to [color=#26BFE3]bring people together[/color] to become better game developers.
We do that creating Free and Open Source [color=#E3266F]game demos[/color], [color=#26BFE3]tutorials[/color], and [color=#F2971A]tools[/color] to help you learn professional game creation techniques."
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 8 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 770.0
margin_right = 1921.0
margin_bottom = 730.0
size_flags_stretch_ratio = 1.5
DISPLAY_DURATION = 8.0
[node name="godot-slides-2-logo2" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 720, 300 )
size_flags_vertical = 3
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 10 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "It's my full-time job, and I can even pay people to work together with!"
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/slides/ModularAndExtensible.tscn
================================================
[gd_scene load_steps=13 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/create-anything/rpg-in-a-box-02-small.jpg" type="Texture" id=8]
[ext_resource path="res://content/power_pitch/img/create-anything/procedural-mesh-tool-bastiaan-2-1280x720.jpg" type="Texture" id=9]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=10]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="BuildUponGodot" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Build upon Godot"
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 730.0
script = SubResource( 2 )
text = "The Godot editor is a Godot game! It relies on the same tools you'll use to make your game.
Thanks to that, you can [color=#02E180]code add-ons and games the same way[/color].
The [color=#26BFE3]open source Assets Library[/color] lets you download add-ons from GitHub into your projects."
[node name="PictureSlideshow" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 730.0
[node name="rpg-in-a-box-02-small" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="2"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 8 )
expand = true
stretch_mode = 6
[node name="procedural-mesh-tool-bastiaan-" type="TextureRect" parent="Column/Body/Row/PictureSlideshow" index="3"]
anchor_right = 1.0
anchor_bottom = 1.0
texture = ExtResource( 9 )
expand = true
stretch_mode = 6
[node name="Footer" parent="Column" index="2" instance=ExtResource( 10 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/slides/Thank_you_tokyo_indies.tscn
================================================
[gd_scene load_steps=12 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Column.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/slide/widgets/Header.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/slide/widgets/Body.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/slide/layout/Row.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/slide/widgets/TextBox.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=7]
[ext_resource path="res://content/power_pitch/img/gdquest-business-card.png" type="Texture" id=8]
[ext_resource path="res://src/slide/widgets/Footer.tscn" type="PackedScene" id=10]
[sub_resource type="GDScript" id=1]
script/source = "tool
extends Control
export(String) var title = \"\" setget set_title
export(String) var subtitle = \"\" setget set_subtitle
var FONTS_DEFAULT = {
'title': preload(\"res://theme/fonts/title_montserrat.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_montserrat.tres\"),
}
var FONTS_CJK = {
'title': preload(\"res://theme/fonts/title_noto.tres\"),
'subtitle': preload(\"res://theme/fonts/subtitle_noto.tres\"),
}
onready var title_node = $Column/Title
onready var title_shadow_node = $Column/Title/Shadow
onready var subtitle_node = $Column/Subtitle
onready var subtitle_shadow_node = $Column/Subtitle/Shadow
func _ready():
self.title = title
self.subtitle = subtitle
func set_title(string):
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string):
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate():
var locale = TranslationServer.get_locale()
var fonts = FONTS_DEFAULT
if locale in ['ja', 'ko', 'zh']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data():
var data = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
"
[sub_resource type="GDScript" id=2]
script/source = "tool
extends Control
export(String, MULTILINE) var text = \"\" setget set_text
export(bool) var center = false setget set_center
onready var _text = $Text
var _text_processed = \"\"
func _ready():
update_text()
func set_text(string):
text = string
if not _text:
return
update_text()
func set_center(value):
center = value
if not _text:
return
update_text()
func update_text():
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string):
var bbcode = \"\"
for line in string.split(\"\\n\"):
line = \"%s%s%s\" % [\"[center]\", line, \"[/center]\"]
bbcode += line + \"\\n\"
return bbcode
func get_translation_data():
return { 'text': text }
"
[node name="Thank_you_tokyo_indies" instance=ExtResource( 1 )]
[node name="Column" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
[node name="Header" parent="Column" index="0" instance=ExtResource( 3 )]
anchor_right = 0.0
margin_right = 1921.0
margin_bottom = 210.0
script = SubResource( 1 )
title = "Thank you!"
subtitle = ""
font_override = null
[node name="Body" parent="Column" index="1" instance=ExtResource( 4 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 210.0
margin_right = 1921.0
margin_bottom = 940.0
[node name="Row" parent="Column/Body" index="0" instance=ExtResource( 5 )]
[node name="TextBox" parent="Column/Body/Row" index="0" instance=ExtResource( 6 )]
margin_right = 639.0
margin_bottom = 730.0
script = SubResource( 2 )
text = "This presentation and our game projects are Free and Open Source!
Find them on [url=https://github.com/GDquest/godot-3-presentation]GDquest's GitHub page[/url].
We are on:
Twitter: [color=#26BFE3]@NathanGDquest[/color]
YouTube: [color=#F2971A]youtube.com/c/gdquest[/color]"
center = false
[node name="Picture" parent="Column/Body/Row" index="1" instance=ExtResource( 7 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 643.0
margin_right = 1921.0
margin_bottom = 730.0
texture = ExtResource( 8 )
[node name="Footer" parent="Column" index="2" instance=ExtResource( 10 )]
visible = true
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 940.0
margin_right = 1921.0
margin_bottom = 1080.0
text = "Any questions? Message me anytime or let's talk after the presentations!"
================================================
FILE: godot-3-presentation/content/tokyo_indies_pitch/slides/TokyoIndiesTitle.tscn
================================================
[gd_scene load_steps=4 format=2]
[ext_resource path="res://src/slide/Slide.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/slide/widgets/Picture.tscn" type="PackedScene" id=2]
[ext_resource path="res://content/tokyo_indies_pitch/img/intro-godot-game-engine.jpg" type="Texture" id=3]
[node name="TokyoIndiesTitle" index="0" instance=ExtResource( 1 )]
[node name="Picture" parent="." index="1" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1921.0
margin_bottom = 1080.0
texture = ExtResource( 3 )
================================================
FILE: godot-3-presentation/content/video/shooter-game.ogv
================================================
[File too large to display: 10.7 MB]
================================================
FILE: godot-3-presentation/content/video/shooter-game.ogv.import
================================================
[remap]
importer="Theora"
type="VideoStreamTheora"
path="res://.import/shooter-game.ogv-d7a7b548019a03d1448a73951c1b31df.ogvstr"
[deps]
source_file="res://content/video/shooter-game.ogv"
dest_files=[ "res://.import/shooter-game.ogv-d7a7b548019a03d1448a73951c1b31df.ogvstr" ]
[params]
loop=true
================================================
FILE: godot-3-presentation/content/video/vr-capture.ogv
================================================
[File too large to display: 12.8 MB]
================================================
FILE: godot-3-presentation/content/video/vr-capture.ogv.import
================================================
[remap]
importer="Theora"
type="VideoStreamTheora"
path="res://.import/vr-capture.ogv-f1047781f2fecc19135f744d38a1bc87.ogvstr"
[deps]
source_file="res://content/video/vr-capture.ogv"
dest_files=[ "res://.import/vr-capture.ogv-f1047781f2fecc19135f744d38a1bc87.ogvstr" ]
[params]
loop=true
================================================
FILE: godot-3-presentation/default_env.tres
================================================
[gd_resource type="Environment" load_steps=2 format=2]
[sub_resource type="ProceduralSky" id=1]
sky_top_color = Color( 0.0470588, 0.454902, 0.976471, 1 )
sky_horizon_color = Color( 0.556863, 0.823529, 0.909804, 1 )
sky_curve = 0.25
ground_bottom_color = Color( 0.101961, 0.145098, 0.188235, 1 )
ground_horizon_color = Color( 0.482353, 0.788235, 0.952941, 1 )
ground_curve = 0.01
[resource]
background_mode = 2
background_sky = SubResource( 1 )
ssao_blur = 1
================================================
FILE: godot-3-presentation/icon.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/project.godot
================================================
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
_global_script_classes=[ {
"base": "InputEvent",
"class": "InputEventSwipe",
"language": "GDScript",
"path": "res://src/touch_controls/InputEventSwipe.gd"
} ]
_global_script_class_icons={
"InputEventSwipe": ""
}
[application]
config/name="Godot Slides 2.0"
run/main_scene="res://content/power_pitch/PowerPitch.tscn"
config/icon="res://icon.png"
config/version="2.0.0"
[autoload]
GlobalConstants="*res://content/demos/attacks/global-constants.gd"
[display]
window/size/width=1920
window/size/height=1080
window/size/test_width=1280
window/size/test_height=720
window/energy_saving/keep_screen_on=false
window/stretch/mode="2d"
window/stretch/aspect="keep"
[gdnative]
singletons=[ ]
[input]
ui_next={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":46,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":46,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":78,"unicode":0,"echo":false,"script":null)
]
}
ui_previous={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":58,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":58,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":80,"unicode":0,"echo":false,"script":null)
]
}
move_left={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
]
}
move_right={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
]
}
move_up={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
]
}
move_down={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":3,"axis_value":1.0,"script":null)
]
}
attack={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
}
toggle_pause={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null)
]
}
jump={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null)
]
}
run={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"unicode":0,"echo":false,"script":null)
]
}
change_language={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":76,"unicode":0,"echo":false,"script":null)
]
}
toggle_fullscreen={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":70,"unicode":0,"echo":false,"script":null)
]
}
[locale]
locale_filter=[ 0, [ "de", "en", "es", "fr", "hi", "it", "ja", "pt", "ru", "zh" ] ]
translations=PoolStringArray( "res://content/power_pitch/PowerPitch.en.translation", "res://content/power_pitch/PowerPitch.ja.translation", "res://content/power_pitch/PowerPitch.fr.translation", "res://content/power_pitch/PowerPitch.es.translation", "res://content/power_pitch/PowerPitch.pt_BR.translation", "res://content/power_pitch/PowerPitch.de.translation", "res://content/power_pitch/PowerPitch.it.translation", "res://content/power_pitch/PowerPitch.zh.translation", "res://content/power_pitch/PowerPitch.uk_UA.translation", "res://content/power_pitch/PowerPitch.ko.translation", "res://content/power_pitch/PowerPitch.sk.translation", "res://content/power_pitch/PowerPitch.id.translation", "res://content/open_source_games/MakingOpenSourceGames.en.translation", "res://content/open_source_games/MakingOpenSourceGames.ja.translation" )
[rendering]
environment/default_environment="res://default_env.tres"
================================================
FILE: godot-3-presentation/src/presentation/Presentation.gd
================================================
extends Node
signal language_changed()
onready var slides: = $Slides
export(String, 'en', 'ja', 'fr', 'es', 'pt_BR', 'de', 'id', 'it', 'zh', 'uk_UA', 'ko', 'sk', 'pl') var language_main: = 'en' setget set_language_main
export(String, 'en', 'ja', 'fr', 'es', 'pt_BR', 'de', 'id', 'it', 'zh', 'uk_UA', 'ko', 'sk', 'pl') var language_second: = 'ja'
var language_active: = '' setget set_language_active
func _ready() -> void:
# save_as_csv(get_translatable_strings()) # Use this to save the presentation as CSV
# return
# slides.save_as_png("res://out")
set_language_active(language_main)
slides.initialize()
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed('toggle_fullscreen'):
OS.window_fullscreen = not OS.window_fullscreen
get_tree().set_input_as_handled()
return
if event.is_action_pressed('change_language') and language_main != language_second:
if TranslationServer.get_locale() == language_main:
set_language_active(language_second)
else:
set_language_active(language_main)
get_tree().set_input_as_handled()
func set_language_main(locale: String) -> void:
language_main = locale
TranslationServer.set_locale(language_main)
func set_language_active(locale: String) -> void:
if locale == '':
return
language_active = locale
TranslationServer.set_locale(locale)
slides.update_translations()
func _on_TouchControls_slide_change_requested(direction: int) -> void:
slides.index_active += direction
# Returns a dictionary with a list of { translatable_string_uid: string }
# and the version of the project in which the data was generated
func get_translatable_strings() -> Dictionary:
var data: = []
for node in get_tree().get_nodes_in_group("translate"):
var src_data: Dictionary = node.get_translation_data()
var node_uid: String = slides.get_translation_uid(node)
for key in src_data:
var string_uid: String = node_uid + "_" + key
data.append({ string_uid: src_data[key] })
return {
'data': data,
'version': ProjectSettings.get_setting("application/config/version"),
}
# TODO: Move to a PresentationSaver class
# Saves translation data from get_translatable_strings() to
# this scene's folder, as scene_name.csv
func save_as_csv(translation_data) -> void:
var folder_path: = filename.left(filename.rfind("/") + 1)
var save_path: = folder_path + name + ".csv"
var file: = File.new()
file.open(save_path, File.WRITE)
if not file.is_open():
print("Error saving translation data: could not open file %s" % save_path)
return
file.store_line("id,en")
var data_list: Array = translation_data['data']
var csv_list: = []
for dict in data_list:
for key in dict:
var as_csv: String = key + "," + "\"" + dict[key] + "\""
csv_list.append(as_csv)
for line in csv_list:
file.store_line(line)
file.close()
================================================
FILE: godot-3-presentation/src/presentation/Presentation.tscn
================================================
[gd_scene load_steps=6 format=2]
[ext_resource path="res://src/presentation/Presentation.gd" type="Script" id=1]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=2]
[ext_resource path="res://src/presentation/Slides.gd" type="Script" id=3]
[ext_resource path="res://src/touch_controls/swipe_detector/SwipeDetector.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/touch_controls/TouchControls.tscn" type="PackedScene" id=5]
[node name="Presentation" type="Node"]
script = ExtResource( 1 )
[node name="Slides" type="Control" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 2 )
script = ExtResource( 3 )
[node name="SwipeDetector" parent="." instance=ExtResource( 4 )]
max_diagonal_slope = null
[node name="TouchControls" parent="." instance=ExtResource( 5 )]
[connection signal="slide_change_requested" from="TouchControls" to="." method="_on_TouchControls_slide_change_requested"]
================================================
FILE: godot-3-presentation/src/presentation/Slides.gd
================================================
tool
extends Node
# Container for presentation Slide Nodes.
# Controls the currently displayed Slide.
enum Directions {PREVIOUS = -1, CURRENT = 0, NEXT = 1}
export var skip_animation: = false
var index_active: = 0 setget set_index_active
var slide_current
var slide_nodes: = []
func _unhandled_input(event: InputEvent) -> void:
var valid_event: bool = (
event is InputEventSwipe or
event is InputEventMouseButton or
event.is_action('ui_next') or
event.is_action('ui_previous')
)
if not valid_event:
return
if event.is_action_pressed('ui_next'):
self.index_active += 1
elif event.is_action_pressed('ui_previous'):
self.index_active -= 1
elif event is InputEventSwipe:
if sign(event.direction.x) == 1:
self.index_active += 1
else:
self.index_active -= 1
elif event is InputEventMouseButton:
match event.button_index:
BUTTON_LEFT:
self.index_active += 1
BUTTON_RIGHT:
self.index_active -= 1
get_tree().set_input_as_handled()
func initialize() -> void:
for slide in get_children():
slide.hide()
slide_nodes.append(slide)
remove_child(slide)
slide_current = slide_nodes[0]
add_child(slide_current)
slide_current.show()
func set_index_active(value : int) -> void:
var index_previous: = index_active
index_active = clamp(value, 0, slide_nodes.size() - 1)
if index_active == index_previous:
set_process_input(true)
else:
_display(index_active)
func _display(slide_index : int) -> void:
set_process_input(false)
var previous_slide = slide_current
var new_slide = slide_nodes[slide_index]
add_child(new_slide)
new_slide.show()
update_translations()
if not skip_animation:
var animation: = "fade_in"
yield(new_slide.play(animation), "completed")
previous_slide.hide()
remove_child(previous_slide)
slide_current = new_slide
set_process_input(true)
func update_translations() -> void:
var translations: PoolStringArray = ProjectSettings.get_setting("locale/translations")
if not translations or translations.size() == 0:
return
for node in get_tree().get_nodes_in_group("translate"):
var node_uid: = get_translation_uid(node)
var translatable_properties: Dictionary = node.get_translation_data()
for key in translatable_properties:
var string_uid: String = node_uid + "_" + key
node.set(key, tr(string_uid))
if node.has_method('translate'):
node.translate()
func get_translation_uid(node: Node) -> String:
return node.owner.name + "_" + str(node.owner.get_path_to(node)).replace("/", "_")
func save_as_png(output_folder: String) -> void:
skip_animation = true
get_tree().paused = true
get_viewport().set_clear_mode(Viewport.CLEAR_MODE_ONLY_NEXT_FRAME)
var id: = 0
for slide in slide_nodes:
# Need to wait two frames to ensure the screen capture works
yield(get_tree(), "idle_frame")
yield(get_tree(), "idle_frame")
var img: = get_viewport().get_texture().get_data()
img.flip_y()
var path: = output_folder.plus_file(str(id).pad_zeros(2) + '-' + slide.name + '.png')
img.save_png(path)
self.index_active += 1
id += 1
get_viewport().set_clear_mode(Viewport.CLEAR_MODE_ALWAYS)
get_tree().paused = false
skip_animation = false
================================================
FILE: godot-3-presentation/src/shaders/TransitionColor.tscn
================================================
[gd_scene load_steps=5 format=2]
[ext_resource path="res://src/shaders/transition.material" type="Material" id=1]
[sub_resource type="Animation" id=3]
resource_name = "_SETUP"
length = 0.01
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:material:shader_param/cutoff")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 0.0 ]
}
[sub_resource type="Animation" id=1]
resource_name = "transition_in"
length = 1.2
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:material:shader_param/cutoff")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 1.2 ),
"transitions": PoolRealArray( 0.505427, 1 ),
"update": 0,
"values": [ 0.0, 1.0 ]
}
[sub_resource type="Animation" id=2]
resource_name = "transition_out"
length = 1.2
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:material:shader_param/cutoff")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 1.2 ),
"transitions": PoolRealArray( 0.457186, 0.505427 ),
"update": 0,
"values": [ 1.0, 0.0 ]
}
[node name="TransitionColor" type="ColorRect" index="0"]
material = ExtResource( 1 )
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
color = Color( 1, 1, 1, 1 )
_sections_unfolded = [ "Material" ]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="0"]
root_node = NodePath("..")
autoplay = ""
playback_process_mode = 1
playback_default_blend_time = 0.0
playback_speed = -1.0
anims/_SETUP = SubResource( 3 )
anims/transition_in = SubResource( 1 )
anims/transition_out = SubResource( 2 )
blend_times = [ ]
_sections_unfolded = [ "Playback Options" ]
================================================
FILE: godot-3-presentation/src/shaders/masks/curtain.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/curtain.png-cdd48f3ff2ca96d61388d10108f12c53.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/shaders/masks/curtain.png"
dest_files=[ "res://.import/curtain.png-cdd48f3ff2ca96d61388d10108f12c53.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/src/shaders/masks/from_center.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/from_center.png-ede10c88c3bf75995745997b35a7e435.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/shaders/masks/from_center.png"
dest_files=[ "res://.import/from_center.png-ede10c88c3bf75995745997b35a7e435.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/src/shaders/masks/shards.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/shards.png-1567e6c939bcd7437e68f850fb0520b5.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/shaders/masks/shards.png"
dest_files=[ "res://.import/shards.png-1567e6c939bcd7437e68f850fb0520b5.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/src/shaders/outline.shader
================================================
shader_type canvas_item;
render_mode unshaded;
uniform float width : hint_range(0.0, 0.1);
uniform vec4 outline_color : hint_color;
void fragment()
{
vec4 sprite_color = texture(TEXTURE, UV);
float alpha = -8.0 * sprite_color.a;
alpha += texture(TEXTURE, UV + vec2(0.0, -width)).a;
alpha += texture(TEXTURE, UV + vec2(width, -width)).a;
alpha += texture(TEXTURE, UV + vec2(width, 0.0)).a;
alpha += texture(TEXTURE, UV + vec2(width, width)).a;
alpha += texture(TEXTURE, UV + vec2(0.0, width)).a;
alpha += texture(TEXTURE, UV + vec2(-width, width)).a;
alpha += texture(TEXTURE, UV + vec2(-width, 0.0)).a;
alpha += texture(TEXTURE, UV + vec2(-width, -width)).a;
vec4 final_color = mix(sprite_color, outline_color, smoothstep(0.0, 1.0, alpha));
COLOR = vec4(final_color.rgb, max(alpha, sprite_color.a));
}
================================================
FILE: godot-3-presentation/src/shaders/transition.shader
================================================
shader_type canvas_item;
render_mode unshaded;
uniform float cutoff : hint_range(0.0, 1.0);
uniform float smooth_size : hint_range(0.0, 1.0);
uniform sampler2D mask : hint_albedo;
uniform vec4 color : hint_color;
void fragment()
{
float value = texture(mask, UV).r;
float alpha = smoothstep(cutoff, cutoff + smooth_size, value * (1.0 - smooth_size) + smooth_size);
COLOR = vec4(color.rgb, alpha);
}
// alpha = step(value, cutoff);
// if (value < cutoff) {
// COLOR = vec4(0.0, 0.0, 0.0, 1.0);
// }
// else if (value < cutoff + 0.1) {
// COLOR = vec4(0.0, 0.0, 0.0, (cutoff + 0.1 - value) / 0.1);
// }
// else {
// COLOR = vec4(0.0, 0.0, 0.0, 0.0);
// }
================================================
FILE: godot-3-presentation/src/slide/Margin.gd
================================================
extends MarginContainer
onready var margins: = {
'right' : get('custom_constants/margin_right'),
'top' : get('custom_constants/margin_top'),
'left' : get('custom_constants/margin_left'),
'bottom' : get('custom_constants/margin_bottom'),
}
func use_margins(value: float) -> void:
if value:
set('custom_constants/margin_right', margins['right'])
set('custom_constants/margin_top', margins['top'])
set('custom_constants/margin_left', margins['left'])
set('custom_constants/margin_bottom', margins['bottom'])
else:
set('custom_constants/margin_right', 0)
set('custom_constants/margin_top', 0)
set('custom_constants/margin_left', 0)
set('custom_constants/margin_bottom', 0)
================================================
FILE: godot-3-presentation/src/slide/Slide.gd
================================================
extends Control
onready var player: = $AnimationPlayer
func play(anim_name: String) -> void:
player.play(anim_name)
yield(player, "animation_finished")
================================================
FILE: godot-3-presentation/src/slide/Slide.tscn
================================================
[gd_scene load_steps=8 format=2]
[ext_resource path="res://src/slide/Slide.gd" type="Script" id=1]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=2]
[sub_resource type="Animation" id=1]
resource_name = "SETUP"
length = 0.01
tracks/0/type = "value"
tracks/0/path = NodePath(".:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ) ]
}
[sub_resource type="Animation" id=2]
resource_name = "enter_from_left"
length = 0.2
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath(".:rect_position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.2 ),
"transitions": PoolRealArray( 1, 0.57848 ),
"update": 0,
"values": [ Vector2( -1920, 0 ), Vector2( 0, 0 ) ]
}
[sub_resource type="Animation" id=3]
resource_name = "enter_from_right"
length = 0.2
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath(".:rect_position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.2 ),
"transitions": PoolRealArray( 0.57848, 1 ),
"update": 0,
"values": [ Vector2( 1920, 0 ), Vector2( 0, 0 ) ]
}
[sub_resource type="Animation" id=4]
length = 0.2
tracks/0/type = "value"
tracks/0/path = NodePath(".:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.2 ),
"transitions": PoolRealArray( 0.482298, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
[sub_resource type="Animation" id=5]
length = 0.2
tracks/0/type = "value"
tracks/0/path = NodePath(".:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.2 ),
"transitions": PoolRealArray( 1, 0.482298 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
}
[node name="Slide" type="VBoxContainer"]
anchor_right = 1.0
anchor_bottom = 1.0
margin_right = 1.0
theme = ExtResource( 2 )
script = ExtResource( 1 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "SETUP"
anims/SETUP = SubResource( 1 )
anims/enter_from_left = SubResource( 2 )
anims/enter_from_right = SubResource( 3 )
anims/fade_in = SubResource( 4 )
anims/fade_out = SubResource( 5 )
================================================
FILE: godot-3-presentation/src/slide/layout/Grid.tscn
================================================
[gd_scene format=2]
[node name="Grid" type="GridContainer" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 3
size_flags_vertical = 3
size_flags_stretch_ratio = 2.0
columns = 2
_sections_unfolded = [ "Size Flags" ]
================================================
FILE: godot-3-presentation/src/slide/layout/Row.tscn
================================================
[gd_scene format=2]
[node name="Row" type="HBoxContainer" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 0
================================================
FILE: godot-3-presentation/src/slide/subtitle_font.tres
================================================
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://assets/fonts/montserrat/montserrat-extrabold.ttf" type="DynamicFontData" id=1]
[resource]
size = 40
use_mipmaps = false
use_filter = true
font_data = ExtResource( 1 )
_sections_unfolded = [ "Extra Spacing", "Font", "Settings" ]
================================================
FILE: godot-3-presentation/src/slide/widgets/Body.tscn
================================================
[gd_scene load_steps=2 format=2]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=1]
[node name="Body" type="ColorRect"]
anchor_right = 1.0
anchor_bottom = 1.0
rect_min_size = Vector2( 1920, 210 )
rect_clip_content = true
size_flags_horizontal = 3
size_flags_vertical = 3
theme = ExtResource( 1 )
color = Color( 0.937255, 0.945098, 0.960784, 1 )
================================================
FILE: godot-3-presentation/src/slide/widgets/Column.tscn
================================================
[gd_scene format=2]
[node name="Column" type="VBoxContainer" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 3
size_flags_vertical = 3
alignment = 0
_sections_unfolded = [ "Size Flags" ]
================================================
FILE: godot-3-presentation/src/slide/widgets/Demo.tscn
================================================
[gd_scene load_steps=2 format=2]
[sub_resource type="GDScript" id=1]
script/source = "extends Control
export(String, FILE, \"*.tscn, *.scn\") var demo_path: = \"\"
const DEMOS_FOLDER = \"res://content/demos/\"
func play() -> void:
if not demo_path.begins_with(\"res://\"):
demo_path = DEMOS_FOLDER + demo_path
add_child(load(demo_path).instance())
show()
func unload() -> void:
for node in get_children():
node.queue_free()
func _on_LegacySlide_shown() -> void:
if demo_path:
play()
func _on_LegacySlide_hidden() -> void:
unload()
"
_sections_unfolded = [ "Resource" ]
[node name="Demo" type="Control"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 3
size_flags_vertical = 3
script = SubResource( 1 )
_sections_unfolded = [ "Size Flags" ]
demo_path = ""
================================================
FILE: godot-3-presentation/src/slide/widgets/Footer.gd
================================================
tool
extends Control
export(String, MULTILINE) var text: = "" setget set_text
onready var label: Label = $Text
onready var label_shadow: Label = $Text/Shadow
func set_text(string: String) -> void:
text = string
visible = text != ""
if not label:
label = $Text
label_shadow = $Text/Shadow
if not label:
return
label.text = string
label_shadow.text = string
func get_translation_data() -> Dictionary:
return {'text': text}
================================================
FILE: godot-3-presentation/src/slide/widgets/Footer.tscn
================================================
[gd_scene load_steps=4 format=2]
[ext_resource path="res://assets/theme/sprites/footer_dusk.png" type="Texture" id=1]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=2]
[ext_resource path="res://src/slide/widgets/Footer.gd" type="Script" id=3]
[node name="Footer" type="TextureRect" groups=[
"translate",
]]
visible = false
show_behind_parent = true
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_top = -140.0
rect_min_size = Vector2( 0, 140 )
size_flags_horizontal = 3
theme = ExtResource( 2 )
texture = ExtResource( 1 )
expand = true
script = ExtResource( 3 )
[node name="Text" type="Label" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 0
size_flags_vertical = 1
text = "Test"
align = 1
valign = 1
autowrap = true
clip_text = true
[node name="Shadow" type="Label" parent="Text"]
modulate = Color( 0.34902, 0, 0.701961, 0.486275 )
show_behind_parent = true
anchor_right = 1.0
anchor_bottom = 1.0
margin_top = 3.0
margin_bottom = 3.0
mouse_filter = 0
size_flags_vertical = 1
text = "Test"
align = 1
valign = 1
autowrap = true
clip_text = true
================================================
FILE: godot-3-presentation/src/slide/widgets/Header/Subtitle.gd
================================================
tool
extends Label
signal visibility_updated(visible)
func display(string: String) -> void:
visible = string != ""
if not visible:
return
text = string
$Shadow.text = string
func _on_visibility_changed() -> void:
emit_signal("visibility_updated", visible)
================================================
FILE: godot-3-presentation/src/slide/widgets/Header/Title.gd
================================================
tool
extends Label
onready var shadow_node: = $Shadow
func display(string: String) -> void:
text = string
shadow_node.text = string
func _on_Subtitle_visibility_updated(visible: bool) -> void:
if visible:
valign = Label.VALIGN_BOTTOM
shadow_node.valign = Label.VALIGN_BOTTOM
else:
valign = Label.VALIGN_CENTER
shadow_node.valign = Label.VALIGN_CENTER
================================================
FILE: godot-3-presentation/src/slide/widgets/Header.gd
================================================
tool
extends Control
onready var title_node: = $Column/Title
onready var title_shadow_node: = $Column/Title/Shadow
onready var subtitle_node: = $Column/Subtitle
onready var subtitle_shadow_node: = $Column/Subtitle/Shadow
export var title: = "" setget set_title
export var subtitle: = "" setget set_subtitle
export var font_override: Resource
var font_title_default: Resource = preload("res://assets/theme/fonts/title_montserrat.tres")
var font_subtitle_default: Resource = preload("res://assets/theme/fonts/subtitle_montserrat.tres")
var font_title_cjk: Resource = preload("res://assets/theme/fonts/title_noto.tres")
var font_subtitle_cjk: Resource = preload("res://assets/theme/fonts/subtitle_noto.tres")
var FONTS_DEFAULT: = {
title=font_title_default,
subtitle=font_subtitle_default,
}
var FONTS_CJK: = {
title=font_title_cjk,
subtitle=font_subtitle_cjk,
}
func _ready() -> void:
self.title = title
self.subtitle = subtitle
func set_title(string: String) -> void:
title = string
if not title_node:
return
title_node.display(string)
func set_subtitle(string: String) -> void:
subtitle = string
if not subtitle_node:
return
subtitle_node.display(string)
func translate() -> void:
if font_override:
title_node.set('custom_fonts/font', font_override)
title_shadow_node.set('custom_fonts/font', font_override)
return
var locale: = TranslationServer.get_locale()
var fonts: = FONTS_DEFAULT
if locale in ['ja', 'ko', 'zh', 'ar']:
fonts = FONTS_CJK
title_node.set('custom_fonts/font', fonts['title'])
title_shadow_node.set('custom_fonts/font', fonts['title'])
subtitle_node.set('custom_fonts/font', fonts['subtitle'])
subtitle_shadow_node.set('custom_fonts/font', fonts['subtitle'])
func get_translation_data() -> Dictionary:
var data: = { 'title': title }
if subtitle:
data['subtitle'] = subtitle
return data
================================================
FILE: godot-3-presentation/src/slide/widgets/Header.tscn
================================================
[gd_scene load_steps=8 format=2]
[ext_resource path="res://assets/theme/fonts/subtitle_montserrat.tres" type="DynamicFont" id=1]
[ext_resource path="res://src/slide/widgets/Header/Title.gd" type="Script" id=2]
[ext_resource path="res://src/slide/widgets/Header.gd" type="Script" id=3]
[ext_resource path="res://assets/theme/fonts/title_montserrat.tres" type="DynamicFont" id=4]
[ext_resource path="res://assets/theme/sprites/header_dusk.png" type="Texture" id=5]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=6]
[ext_resource path="res://src/slide/widgets/Header/Subtitle.gd" type="Script" id=7]
[node name="Header" type="TextureRect" groups=[
"translate",
]]
anchor_right = 1.0
rect_min_size = Vector2( 1920, 210 )
size_flags_horizontal = 3
theme = ExtResource( 6 )
texture = ExtResource( 5 )
expand = true
script = ExtResource( 3 )
title = "Title"
[node name="Column" type="VBoxContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
[node name="Title" type="Label" parent="Column"]
margin_right = 1920.0
margin_bottom = 210.0
mouse_filter = 0
size_flags_vertical = 3
size_flags_stretch_ratio = 2.2
custom_fonts/font = ExtResource( 4 )
text = "Title"
align = 1
valign = 1
clip_text = true
uppercase = true
script = ExtResource( 2 )
[node name="Shadow" type="Label" parent="Column/Title"]
modulate = Color( 0.351563, 0, 0.703125, 0.487922 )
show_behind_parent = true
anchor_right = 1.0
anchor_bottom = 1.0
margin_top = 6.0
margin_bottom = 6.0
mouse_filter = 0
size_flags_vertical = 3
size_flags_stretch_ratio = 2.2
custom_fonts/font = ExtResource( 4 )
text = "Title"
align = 1
valign = 1
clip_text = true
uppercase = true
[node name="Subtitle" type="Label" parent="Column"]
visible = false
margin_top = 144.0
margin_right = 1920.0
margin_bottom = 210.0
mouse_filter = 0
size_flags_vertical = 3
custom_fonts/font = ExtResource( 1 )
text = "Test"
align = 1
clip_text = true
script = ExtResource( 7 )
[node name="Shadow" type="Label" parent="Column/Subtitle"]
modulate = Color( 0.34902, 0, 0.701961, 0.486275 )
show_behind_parent = true
anchor_right = 1.0
anchor_bottom = 1.0
margin_top = 4.0
margin_bottom = 4.0
mouse_filter = 0
size_flags_vertical = 3
custom_fonts/font = ExtResource( 1 )
text = "Test"
align = 1
clip_text = true
script = ExtResource( 7 )
[connection signal="visibility_changed" from="Column/Subtitle" to="Column/Subtitle" method="_on_visibility_changed"]
[connection signal="visibility_updated" from="Column/Subtitle" to="Column/Title" method="_on_Subtitle_visibility_updated"]
================================================
FILE: godot-3-presentation/src/slide/widgets/Picture.tscn
================================================
[gd_scene format=2]
[node name="Picture" type="TextureRect"]
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 3
size_flags_vertical = 3
size_flags_stretch_ratio = 2.0
expand = true
stretch_mode = 6
================================================
FILE: godot-3-presentation/src/slide/widgets/PictureSlideshow.gd
================================================
extends Control
# Slideshow. Displays one child Control at a time and fades between them
# at constant time intervals.
onready var tween: = $Tween
onready var timer: = $Timer
export(float, 0.0, 10.0) var display_duration: = 4.0
export(float, 0.0, 1.0) var transition_duration: = 0.4
export(Color) var color_pause: = Color('#d9e2e5')
enum Directions {PREVIOUS = -1, CURRENT = 0, NEXT = 1}
const COLOR_OPAQUE : = Color("#ffffffff")
const COLOR_TRANSPARENT : = Color("#00ffffff")
var paused: = false setget set_paused
var slides: = []
var index_active: = 0 setget set_index_active
var picture_active: Control
var picture_previous: Control
func _ready() -> void:
for node in get_children():
if not node is Control:
continue
slides.append(node)
for widget in slides:
widget.modulate = COLOR_TRANSPARENT
widget.hide()
tween.connect("tween_completed", self, "_on_tween_completed")
start()
func start() -> void:
if not slides:
return
picture_active = slides[index_active]
picture_active.modulate = COLOR_OPAQUE
picture_active.show()
timer.wait_time = display_duration
timer.start()
# Pause and navigation
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed('ui_accept'):
self.paused = not paused
accept_event()
elif event.is_action_pressed('ui_left'):
self.index_active += Directions.PREVIOUS
accept_event()
elif event.is_action_pressed('ui_right'):
self.index_active -= Directions.PREVIOUS
accept_event()
func set_paused(value) -> void:
paused = value
timer.paused = value
if paused:
tween.stop_all()
modulate = color_pause
else:
tween.resume_all()
modulate = COLOR_OPAQUE
func set_index_active(value: int) -> void:
var index_previous: = index_active
var slides_count: = slides.size()
index_active = (value + slides_count) % slides_count
if index_active != index_previous:
_display(index_active, true)
func _display(index: int, animate: =false) -> void:
picture_previous = picture_active
picture_active = slides[index]
if picture_previous == picture_active:
return
picture_previous.modulate = COLOR_OPAQUE
picture_active.modulate = COLOR_TRANSPARENT
picture_active.show()
if animate:
tween.interpolate_property(picture_previous, 'modulate', COLOR_OPAQUE, COLOR_TRANSPARENT, transition_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
tween.interpolate_property(picture_active, 'modulate', COLOR_TRANSPARENT, COLOR_OPAQUE, transition_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
tween.start()
func _on_tween_completed(object:Object, key:String) -> void:
picture_previous.hide()
timer.start()
func _on_tree_entered() -> void:
start()
func _on_Timer_timeout() -> void:
self.index_active += Directions.NEXT
================================================
FILE: godot-3-presentation/src/slide/widgets/PictureSlideshow.tscn
================================================
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/slide/widgets/PictureSlideshow.gd" type="Script" id=1]
[node name="PictureSlideshow" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 3
size_flags_vertical = 3
size_flags_stretch_ratio = 2.0
script = ExtResource( 1 )
[node name="Tween" type="Tween" parent="."]
[node name="Timer" type="Timer" parent="."]
[connection signal="tree_entered" from="." to="." method="_on_tree_entered"]
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]
================================================
FILE: godot-3-presentation/src/slide/widgets/TextBox.gd
================================================
tool
extends Control
export(String, MULTILINE) var text: = "" setget set_text
export var center: = false setget set_center
onready var _text: = $Text
var _text_processed: = ""
func _ready() -> void:
update_text()
func set_text(string: String) -> void:
text = string
if not _text:
return
update_text()
func set_center(value: bool) -> void:
center = value
if not _text:
return
update_text()
func update_text() -> void:
if center:
_text_processed = center_text(text)
else:
_text_processed = text
$Text.bbcode_text = _text_processed
func center_text(string: String) -> String:
var bbcode: = ""
for line in string.split("\n"):
line = "%s%s%s" % ["[center]", line, "[/center]"]
bbcode += line + "\n"
return bbcode
func get_translation_data() -> Dictionary:
return { 'text': text }
================================================
FILE: godot-3-presentation/src/slide/widgets/TextBox.tscn
================================================
[gd_scene load_steps=3 format=2]
[ext_resource path="res://src/slide/widgets/TextBox.gd" type="Script" id=1]
[ext_resource path="res://assets/theme/godot.theme" type="Theme" id=2]
[node name="TextBox" type="MarginContainer" groups=[
"translate",
]]
margin_right = 638.0
margin_bottom = 1080.0
size_flags_horizontal = 3
size_flags_vertical = 3
theme = ExtResource( 2 )
custom_constants/margin_top = 32
custom_constants/margin_bottom = 32
script = ExtResource( 1 )
[node name="Text" type="RichTextLabel" parent="."]
margin_left = 32.0
margin_top = 32.0
margin_right = 606.0
margin_bottom = 1048.0
bbcode_enabled = true
scroll_active = false
[node name="Shadow" type="RichTextLabel" parent="Text"]
visible = false
show_behind_parent = true
margin_top = 2.0
margin_right = 566.0
margin_bottom = 676.0
size_flags_horizontal = 3
bbcode_enabled = true
bbcode_text = "Un seul exécutable de [color=#26BFE3]20mo[/color]:
- Téléchargez le [color=#26BFE3]en quelques secondes[/color]
- [color=#26BFE3]Pas d'installation[/color]
Tout ce qui ajoute du poids est en option: templates d'export mobile, mono et C#...
"
text = "Un seul exécutable de 20mo:
- Téléchargez le en quelques secondes
- Pas d'installation
Tout ce qui ajoute du poids est en option: templates d'export mobile, mono et C#...
"
scroll_active = false
================================================
FILE: godot-3-presentation/src/slide/widgets/Video.gd
================================================
extends VideoPlayer
# Displays a video and forces its minimum size.
# Add pause support to VideoPlayer
export(String) var base_path: = 'res://content/video/'
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("toggle_pause"):
paused = not paused
func display(file_name: String, config: = {}) -> void:
rect_min_size = Vector2(1280, 720)
if 'video_size' in config.keys():
var video_size: Vector2 = config['video_size']
rect_min_size = Vector2(video_size['x'], video_size['y'])
visible = not file_name == ""
if file_name == "":
stream = null
return
var video_path: String = base_path + file_name
stream = load(video_path)
play()
paused = false
================================================
FILE: godot-3-presentation/src/slide/widgets/Video.tscn
================================================
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/slide/widgets/Video.gd" type="Script" id=1]
[node name="Video" type="VideoPlayer"]
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 6
size_flags_vertical = 6
size_flags_stretch_ratio = 2.0
script = ExtResource( 1 )
================================================
FILE: godot-3-presentation/src/slide/widgets/text_edit/TextEdit.gd
================================================
tool
extends TextEdit
export var class_color: = Color(0.6, 0.6, 1.0)
export var member_color: = Color(0.6, 1.0, 0.6)
export var keyword_color: = Color(1.0, 0.6, 0.6)
export var quotes_color: = Color(1.0, 1.0, 0.6)
export(String, FILE, "*.json") var keyword_data_path: = "res://slide/widgets/text_edit/keywords.json"
func _ready() -> void:
add_color_region('"', '"', quotes_color)
add_color_region("'", "'", quotes_color)
for c in ClassDB.get_class_list():
add_keyword_color(c, class_color)
for m in ClassDB.class_get_property_list(c):
for key in m:
add_keyword_color(key, member_color)
var file: = File.new()
file.open("res://src/slide/widgets/text_edit/keywords.json", file.READ)
var keywords: Dictionary = parse_json(file.get_as_text())
file.close()
for k in keywords["list"]:
add_keyword_color(k, keyword_color)
func _gui_input(event: InputEvent) -> void:
get_tree().set_input_as_handled()
================================================
FILE: godot-3-presentation/src/slide/widgets/text_edit/TextEdit.tscn
================================================
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/slide/widgets/text_edit/TextEdit.gd" type="Script" id=1]
[node name="TextEdit" type="TextEdit" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
focus_mode = 2
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
text = "tool
extends TextEdit
export (Color) var class_color: = Color(0.6, 0.6, 1.0)
export (Color) var member_color: = Color(0.6, 1.0, 0.6)
export (Color) var keyword_color: = Color(1.0, 0.6, 0.6)
export (Color) var quotes_color: = Color(1.0, 1.0, 0.6)
export (String, FILE, \"*.csv\") var keyword_data_path
func _ready() -> void:
add_color_region('\"', '\"', quotes_color)
add_color_region(\"'\", \"'\", quotes_color)
for c in ClassDB.get_class_list():
add_keyword_color(c, class_color)
for m in ClassDB.class_get_property_list(c):
for key in m:
add_keyword_color(key, member_color)
var file: = File.new()
file.open(keyword_data_path, file.READ)
var keywords: = file.get_csv_line()
file.close()
for k in keywords:
add_keyword_color(k, keyword_color)"
readonly = false
highlight_current_line = false
syntax_highlighting = true
show_line_numbers = false
highlight_all_occurrences = false
override_selected_font_color = false
context_menu_enabled = true
smooth_scrolling = false
v_scroll_speed = 80.0
hiding_enabled = 0
wrap_lines = false
caret_block_mode = false
caret_blink = false
caret_blink_speed = 0.65
caret_moving_by_right_click = true
script = ExtResource( 1 )
class_color = Color( 0.6, 0.6, 1, 1 )
member_color = Color( 0.6, 1, 0.6, 1 )
keyword_color = Color( 1, 0.6, 0.6, 1 )
quotes_color = Color( 1, 1, 0.6, 1 )
keyword_data_path = "res://slide/widgets/text_highlight/keywords.csv"
================================================
FILE: godot-3-presentation/src/slide/widgets/text_edit/keywords.json
================================================
{
"list": [
"onready",
"var",
"export",
"if",
"elif",
"else",
"for",
"do",
"while",
"match",
"switch",
"case",
"break",
"continue",
"pass",
"return",
"class",
"extends",
"is",
"self",
"tool",
"signal",
"func",
"static",
"const",
"enum",
"setget",
"breakpoint",
"preload",
"yield",
"assert",
"remote",
"master",
"slave",
"sync",
"Color8",
"ColorN",
"abs",
"acos",
"asin",
"assert",
"atan",
"atan2",
"bytes2var",
"cartesian2polar",
"ceil",
"char",
"clamp",
"convert",
"cos",
"cosh",
"db2linear",
"decials",
"dectime",
"def2rad",
"dict2inst",
"ease",
"expo",
"floor",
"fmod",
"fposmod",
"funcref",
"hash",
"inst2dict",
"instance_from_id",
"inverse_lerp",
"is_inf",
"is_nan",
"len",
"lerp",
"linear2db",
"load",
"log",
"max",
"min",
"nearest_po2",
"parse_json",
"polar2cartesian",
"pow",
"preload",
"print",
"print_stack",
"printerr",
"printraw",
"prints",
"printt",
"rad2def",
"rand_range",
"rand_seed",
"randf",
"randi",
"randomize",
"range",
"range_lerp",
"round",
"seed",
"sign",
"sin",
"sinh",
"sqrt",
"stepify",
"str",
"str2var",
"tan",
"tanh",
"to_json",
"type_exists",
"typeof",
"validate_json",
"var2bytes",
"var2str",
"weakref",
"wrapf",
"wrapi",
"yield"
]
}
================================================
FILE: godot-3-presentation/src/touch_controls/InputEventSwipe.gd
================================================
extends InputEvent
class_name InputEventSwipe
var direction := Vector2.ZERO
================================================
FILE: godot-3-presentation/src/touch_controls/TouchControls.gd
================================================
extends Control
signal slide_change_requested(direction)
enum Directions {PREVIOUS = -1, NEXT = 1}
func _ready() -> void:
for child in get_children():
child.connect("touched", self, "_on_touch_button_touched")
func _on_touch_button_touched(button) -> void:
if button == $TouchButtonLeft:
emit_signal("slide_change_requested", Directions.PREVIOUS)
if button == $TouchButtonRight:
emit_signal("slide_change_requested", Directions.NEXT)
================================================
FILE: godot-3-presentation/src/touch_controls/TouchControls.tscn
================================================
[gd_scene load_steps=4 format=2]
[ext_resource path="res://src/touch_controls/touch_button/TouchButtonRight.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/touch_controls/touch_button/TouchButtonLeft.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/touch_controls/TouchControls.gd" type="Script" id=3]
[node name="TouchControls" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 3 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TouchButtonLeft" parent="." instance=ExtResource( 2 )]
rect_min_size = Vector2( 0, 0 )
focus_mode = 0
[node name="TouchButtonRight" parent="." instance=ExtResource( 1 )]
rect_min_size = Vector2( 0, 0 )
focus_mode = 0
================================================
FILE: godot-3-presentation/src/touch_controls/swipe_detector/SwipeDetector.gd
================================================
extends Node
# Detects swipe gestures and generates InputEventSwipe events
# that are fed back into the engine.
signal swipe_canceled(start_position)
export(float, 1.0, 1.5) var max_diagonal_slope: = 1.3
onready var timer: Timer = $SwipeTimeout
var swipe_start_position: = Vector2()
func _unhandled_input(event: InputEvent) -> void:
if not event is InputEventScreenTouch:
return
if event.pressed:
_start_detection(event.position)
elif not timer.is_stopped():
_end_detection(event.position)
func _start_detection(position: Vector2) -> void:
swipe_start_position = position
timer.start()
func _end_detection(position: Vector2) -> void:
timer.stop()
var direction: Vector2 = (position - swipe_start_position).normalized()
# Swipe angle is too steep
if abs(direction.x) + abs(direction.y) >= max_diagonal_slope:
return
var swipe: = InputEventSwipe.new()
if abs(direction.x) > abs(direction.y):
swipe.direction = Vector2(-sign(direction.x), 0.0)
else:
swipe.direction = Vector2(0.0, -sign(direction.y))
Input.parse_input_event(swipe)
func _on_Timer_timeout() -> void:
emit_signal('swipe_canceled', swipe_start_position)
================================================
FILE: godot-3-presentation/src/touch_controls/swipe_detector/SwipeDetector.tscn
================================================
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/touch_controls/swipe_detector/SwipeDetector.gd" type="Script" id=1]
[node name="SwipeDetector" type="Node"]
script = ExtResource( 1 )
[node name="SwipeTimeout" type="Timer" parent="."]
wait_time = 0.5
one_shot = true
[connection signal="timeout" from="SwipeTimeout" to="." method="_on_Timer_timeout"]
================================================
FILE: godot-3-presentation/src/touch_controls/touch_button/TouchButton.gd
================================================
extends Button
signal touched(button)
onready var tween: = $Tween
const COLOR_TRANSPARENT: = Color("#00ffffff")
const COLOR_OPAQUE: = Color("#ffffffff")
export var transition_duration: = 0.2
func _ready() -> void:
modulate = COLOR_TRANSPARENT
func _on_mouse_entered() -> void:
tween.interpolate_property(self, 'modulate', modulate, COLOR_OPAQUE, transition_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
tween.start()
func _on_mouse_exited() -> void:
tween.interpolate_property(self, 'modulate', modulate, COLOR_TRANSPARENT, transition_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
tween.start()
func _on_pressed() -> void:
emit_signal("touched", self)
get_tree().set_input_as_handled()
================================================
FILE: godot-3-presentation/src/touch_controls/touch_button/TouchButton.tscn
================================================
[gd_scene load_steps=3 format=2]
[ext_resource path="res://src/touch_controls/touch_button/TouchButton.gd" type="Script" id=1]
[ext_resource path="res://src/touch_controls/touch_button/arrow_left.png" type="Texture" id=2]
[node name="TouchButton" type="Button" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 1.0
margin_right = 229.0
rect_min_size = Vector2( 229, 1080 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 2
size_flags_horizontal = 1
size_flags_vertical = 1
toggle_mode = false
enabled_focus_mode = 0
shortcut = null
group = null
icon = ExtResource( 2 )
flat = true
align = 1
script = ExtResource( 1 )
_sections_unfolded = [ "Margin", "Mouse", "Rect" ]
[node name="Tween" type="Tween" parent="." index="0"]
repeat = false
playback_process_mode = 1
playback_speed = 1.0
playback/active = false
playback/repeat = false
playback/speed = 1.0
[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"]
[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"]
[connection signal="pressed" from="." to="." method="_on_pressed"]
================================================
FILE: godot-3-presentation/src/touch_controls/touch_button/TouchButtonLeft.tscn
================================================
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/touch_controls/touch_button/TouchButton.tscn" type="PackedScene" id=1]
[node name="TouchButtonLeft" index="0" instance=ExtResource( 1 )]
================================================
FILE: godot-3-presentation/src/touch_controls/touch_button/TouchButtonRight.tscn
================================================
[gd_scene load_steps=3 format=2]
[ext_resource path="res://src/touch_controls/touch_button/arrow_right.png" type="Texture" id=1]
[ext_resource path="res://src/touch_controls/touch_button/TouchButton.tscn" type="PackedScene" id=2]
[node name="TouchButtonRight" index="0" instance=ExtResource( 2 )]
anchor_left = 1.0
anchor_right = 1.0
margin_left = -229.0
margin_right = 0.0
icon = ExtResource( 1 )
================================================
FILE: godot-3-presentation/src/touch_controls/touch_button/arrow_left.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/arrow_left.png-d1793ee7cdd1d515b853c051ea2a0381.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/touch_controls/touch_button/arrow_left.png"
dest_files=[ "res://.import/arrow_left.png-d1793ee7cdd1d515b853c051ea2a0381.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
================================================
FILE: godot-3-presentation/src/touch_controls/touch_button/arrow_right.png.import
================================================
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/arrow_right.png-7520efba58a9d03958e79652845d288e.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/touch_controls/touch_button/arrow_right.png"
dest_files=[ "res://.import/arrow_right.png-7520efba58a9d03958e79652845d288e.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0