Page MenuHomePhabricator

Getting Started
Updated 855 Days AgoPublic

Please either install or build and install Echo.

Your first project

Now that you have everything installed, create a new project:

  1. Open a command prompt and run the GenerateProject script
$ECHO_ENGINE_INSTALL_DIR/templates/cmake/GenerateProject.sh MyEchoProject EchoApplicationProject destinationFolder

You can run the script without any parameters and it will include a list of available templates.

NOTE: If ECHO_ENGINE_INSTALL_DIR is not set (it does not have to be) and you're not sure where to find Echo, try /opt/echo3 which is the default install location.
  1. The output will display the path to the new project folder and build simple instructions, however the cmake templates also include some helper scripts to config, build, and run the projects for specified platforms. Since Echo is designed to be cross platform we want to make targeting other platforms simple, so we recommend using these steps. To learn how you should configure your IDE you can inspect the scripts (and follow the rabbit hole) to learn the few things that need to be done.
./cmakeplatform linux
./buildplatform linux
  1. To run the project run from the project directory (rather than the build directory). This is because the template references resources relative to the project folder. You can change the configuration however you like though.
./runplatform linux

The Echo Application template has a simple menu and main game state that you can switch between using the on screen buttons. The game state scene is made up of a spinning cube and some lights.

image.png (627×804 px, 325 KB)

Congratulations, you have created, built and run your first Echo project!

What next?

Have a look at the project source code. The source files contain documentation about some Echo fundamentals and details the project Task structure.

Here are some suggestions for moving forward:

  • Familiarise yourself with Scene objects:
    • Modify the scene.
    • Add another SceneEntity to the scene, give it a Sphere mesh (hint: the Mesh class contains some helper methods for generating certain meshes).
  • Familiarise yourself with Cameras, Renderers and Viewports:
    • Modify the Game state to include a third Viewport.
  • Familiarise yourself with GUI scripts:
    • In the resources folder you'll find a folder named Menu that contains various .gui files. These define GUI layouts of images, buttons, text etc. The element types correspond to Echo GUI classes. Play around with the menu elements.
    • Try creating a couple of new buttons to click on in the Game state to speed up or slow down the spinning cube. You will need to create a function to change the speed and set up a new binding to make it available for GUI buttons (see the application file on how to set up bindings, but set the bindings up in Game.cpp using the provided FunctionBinder).
  • Familiarise yourself with Tasks: Create a custom Task to periodically toggle the visibility of the sphere (or, if you didn't create one, the cube).

If you're happy with your progress so far, you can move onto a more advanced project by creating a third person game using the provided project template. The third person game template is a little more complicated that the simple application. It provides examples of:

  • Using a ContextSwitcher to manage application states.
  • How you can get values from a Configuration object,
  • Creating a custom Camera controller task to follow a character
  • How to create and use MappedInputDevices
  • How to create a generic game entity class that has discrete states defined by animations, physics bodies
  • How to create a BulletPhysicsWorld and add PhysicsBody instances to it.
Referenced Files
F4377: image.png
Sep 16 2017, 11:30 AM
F4375: image.png
Sep 16 2017, 11:30 AM
Last Author
0xseantasker
Last Edited
Nov 24 2021, 10:09 AM

Event Timeline

0xseantasker added a project: Restricted Project.
Timotheos edited the content of this document. (Show Details)
Timotheos edited the content of this document. (Show Details)
0xseantasker changed the visibility from "All Users" to "Public (No Login Required)".Mar 6 2019, 4:40 PM
0xseantasker edited the content of this document. (Show Details)