introduction.rst 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. It isn't tied to any specific game type or
  8. genre; instead, it provides versatile tools and general primitives suitable for
  9. building a wide range of 3D and 2D games.
  10. .. image:: shots/level-editor.png
  11. .. note::
  12. Crown is in active development and new features are added and improved all
  13. the time; You can follow the development progress in real-time on `GitHub
  14. <https://github.com/crownengine/crown/issues>`__ and join the discussions on
  15. the `Discord <https://discord.com/invite/CeXVWCT>`__ channel!
  16. License
  17. -------
  18. The games you create with Crown are your sole property. All the data (models,
  19. textures, levels etc.) and code you produce (including any data and code
  20. generated by Crown) are yours to use as you wish. See :doc:`copyright` for a
  21. comprehensive list of applicable licenses.
  22. Supported platforms
  23. -------------------
  24. * Runtime
  25. * Android 7.0+ (ARMv7-a, ARMv8-a)
  26. * HTML5 (Wasm/Emscripten)
  27. * Ubuntu 22.04+ (x86_64)
  28. * Windows 10+ (x86_64)
  29. * Editor
  30. * Ubuntu 22.04+ (or any 64-bit Linux with GTK+ >= 3.24)
  31. * Windows 10+
  32. Design Principles
  33. -----------------
  34. Crown is loosely inspired by the Bitsquid engine and shares with it many of its
  35. design principles:
  36. * Data-driven
  37. All aspects of the game are defined via text-based configuration files,
  38. which are compiled into native, efficient, platform-specific BLOBs before
  39. shipping. These files are human-readable, making them easy to inspect and
  40. compatible with traditional VCS and regular text-based utilities.
  41. * Data-oriented
  42. Data in memory is organized to achieve the maximum performance possible on
  43. every supported platform.
  44. * Hot-reload everything
  45. Every game asset is reloadable at run-time, including code.
  46. * Multi-process Editor/Runtime architecture
  47. The Editor and the Runtime live in separate processes. The Editor helds all
  48. the important data: if the Runtime crashes you can restart it without losing
  49. any work.
  50. * Lightweight Codebase and Runtime
  51. The whole engine (runtime + tools) consists of fewer than 100K lines of
  52. code. Written in high-performance native languages only, it is easily
  53. understood and extensible by anyone.
  54. Features
  55. --------
  56. * Cross-platform Editors
  57. * DCC data importers for models, textures, sprites, sounds, fonts etc.
  58. * Level Editor with place/move/rotate/scale controls, snapping, selection etc.
  59. * Dedicated editors for most resource types (Animation, Unit prefabs, Texture Settings etc.)
  60. * Object Inspector with component-based workflow.
  61. * Project Browser with global searching, multiple view modes, thumbnails etc.
  62. * Deployer for Android, HTML5 and desktop platforms.
  63. * Console with Lua REPL and runtime commands.
  64. * Undo/redo everywhere, light/dark theme, customizable launchers and much, much more...
  65. * Graphics
  66. * D3D11, Vulkan and GLES 3.0 render backends.
  67. * High-level 3D & 2D objects (meshes, cameras, lights and sprites).
  68. * Physically-based rendering pipeline with metallic workflow.
  69. * GLSL-like shader programming language.
  70. * 3D skeletal animation.
  71. * Animation state machine with events, variables and blending with simple expressions evaluator.
  72. * Immediate-mode GUI API with customizable materials.
  73. * TrueType text rendering via texture atlas.
  74. * Flipbook sprite animation.
  75. * FBX and custom mesh formats.
  76. * DDS, EXR, JPG, KTX, PNG, PVR and TGA texture formats.
  77. * Physics
  78. * Static, dynamic and keyframed rigid bodies with multiple colliders.
  79. * Dedicated Mover object for controlling characters.
  80. * Collision begin/stay/end events.
  81. * Triggers with enter/leave events.
  82. * Spatial queries: ray-, sphere- and box-casts.
  83. * Joints (fixed, spring and hinge).
  84. * Audio
  85. * 3D audio sources with position and range-based attenuation.
  86. * Sound groups for bulk volume adjustments.
  87. * Audio streaming.
  88. * Formats: WAV and OGG.
  89. * Scripting
  90. * Integrated Lua runtime can be used to control every aspect of the game.
  91. * On supported platforms, LuaJIT is used for even higher performances.
  92. * Integrated REPL to quickly test and experiment while the game is running.
  93. * Live reloading of gameplay code without needing to restart the game.
  94. * Input
  95. * Unified interface for mice, keyboards, joypads and touchpads.
  96. * Access to sub-frame input events list.
  97. * Simplified polling interface for rapid prototyping.
  98. * Debugging
  99. * Integrated profiler API and data plotter graph.
  100. * C++ and Lua callstack generation.