introduction.rst 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. ============
  2. Introduction
  3. ============
  4. What is it?
  5. -----------
  6. Crown is a general purpose and data-driven game engine, written in `orthodox
  7. <https://gist.github.com/bkaradzic/2e39896bc7d8c34e042b>`__ C++ with a
  8. minimalistic and data-oriented design philosophy in mind.
  9. Crown isn't tied to a particular game type or genre but instead it offers a set
  10. of generic primitives and facilities to help you create a wide gamut of
  11. interactive 2D and 3D products.
  12. Crown also offers a complete cross-platform editor to create and put together
  13. all the elements that make up your game.
  14. Crown is loosely inspired by the Bitsquid engine and many of its design
  15. principles.
  16. Features
  17. --------
  18. Note: Crown is in active development and new features are added and improved all
  19. the time; you can check out the development efforts in real-time on the Crown
  20. Trello `board <https://trello.com/b/h88kbJNm/crown>`__. You can also join our
  21. Discord `channel <https://discord.com/invite/CeXVWCT>`__!
  22. * Data-driven
  23. Every aspect of the game is controlled through text configuration files. Text
  24. files are human-readable for easy inspection and play nicely with traditional
  25. version control systems. Before shipping, configuration files are compiled to
  26. efficient platform-specific binary blobs.
  27. * Data-oriented
  28. Data in memory is organized to achieve the maximum performance possible on
  29. every platform.
  30. * Lightweight codebase and runtime
  31. Engine plus tools amounts to less than 50K LOC. Written in simple 'C-style'
  32. C++. It is easy for anyone to understand and make modifications.
  33. * Editor
  34. * Runs and looks equally well both on Linux and on Windows.
  35. * Source data importers (meshes, sprites, sounds, textures etc.).
  36. * All the editing data is held by the editor which runs in its own process, if the Runtime crashes you can restart it without losing your work.
  37. * TCP/IP communication with Runtime allows editing to be mirrored to remote devices (phones, consoles etc.).
  38. * Hot-reloading of every asset including code.
  39. * Graphics
  40. * High-level 2D and 3D objects: sprites, meshes and lights (directional, omni and spot).
  41. * Cross-plaform GLSL-like shader programming language with data-driven definitions of render states and permutations.
  42. * D3D11, GL 3.2 and GLES 2.0 render backends.
  43. * PNG, TGA, DDS, KTX and PVR texture formats.
  44. * Animation
  45. * Animation state machine with events, variables and blending with simple expressions evaluator.
  46. * Flipbook sprite animation.
  47. * Physics
  48. * Static, dynamic and keyframed rigid bodies, triggers and joints (fixed, spring and hinge).
  49. * Spatial queries: ray-, sphere- and box-casts.
  50. * Multiple collision geometries per rigid body.
  51. * Collision geometry can be generated from mesh data, authored by artists or manually specified.
  52. * Uniform scaling of physics objects.
  53. * Audio
  54. * 3D audio sources with position and range-based attenuation.
  55. * Volume control.
  56. * WAV format supported.
  57. * Scripting
  58. * Integrated Lua runtime can be used to control every aspect of the game.
  59. * LuaJIT is used on supported platforms for maximum performance.
  60. * Integrated REPL to quickly test and experiment while the game is running.
  61. * Live reloading of gameplay code without needing to restart the game.
  62. * Debugging
  63. * Integrated profiler.
  64. * Callstack generation for C++ and Lua.
  65. * Gui
  66. * Immediate-mode GUI with custom materials.
  67. * TrueType text rendering via texture atlas.
  68. * Input
  69. * Unified interface for accessing mice, keyboards, touchpads and joypads.
  70. * Exporters
  71. * Mesh exporter for Blender >= 2.80.
  72. Supported platforms
  73. -------------------
  74. * Runtime
  75. * Android 7.0+ (ARMv7-a, ARMv8-a)
  76. * Ubuntu 12.04+ (x86_64)
  77. * Windows 7, 8, 10 (x86_64)
  78. * Editor
  79. * Any 64-bit Linux distribution with GTK+ 3.16 or newer, 64-bit Ubuntu 16.04.2+ recommended
  80. * 64-bit dual-core CPU or higher
  81. * OpenGL 3.2+ graphics card with 512 MB of RAM, 1 GB recommended
  82. * 4 GB of RAM minimum, 8 GB recommended
  83. * 1280x768 display resolution minimum, 1920x1080 recommended
  84. * Three-button mouse