123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- .. _doc_exporting:
- Exporting
- =========
- Overview
- --------
- Now that you have a working game, you probably want to share your success with
- others. However, it's not practical to ask your friends to download Godot
- just so they can open your project. Instead, you can *export* your project,
- converting it into a "package" that can be run by anyone.
- The way you export your game depends on what platform you are targeting. In
- this tutorial, you'll learn how to export the "Dodge the Creeps" game for a
- variety of platforms. First, however, we need to make some changes to the
- way the game works.
- .. note:: If you haven't made "Dodge the Creeps" yourself yet, please read
- :ref:`doc_your_first_game` before continuing with this tutorial.
- Preparing the project
- ---------------------
- In "Dodge the Creeps" we used keyboard controls to move the player's character.
- This is fine if your game is being played on a PC platform, but on a phone
- or tablet, you need to support touchscreen input. Because a click event can
- be treated the same as a touch event, we'll convert the game to a click-and-move
- input style.
- By default Godot emulates mouse input from touch input. That means if anything
- is coded to happen on a mouse event, touch will trigger it as well. If you wish to
- disable that for whatever reason, or emulate touch from mouse input, you can do that
- in the "Project Settings" under *Input Devices* and *Pointing*
- .. image:: img/export_touchsettings.png
- Before we change the input method, in the project settings go to *Display*,
- then click on *Window*. In the *Stretch* options, set *Mode* to "2d" and *Aspect* to
- "keep". This ensures that the game scales consistently on different sized screens.
- .. image:: img/export_stretchsettings.png
- Next, we need to modify the ``Player.gd`` script to change the input method.
- We'll remove the key inputs and make the player move towards a "target" that's
- set by the touch (or click) event.
- Here is the full script for the player, with comments noting what we've
- changed:
- .. tabs::
- .. code-tab:: gdscript GDScript
- extends Area2D
- signal hit
- export var speed = 400
- var velocity = Vector2()
- var screen_size
- # Add this variable to hold the clicked position.
- var target = Vector2()
- func _ready():
- hide()
- screen_size = get_viewport_rect().size
- func start(pos):
- position = pos
- # Initial target is the start position.
- target = pos
- show()
- $CollisionShape2D.disabled = false
- # Change the target whenever a touch event happens.
- func _input(event):
- if event is InputEventScreenTouch and event.pressed:
- target = event.position
- func _process(delta):
- # Move towards the target and stop when close.
- if position.distance_to(target) > 10:
- velocity = (target - position).normalized() * speed
- else:
- velocity = Vector2()
- # Remove keyboard controls.
- # if Input.is_action_pressed("ui_right"):
- # velocity.x += 1
- # if Input.is_action_pressed("ui_left"):
- # velocity.x -= 1
- # if Input.is_action_pressed("ui_down"):
- # velocity.y += 1
- # if Input.is_action_pressed("ui_up"):
- # velocity.y -= 1
- if velocity.length() > 0:
- velocity = velocity.normalized() * speed
- $AnimatedSprite.play()
- else:
- $AnimatedSprite.stop()
- position += velocity * delta
- # We don't need to clamp the player's position
- # because you can't click outside the screen.
- # position.x = clamp(position.x, 0, screensize.x)
- # position.y = clamp(position.y, 0, screensize.y)
- if velocity.x != 0:
- $AnimatedSprite.animation = "right"
- $AnimatedSprite.flip_v = false
- $AnimatedSprite.flip_h = velocity.x < 0
- elif velocity.y != 0:
- $AnimatedSprite.animation = "up"
- $AnimatedSprite.flip_v = velocity.y > 0
- func _on_Player_body_entered( body ):
- hide()
- emit_signal("hit")
- $CollisionShape2D.set_deferred("disabled", true)
- Export templates
- ----------------
- In order to export, you need to download the *export templates* from the
- http://godotengine.org/download. These templates are optimized versions of the engine
- without the editor pre-compiled for each platform . You can also
- download them in Godot by clicking on *Editor -> Manage Export Templates*:
- .. image:: img/export_template_menu.png
- In the window that appears, you can click "Download" to get the template
- version that matches your version of Godot.
- .. image:: img/export_template_manager.png
- .. note:: If you upgrade Godot, you must download templates that match the new version
- or your exported projects may not work correctly.
- Export presets
- --------------
- Next, you can configure the export settings by clicking on *Project -> Export*:
- .. image:: img/export_presets_window.png
- Create a new export preset by clicking "Add..." and selecting a platform. You
- can make as many presets as you like with different settings.
- At the bottom of the window are two buttons. "Export PCK/ZIP" only creates
- a packed version of your project's data. This doesn't include an executable
- so the project can't be run on its own.
- The second button, "Export Project", creates a complete executable version
- of your game, such as an `.apk` for Android or an `.exe` for Windows.
- In the "Resources" and "Features" tabs, you can customize how the game is
- exported for each platform. We can leave those settings alone for now.
- Exporting by platform
- ---------------------
- In this section, we'll walk through the process for each platform,
- including any additional software or requirements you'll need.
- PC (Linux/macOS/Windows)
- ~~~~~~~~~~~~~~~~~~~~~~~~
- Exporting PC platforms works the same across the three supported operating
- systems. Open the export window and click "Add.." to create the preset(s) you
- want to make. Then click "Export Project" and choose a name and destination
- folder. Choose a location *outside* of your project folder.
- Click "Save" and the engine will build the export files.
- .. note:: When exporting for macOS, if you export on a macOS computer, you'll
- end up with a `.dmg` file, while using Linux or Windows
- produces a `.zip`. In either case, the compressed file contains
- a macOS `.app` that you can double-click and run.
- .. note:: On Windows, if you want your exported executable to have a different
- icon than the default one, you need to change it manually. See:
- :ref:`doc_changing_application_icon_for_windows`.
- Android
- ~~~~~~~
- .. tip:: Mobile devices come with a wide variety of capabilities.
- In most cases, Godot's default settings will work, but mobile
- development is sometimes more art than science, and you may
- need to do some experimenting and searching for help in order
- to get everything working.
- Before you can export your project for Android, you must download the following
- software:
- * Android SDK: https://developer.android.com/studio/
- * Java JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html
- When you run Android Studio for the first time, click on *Configure -> SDK Manager*
- and install "Android SDK Platform Tools". This installs the `adb` command-line
- tool that Godot uses to communicate with your device.
- Next, create a debug keystore by running the following command on your
- system's command line:
- ::
- keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999
- Click on *Editor -> Editor Settings* in Godot and select the *Export/Android*
- section. Here, you need to set the paths to the Android SDK applications on
- your system and the location of the keystore you just created.
- .. image:: img/export_editor_android_settings.png
- Now you're ready to export. Click on *Project -> Export* and add a preset
- for Android (see above).
- Click the "Export Project" button and Godot will build an APK you can download
- on your device. To do this on the command line, use the following:
- ::
- adb install dodge.apk
- .. note:: Your device may need to be in *developer mode*. Consult your
- device's documentation for details.
- If your system supports it, connecting a compatible Android device will cause
- a "One-click Deploy" button to appear in Godot's playtest button area:
- .. image:: img/export_android_oneclick.png
- Clicking this button builds the APK and copies it onto your device in one step.
- iOS
- ~~~
- .. note:: In order to build your game for iOS, you must have a computer running
- macOS with Xcode installed.
- Before exporting, there are some settings that you *must* complete for the project
- to export successfully. First, the "App Store Team Id", which you can find by
- logging in to your Apple developer account and looking in the "Membership" section.
- You must also provide icons and splash screen images as shown below:
- .. image:: img/export_ios_settings.png
- Click "Export Project" and select a destination folder.
- Once you have successfully exported the project, you'll find the following
- folders and files have been created in your selected location:
- .. image:: img/export_xcode_project_folders.png
- You can now open the project in Xcode and build the project for iOS. Xcode
- build procedure is beyond the scope of this tutorial. See
- https://help.apple.com/xcode/mac/current/#/devc8c2a6be1 for
- more information.
- HTML5 (web)
- ~~~~~~~~~~~
- Click "Export Project" on the HTML5 preset. We don't need to change any
- of the default settings.
- When the export is complete, you'll have a folder containing the following
- files:
- .. image:: img/export_web_files.png
- Viewing the `.html` file in your browser lets you play the game. However, you
- can't open the file directly, it needs to be served by a web server. If you don't
- have one set up on your computer, you can use Google to find suggestions for
- your specific OS.
- Point your browser at the URL where you've placed the html file. You may have
- to wait a few moments while the game loads before you see the start screen.
- .. image:: img/export_web_example.png
- The console window beneath the game tells you if anything goes wrong. You can
- disable it by setting "Export With Debug" off when you export the project.
- .. note:: Browser support for WASM is not very widespread. Firefox and Chrome
- both support it, but you may still find some things that don't work.
- Make sure you have updated your browser to the most recent version,
- and report any bugs you find at the `Godot Github repository <https://github.com/godotengine/godot/issues>`_.
|