Version 3 vs 20
Version 3 vs 20
Edits
Edits
- Edit by 0xseantasker, Version 20
- Sep 3 2024 6:52 PM
- Edit by 0xseantasker, Version 3
- Aug 11 2014 11:40 AM
Edit Older Version 3... | Edit Current Version 20... |
Content Changes
Content Changes
Echo 3 is in early development. It is not ready for projects.
=Differences to Echo 2=
Echo 3 is Echo 2 significantly refactored. Most of the base concepts remain the same but:
- Things are now better scoped, we get rid of the E prefix everywhere and use namespaces instead,
- Classes and methods are more well defined,
- There is more consideration to menu management
- Better thread safety, including generic asynchronous work posting to other threads.
- Kernel improvements
- No more singletons
- Reduced complexity
=Additional benefits improvements=
- Automated tests
- Porting test suite, to test that your port adheres to the interface contracts.
Echo 3 systems
- Platform
-- Physical information
--- Display
---- Supports full screen
---- Supports widowed mode
---- Is touch display
--- Vibrate
--- Sensors
---- Gyro
---- Accelerometer
---- GPS
- Data storage
- Sensors
- Networking
- Time
- User input
- Localisation
- Audio
- Graphics
-- Shader driven
-- Fixed pipeline
- Execution environment
-- Minimal
-- Kernel
- Platform game services interface
-- [[https://partner.steamgames.com/|Steam]]
-- [[https://developers.google.com/games/services/|Google Play games]] also [[https://developers.google.com/games/services/ios/quickstart|works with iOS]]
-- [[https://developer.apple.com/game-center/|Apple Game Center]]
{F1300 layout=right, float, size=full, alt="Echo logo"}
**Echo** is a cross-platform C++ framework and game engine for mobile, desktop and consoles. It is free and open source, under the permissive [[https://en.wikipedia.org/wiki/MIT_License|MIT licence]].
The primary goals of Echo are:
- Facilitate experimentation with consistent abstractions for a wide variety of platforms, toolchains and C++ standards, enabling write once core logic.
- Performance is important so abstractions are designed to give target implementations the flexibility to deal with details as needed. In some situations it is possible to pre-process and prepare code and data to optimise for the target.
- Enable a minimum level of graphics support that "echoes" past capabilities. This doesn't mean modern features won't be available (e.g PBR) but those won't necessarily backwards compatible.
- Be modular and easy to port a subset or all functionality to new platforms without too much trouble.
- Provide base functionality to enable software to run on older or unusual hardware. This often sacrifices some C++ standard features in place of platform abstractions to ensure target hardware is capable of running code. If this is not important to your then you can ignore the corresponding Echo implementations of features in place of C++ standards.
Development for Echo is primarily done on a [[https://en.wikipedia.org/wiki/Linux|Linux]] PC, with deployment options for other major platforms, so that is the recommended development setup. [[http://ubuntu.com/|Ubuntu]]-based distributions are recommended. Some users have had success on other distributions though.
Development on Windows can be made easier using [[https://github.com/SeanTasker/edepbuild|edepbuild]] for which there is a PowerShell version available.
See [[projects/echo_3/getting_started/|Getting Started]] with Echo3.
Echo is the origin of [[https://github.com/SeanTasker/edepbuild|edepbuild build script]].
==Echo 3==
Features:
- Platform abstraction
- Configuration handling
- Abstract factory
- File system and data access abstractions
- Virtual File System
- Networking including socket and web-socket support
- Time
- User input
- Sensors
- Audio
- Graphics
- GUIs
- Execution environment
- Physics
- Maths
- Tile maps
- Animation
- Localisation
- UTF8 support
- [[https://github.com/SeanTasker/edepbuild`|A framework for managing dependencies]]
- For each platform officially supported there are numerous tools provided
==Projects==
Echo is the framework that supports the following projects:
- Unnamed high throughput commercial computer vision system
- [[https://www.subbtitle.com/|Subbtitle]]
- [[https://www.emblementertainment.com.au/index.php?p=Multi-Sudoku|Multi-Sudoku]]
- [[https://www.emblementertainment.com.au/index.php?p=Mawashi%20Madness|Mawashi Madness]]
- [[https://www.emblementertainment.com.au/index.php?p=Remote%20Keyboard|Remote Keyboard]] Input method for Android. Including PC Application and Android app
Echo 3 is in early development.{F1300 layout=right, It is not ready for projects.
=Differences to Echo 2=
Echo 3 is Echo 2 significantly refactored.float, Most of the base concepts remain the same but:
- Things are now better scopedsize=full, we get rid of the E prefix everywhere and use namespaces instead,alt="Echo logo"}
- Classes and methods are more well defined,**Echo** is a cross-platform C++ framework and game engine for mobile, desktop and consoles. It is free and open source, under the permissive [[https://en.wikipedia.org/wiki/MIT_License|MIT licence]].
The primary goals of Echo are:
- There is more consideration to menu managementFacilitate experimentation with consistent abstractions for a wide variety of platforms, toolchains and C++ standards, enabling write once core logic.
- Better thread safety,Performance is important so abstractions are designed to give target implementations the flexibility to deal with details as needed. including generic asynchronous work postingIn some situations it is possible to pre-process and prepare code and data to otheptimise for threadse target.
- Kernel improvementsEnable a minimum level of graphics support that "echoes" past capabilities. This doesn't mean modern features won't be available (e.g PBR) but those won't necessarily backwards compatible.
- No more singletons- Be modular and easy to port a subset or all functionality to new platforms without too much trouble.
- Reduced complexityProvide base functionality to enable software to run on older or unusual hardware. This often sacrifices some C++ standard features in place of platform abstractions to ensure target hardware is capable of running code. If this is not important to your then you can ignore the corresponding Echo implementations of features in place of C++ standards.
Development for Echo is primarily done on a [[https://en.wikipedia.org/wiki/Linux|Linux]] PC, with deployment options for other major platforms, so that is the recommended development setup. [[http://ubuntu.com/|Ubuntu]]-based distributions are recommended. Some users have had success on other distributions though.
=Additional benefits improvements=
- Automated tests
- Porting test suite, to test that your port adheres to the interface contractsDevelopment on Windows can be made easier using [[https://github.com/SeanTasker/edepbuild|edepbuild]] for which there is a PowerShell version available.
Echo 3 systemsSee [[projects/echo_3/getting_started/|Getting Started]] with Echo3.
- PlatformEcho is the origin of [[https://github.com/SeanTasker/edepbuild|edepbuild build script]].
==Echo 3==
-- Physical informationFeatures:
--- Display- Platform abstraction
---- Supports full screen- Configuration handling
---- Supports widowed mode- Abstract factory
---- Is touch display- File system and data access abstractions
--- Vibrate- Virtual File System
--- Sensors- Networking including socket and web-socket support
---- Gyro- Time
---- Accelerometer- User input
---- GPS- Sensors
- Data storage- Audio
- Sensors- Graphics
- Networking- GUIs
- Time- Execution environment
- User input- Physics
- Localisation- Maths
- Audio- Tile maps
- Graphics- Animation
-- Shader driven- Localisation
-- Fixed pipeline- UTF8 support
- Execution environment- [[https://github.com/SeanTasker/edepbuild`|A framework for managing dependencies]]
-- Minimal- For each platform officially supported there are numerous tools provided
==Projects==
-- KernelEcho is the framework that supports the following projects:
- Platform game services interface- Unnamed high throughput commercial computer vision system
--- [[https://partner.steamgameswww.subbtitle.com/|Steamubbtitle]]
-- [[https://developers.google.com/games/services/|Google Play games]] also [[https://developers.google.com/games/services/ios/quickstart|works with iOS [[https://www.emblementertainment.com.au/index.php?p=Multi-Sudoku|Multi-Sudoku]]
--- [[https://developer.applewww.emblementertainment.com/game-center/|Apple Game Center.au/index.php?p=Mawashi%20Madness|Mawashi Madness]]
- [[https://www.emblementertainment.com.au/index.php?p=Remote%20Keyboard|Remote Keyboard]] Input method for Android. Including PC Application and Android app