introduction.rst 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. ============
  2. Introduction
  3. ============
  4. What is it?
  5. -----------
  6. Crown is a complete and cross-platform game engine designed for flexibility,
  7. performance, and fast-iterations.
  8. It is not limited to a specific game type or genre; rather, it provides a set of
  9. versatile primitives and tools that can be used to create a broad range of both
  10. 3D and 2D games.
  11. .. image:: shots/level-editor.png
  12. .. note::
  13. Crown is in active development and new features are added and improved all
  14. the time; You can follow the development progress in real-time on `GitHub
  15. <https://github.com/crownengine/crown/issues>`__ and join the discussions on
  16. the `Discord <https://discord.com/invite/CeXVWCT>`__ channel!
  17. License
  18. -------
  19. The games you create with Crown is your sole property. All the data (models,
  20. textures, levels etc.) and code you produce (including data and code that Crown
  21. itself outputs) is free for you to use as you wish. See :doc:`copyright` for an
  22. exhaustive list of the licenses involved.
  23. Supported platforms
  24. -------------------
  25. * Runtime
  26. * Android 7.0+ (ARMv7-a, ARMv8-a)
  27. * HTML5 (Wasm/Emscripten)
  28. * Ubuntu 20.04+ (x86_64)
  29. * Windows 7+ (x86_64)
  30. * Editor
  31. * Ubuntu 20.04+ (or any 64-bit Linux with GTK+ >= 3.24)
  32. * Windows 7+
  33. Design Principles
  34. -----------------
  35. Crown is loosely inspired by the Bitsquid engine and shares with it many of its
  36. design principles:
  37. * Data-driven
  38. All aspects of the game are defined via text-based configuration files,
  39. which are compiled into native, efficient, platform-specific BLOBs before
  40. shipping. These files are human-readable, making them easy to inspect and
  41. compatible with traditional VCS and regular text-based utilities.
  42. * Data-oriented
  43. Data in memory is organized to achieve the maximum performance possible on
  44. every supported platform.
  45. * Hot-reload everything
  46. Every game asset is reloadable at run-time, including code.
  47. * Multi-process Editor/Runtime architecture
  48. The Editor and the Runtime live in separate processes. The Editor helds all
  49. the important data: if the Runtime crashes you can restart it without losing
  50. any work.
  51. * Lightweight Codebase and Runtime
  52. The Runtime (plus tools) consist of fewer than 70K lines of code. Written in
  53. straightforward 'C-style' C++, it is easily understood and extensible by
  54. anyone.
  55. Features
  56. --------
  57. * Cross-platform Editor
  58. * DCC data importers for models, textures, sounds etc.
  59. * Scene Editor with place/move/rotate/scale controls, snapping, selection etc.
  60. * Deployer for Android, HTML5 and desktop platforms.
  61. * Project Browser with thumbnails and multiple view modes.
  62. * Scene Tree and object Inspector.
  63. * Console with Lua REPL.
  64. * Graphics
  65. * High-level 3D & 2D objects (meshes, cameras, lights and sprites).
  66. * Physically-based rendering pipeline.
  67. * Cross-platform GLSL-like shader programming language.
  68. * 3D skeletal animation.
  69. * Animation state machine with events, variables and blending with simple expressions evaluator.
  70. * Immediate-mode GUI API with customizable materials.
  71. * TrueType text rendering via texture atlas.
  72. * Flipbook sprite animation.
  73. * FBX and custom mesh formats.
  74. * DDS, EXR, JPG, KTX, PNG, PVR and TGA texture formats.
  75. * D3D11, GL 3.2 and GLES 2.0 render backends.
  76. * Physics
  77. * Static, dynamic and keyframed rigid bodies with multiple colliders.
  78. * Joints (fixed, spring and hinge).
  79. * Spatial queries: ray-, sphere- and box-casts.
  80. * Triggers.
  81. * Scripting
  82. * Integrated Lua runtime can be used to control every aspect of the game.
  83. * On supported platforms, LuaJIT is used for even higher performances.
  84. * Integrated REPL to quickly test and experiment while the game is running.
  85. * Live reloading of gameplay code without needing to restart the game.
  86. * Debugging
  87. * Integrated profiler and data plotter graph.
  88. * C++ and Lua callstack generation.
  89. * Input
  90. * Unified interface for mice, keyboards, joypads and touchpads.
  91. * Full list of input events for each simulation frame.
  92. * Simplified polling interface for rapid prototyping.
  93. * Audio
  94. * 3D audio sources with position and range-based attenuation.
  95. * Audio streaming.
  96. * Formats: WAV and OGG.
  97. Contact
  98. -------
  99. * Website: https://www.crownengine.org
  100. * Project page: https://github.com/crownengine/crown
  101. Contributors
  102. ------------
  103. In chronological order.
  104. * Daniele Bartolini (`@dbartolini <https://github.com/dbartolini>`_)
  105. * Simone Boscaratto (`@Xed89 <https://github.com/Xed89>`_)
  106. * Michele Rossi (`@mikymod <https://github.com/mikymod>`_)
  107. * Michela Iacchelli - Crown logo v1.
  108. * Raphael de Vasconcelos Nascimento (`@vasconssa <https://github.com/vasconssa>`_)
  109. * Giulia Gazzoli - Crown logo v2.