{"id":13532651,"url":"https://github.com/orx/orx","last_synced_at":"2025-05-14T11:12:25.920Z","repository":{"id":35447668,"uuid":"39714458","full_name":"orx/orx","owner":"orx","description":"ORX: Portable Game Engine","archived":false,"fork":false,"pushed_at":"2025-05-13T01:37:58.000Z","size":106248,"stargazers_count":1553,"open_issues_count":3,"forks_count":108,"subscribers_count":55,"default_branch":"master","last_synced_at":"2025-05-13T02:34:07.134Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://orx-project.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"zlib","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orx.png","metadata":{"files":{"readme":"README.html","changelog":"CHANGELOG","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"iarwain"}},"created_at":"2015-07-26T05:15:23.000Z","updated_at":"2025-05-13T01:38:02.000Z","dependencies_parsed_at":"2023-09-22T17:07:43.338Z","dependency_job_id":"4b4f85f2-be45-44ba-8445-c4a896e7bbd4","html_url":"https://github.com/orx/orx","commit_stats":{"total_commits":6589,"total_committers":33,"mean_commits":"199.66666666666666","dds":0.2265897708301715,"last_synced_commit":"5c84a2b239608d275615562e051d538cffdee69c"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orx%2Forx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orx%2Forx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orx%2Forx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orx%2Forx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orx","download_url":"https://codeload.github.com/orx/orx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254129525,"owners_count":22019628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T07:01:12.604Z","updated_at":"2025-05-14T11:12:20.909Z","avatar_url":"https://github.com/orx.png","language":"C","readme":"\u003c!DOCTYPE html\u003e\u003chtml\u003e\u003chead\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\"\u003e\u003cstyle\u003e@font-face {\n  font-family: octicons-link;\n  src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff');\n}\n\n@media (prefers-color-scheme: dark) {\n  body,\n  [data-theme=\"dark\"] {\n    /*dark*/\n    color-scheme: dark;\n    --color-prettylights-syntax-comment: #8b949e;\n    --color-prettylights-syntax-constant: #79c0ff;\n    --color-prettylights-syntax-entity: #d2a8ff;\n    --color-prettylights-syntax-storage-modifier-import: #c9d1d9;\n    --color-prettylights-syntax-entity-tag: #7ee787;\n    --color-prettylights-syntax-keyword: #ff7b72;\n    --color-prettylights-syntax-string: #a5d6ff;\n    --color-prettylights-syntax-variable: #ffa657;\n    --color-prettylights-syntax-brackethighlighter-unmatched: #f85149;\n    --color-prettylights-syntax-invalid-illegal-text: #f0f6fc;\n    --color-prettylights-syntax-invalid-illegal-bg: #8e1519;\n    --color-prettylights-syntax-carriage-return-text: #f0f6fc;\n    --color-prettylights-syntax-carriage-return-bg: #b62324;\n    --color-prettylights-syntax-string-regexp: #7ee787;\n    --color-prettylights-syntax-markup-list: #f2cc60;\n    --color-prettylights-syntax-markup-heading: #1f6feb;\n    --color-prettylights-syntax-markup-italic: #c9d1d9;\n    --color-prettylights-syntax-markup-bold: #c9d1d9;\n    --color-prettylights-syntax-markup-deleted-text: #ffdcd7;\n    --color-prettylights-syntax-markup-deleted-bg: #67060c;\n    --color-prettylights-syntax-markup-inserted-text: #aff5b4;\n    --color-prettylights-syntax-markup-inserted-bg: #033a16;\n    --color-prettylights-syntax-markup-changed-text: #ffdfb6;\n    --color-prettylights-syntax-markup-changed-bg: #5a1e02;\n    --color-prettylights-syntax-markup-ignored-text: #c9d1d9;\n    --color-prettylights-syntax-markup-ignored-bg: #1158c7;\n    --color-prettylights-syntax-meta-diff-range: #d2a8ff;\n    --color-prettylights-syntax-brackethighlighter-angle: #8b949e;\n    --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n    --color-prettylights-syntax-constant-other-reference-link: #a5d6ff;\n    --color-fg-default: #e6edf3;\n    --color-fg-muted: #848d97;\n    --color-fg-subtle: #6e7681;\n    --color-canvas-default: #0d1117;\n    --color-canvas-subtle: #161b22;\n    --color-border-default: #30363d;\n    --color-border-muted: #21262d;\n    --color-neutral-muted: rgba(110,118,129,0.4);\n    --color-accent-fg: #2f81f7;\n    --color-accent-emphasis: #1f6feb;\n    --color-success-fg: #3fb950;\n    --color-success-emphasis: #238636;\n    --color-attention-fg: #d29922;\n    --color-attention-emphasis: #9e6a03;\n    --color-attention-subtle: rgba(187,128,9,0.15);\n    --color-danger-fg: #f85149;\n    --color-danger-emphasis: #da3633;\n    --color-done-fg: #a371f7;\n    --color-done-emphasis: #8957e5;\n  }\n}\n\n@media (prefers-color-scheme: light) {\n  body,\n  [data-theme=\"light\"] {\n    /*light*/\n    color-scheme: light;\n    --color-prettylights-syntax-comment: #57606a;\n    --color-prettylights-syntax-constant: #0550ae;\n    --color-prettylights-syntax-entity: #6639ba;\n    --color-prettylights-syntax-storage-modifier-import: #24292f;\n    --color-prettylights-syntax-entity-tag: #116329;\n    --color-prettylights-syntax-keyword: #cf222e;\n    --color-prettylights-syntax-string: #0a3069;\n    --color-prettylights-syntax-variable: #953800;\n    --color-prettylights-syntax-brackethighlighter-unmatched: #82071e;\n    --color-prettylights-syntax-invalid-illegal-text: #f6f8fa;\n    --color-prettylights-syntax-invalid-illegal-bg: #82071e;\n    --color-prettylights-syntax-carriage-return-text: #f6f8fa;\n    --color-prettylights-syntax-carriage-return-bg: #cf222e;\n    --color-prettylights-syntax-string-regexp: #116329;\n    --color-prettylights-syntax-markup-list: #3b2300;\n    --color-prettylights-syntax-markup-heading: #0550ae;\n    --color-prettylights-syntax-markup-italic: #24292f;\n    --color-prettylights-syntax-markup-bold: #24292f;\n    --color-prettylights-syntax-markup-deleted-text: #82071e;\n    --color-prettylights-syntax-markup-deleted-bg: #ffebe9;\n    --color-prettylights-syntax-markup-inserted-text: #116329;\n    --color-prettylights-syntax-markup-inserted-bg: #dafbe1;\n    --color-prettylights-syntax-markup-changed-text: #953800;\n    --color-prettylights-syntax-markup-changed-bg: #ffd8b5;\n    --color-prettylights-syntax-markup-ignored-text: #eaeef2;\n    --color-prettylights-syntax-markup-ignored-bg: #0550ae;\n    --color-prettylights-syntax-meta-diff-range: #8250df;\n    --color-prettylights-syntax-brackethighlighter-angle: #57606a;\n    --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n    --color-prettylights-syntax-constant-other-reference-link: #0a3069;\n    --color-fg-default: #1F2328;\n    --color-fg-muted: #656d76;\n    --color-fg-subtle: #6e7781;\n    --color-canvas-default: #ffffff;\n    --color-canvas-subtle: #f6f8fa;\n    --color-border-default: #d0d7de;\n    --color-border-muted: hsla(210,18%,87%,1);\n    --color-neutral-muted: rgba(175,184,193,0.2);\n    --color-accent-fg: #0969da;\n    --color-accent-emphasis: #0969da;\n    --color-success-fg: #1a7f37;\n    --color-success-emphasis: #1f883d;\n    --color-attention-fg: #9a6700;\n    --color-attention-emphasis: #9a6700;\n    --color-attention-subtle: #fff8c5;\n    --color-danger-fg: #d1242f;\n    --color-danger-emphasis: #cf222e;\n    --color-done-fg: #8250df;\n    --color-done-emphasis: #8250df;\n  }\n}\n\nbody {\n    width: 980px;\n    margin-right: auto;\n    margin-left: auto;\n    background-color: var(--color-canvas-default);\n}\n\n.markdown-body .octicon-link:before {\n  font: normal normal normal 16px/1 octicons-link;\n  display: inline-block;\n  text-decoration: none;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  content: '\\f05c';\n  vertical-align: middle;\n}\n\n.markdown-body {\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n  margin: 0;\n  color: var(--color-fg-default);\n  background-color: var(--color-canvas-default);\n  font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Noto Sans\",Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\";\n  font-size: 16px;\n  line-height: 1.5;\n  word-wrap: break-word;\n}\n\n.markdown-body .octicon {\n  display: inline-block;\n  fill: currentColor;\n  vertical-align: text-bottom;\n}\n\n.markdown-body h1:hover .anchor .octicon-link:before,\n.markdown-body h2:hover .anchor .octicon-link:before,\n.markdown-body h3:hover .anchor .octicon-link:before,\n.markdown-body h4:hover .anchor .octicon-link:before,\n.markdown-body h5:hover .anchor .octicon-link:before,\n.markdown-body h6:hover .anchor .octicon-link:before {\n  width: 16px;\n  height: 16px;\n  content: ' ';\n  display: inline-block;\n  background-color: currentColor;\n  -webkit-mask-image: url(\"data:image/svg+xml,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'\u003e\u003cpath fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'\u003e\u003c/path\u003e\u003c/svg\u003e\");\n  mask-image: url(\"data:image/svg+xml,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'\u003e\u003cpath fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'\u003e\u003c/path\u003e\u003c/svg\u003e\");\n}\n\n.markdown-body details,\n.markdown-body figcaption,\n.markdown-body figure {\n  display: block;\n}\n\n.markdown-body summary {\n  display: list-item;\n}\n\n.markdown-body [hidden] {\n  display: none !important;\n}\n\n.markdown-body a {\n  background-color: transparent;\n  color: var(--color-accent-fg);\n  text-decoration: none;\n}\n\n.markdown-body abbr[title] {\n  border-bottom: none;\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n}\n\n.markdown-body b,\n.markdown-body strong {\n  font-weight: var(--base-text-weight-semibold, 600);\n}\n\n.markdown-body dfn {\n  font-style: italic;\n}\n\n.markdown-body h1 {\n  margin: .67em 0;\n  font-weight: var(--base-text-weight-semibold, 600);\n  padding-bottom: .3em;\n  font-size: 2em;\n  border-bottom: 1px solid var(--color-border-muted);\n}\n\n.markdown-body mark {\n  background-color: var(--color-attention-subtle);\n  color: var(--color-fg-default);\n}\n\n.markdown-body small {\n  font-size: 90%;\n}\n\n.markdown-body sub,\n.markdown-body sup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\n.markdown-body sub {\n  bottom: -0.25em;\n}\n\n.markdown-body sup {\n  top: -0.5em;\n}\n\n.markdown-body img {\n  border-style: none;\n  max-width: 100%;\n  box-sizing: content-box;\n  background-color: var(--color-canvas-default);\n}\n\n.markdown-body code,\n.markdown-body kbd,\n.markdown-body pre,\n.markdown-body samp {\n  font-family: monospace;\n  font-size: 1em;\n}\n\n.markdown-body figure {\n  margin: 1em 40px;\n}\n\n.markdown-body hr {\n  box-sizing: content-box;\n  overflow: hidden;\n  background: transparent;\n  border-bottom: 1px solid var(--color-border-muted);\n  height: .25em;\n  padding: 0;\n  margin: 24px 0;\n  background-color: var(--color-border-default);\n  border: 0;\n}\n\n.markdown-body input {\n  font: inherit;\n  margin: 0;\n  overflow: visible;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n.markdown-body [type=button],\n.markdown-body [type=reset],\n.markdown-body [type=submit] {\n  -webkit-appearance: button;\n  appearance: button;\n}\n\n.markdown-body [type=checkbox],\n.markdown-body [type=radio] {\n  box-sizing: border-box;\n  padding: 0;\n}\n\n.markdown-body [type=number]::-webkit-inner-spin-button,\n.markdown-body [type=number]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n.markdown-body [type=search]::-webkit-search-cancel-button,\n.markdown-body [type=search]::-webkit-search-decoration {\n  -webkit-appearance: none;\n  appearance: none;\n}\n\n.markdown-body ::-webkit-input-placeholder {\n  color: inherit;\n  opacity: .54;\n}\n\n.markdown-body ::-webkit-file-upload-button {\n  -webkit-appearance: button;\n  appearance: button;\n  font: inherit;\n}\n\n.markdown-body a:hover {\n  text-decoration: underline;\n}\n\n.markdown-body ::placeholder {\n  color: var(--color-fg-subtle);\n  opacity: 1;\n}\n\n.markdown-body hr::before {\n  display: table;\n  content: \"\";\n}\n\n.markdown-body hr::after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n\n.markdown-body table {\n  border-spacing: 0;\n  border-collapse: collapse;\n  display: block;\n  width: max-content;\n  max-width: 100%;\n  overflow: auto;\n}\n\n.markdown-body td,\n.markdown-body th {\n  padding: 0;\n}\n\n.markdown-body details summary {\n  cursor: pointer;\n}\n\n.markdown-body details:not([open])\u003e*:not(summary) {\n  display: none !important;\n}\n\n.markdown-body a:focus,\n.markdown-body [role=button]:focus,\n.markdown-body input[type=radio]:focus,\n.markdown-body input[type=checkbox]:focus {\n  outline: 2px solid var(--color-accent-fg);\n  outline-offset: -2px;\n  box-shadow: none;\n}\n\n.markdown-body a:focus:not(:focus-visible),\n.markdown-body [role=button]:focus:not(:focus-visible),\n.markdown-body input[type=radio]:focus:not(:focus-visible),\n.markdown-body input[type=checkbox]:focus:not(:focus-visible) {\n  outline: solid 1px transparent;\n}\n\n.markdown-body a:focus-visible,\n.markdown-body [role=button]:focus-visible,\n.markdown-body input[type=radio]:focus-visible,\n.markdown-body input[type=checkbox]:focus-visible {\n  outline: 2px solid var(--color-accent-fg);\n  outline-offset: -2px;\n  box-shadow: none;\n}\n\n.markdown-body a:not([class]):focus,\n.markdown-body a:not([class]):focus-visible,\n.markdown-body input[type=radio]:focus,\n.markdown-body input[type=radio]:focus-visible,\n.markdown-body input[type=checkbox]:focus,\n.markdown-body input[type=checkbox]:focus-visible {\n  outline-offset: 0;\n}\n\n.markdown-body kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;\n  line-height: 10px;\n  color: var(--color-fg-default);\n  vertical-align: middle;\n  background-color: var(--color-canvas-subtle);\n  border: solid 1px var(--color-neutral-muted);\n  border-bottom-color: var(--color-neutral-muted);\n  border-radius: 6px;\n  box-shadow: inset 0 -1px 0 var(--color-neutral-muted);\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  margin-top: 24px;\n  margin-bottom: 16px;\n  font-weight: var(--base-text-weight-semibold, 600);\n  line-height: 1.25;\n}\n\n.markdown-body h2 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  padding-bottom: .3em;\n  font-size: 1.5em;\n  border-bottom: 1px solid var(--color-border-muted);\n}\n\n.markdown-body h3 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  font-size: 1.25em;\n}\n\n.markdown-body h4 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  font-size: 1em;\n}\n\n.markdown-body h5 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  font-size: .875em;\n}\n\n.markdown-body h6 {\n  font-weight: var(--base-text-weight-semibold, 600);\n  font-size: .85em;\n  color: var(--color-fg-muted);\n}\n\n.markdown-body p {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\n\n.markdown-body blockquote {\n  margin: 0;\n  padding: 0 1em;\n  color: var(--color-fg-muted);\n  border-left: .25em solid var(--color-border-default);\n}\n\n.markdown-body ul,\n.markdown-body ol {\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-left: 2em;\n}\n\n.markdown-body ol ol,\n.markdown-body ul ol {\n  list-style-type: lower-roman;\n}\n\n.markdown-body ul ul ol,\n.markdown-body ul ol ol,\n.markdown-body ol ul ol,\n.markdown-body ol ol ol {\n  list-style-type: lower-alpha;\n}\n\n.markdown-body dd {\n  margin-left: 0;\n}\n\n.markdown-body tt,\n.markdown-body code,\n.markdown-body samp {\n  font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;\n  font-size: 12px;\n}\n\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;\n  font-size: 12px;\n  word-wrap: normal;\n}\n\n.markdown-body .octicon {\n  display: inline-block;\n  overflow: visible !important;\n  vertical-align: text-bottom;\n  fill: currentColor;\n}\n\n.markdown-body input::-webkit-outer-spin-button,\n.markdown-body input::-webkit-inner-spin-button {\n  margin: 0;\n  -webkit-appearance: none;\n  appearance: none;\n}\n\n.markdown-body .mr-2 {\n  margin-right: var(--base-size-8, 8px) !important;\n}\n\n.markdown-body::before {\n  display: table;\n  content: \"\";\n}\n\n.markdown-body::after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n\n.markdown-body\u003e*:first-child {\n  margin-top: 0 !important;\n}\n\n.markdown-body\u003e*:last-child {\n  margin-bottom: 0 !important;\n}\n\n.markdown-body a:not([href]) {\n  color: inherit;\n  text-decoration: none;\n}\n\n.markdown-body .absent {\n  color: var(--color-danger-fg);\n}\n\n.markdown-body .anchor {\n  float: left;\n  padding-right: 4px;\n  margin-left: -20px;\n  line-height: 1;\n}\n\n.markdown-body .anchor:focus {\n  outline: none;\n}\n\n.markdown-body p,\n.markdown-body blockquote,\n.markdown-body ul,\n.markdown-body ol,\n.markdown-body dl,\n.markdown-body table,\n.markdown-body pre,\n.markdown-body details {\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n\n.markdown-body blockquote\u003e:first-child {\n  margin-top: 0;\n}\n\n.markdown-body blockquote\u003e:last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body h1 .octicon-link,\n.markdown-body h2 .octicon-link,\n.markdown-body h3 .octicon-link,\n.markdown-body h4 .octicon-link,\n.markdown-body h5 .octicon-link,\n.markdown-body h6 .octicon-link {\n  color: var(--color-fg-default);\n  vertical-align: middle;\n  visibility: hidden;\n}\n\n.markdown-body h1:hover .anchor,\n.markdown-body h2:hover .anchor,\n.markdown-body h3:hover .anchor,\n.markdown-body h4:hover .anchor,\n.markdown-body h5:hover .anchor,\n.markdown-body h6:hover .anchor {\n  text-decoration: none;\n}\n\n.markdown-body h1:hover .anchor .octicon-link,\n.markdown-body h2:hover .anchor .octicon-link,\n.markdown-body h3:hover .anchor .octicon-link,\n.markdown-body h4:hover .anchor .octicon-link,\n.markdown-body h5:hover .anchor .octicon-link,\n.markdown-body h6:hover .anchor .octicon-link {\n  visibility: visible;\n}\n\n.markdown-body h1 tt,\n.markdown-body h1 code,\n.markdown-body h2 tt,\n.markdown-body h2 code,\n.markdown-body h3 tt,\n.markdown-body h3 code,\n.markdown-body h4 tt,\n.markdown-body h4 code,\n.markdown-body h5 tt,\n.markdown-body h5 code,\n.markdown-body h6 tt,\n.markdown-body h6 code {\n  padding: 0 .2em;\n  font-size: inherit;\n}\n\n.markdown-body summary h1,\n.markdown-body summary h2,\n.markdown-body summary h3,\n.markdown-body summary h4,\n.markdown-body summary h5,\n.markdown-body summary h6 {\n  display: inline-block;\n}\n\n.markdown-body summary h1 .anchor,\n.markdown-body summary h2 .anchor,\n.markdown-body summary h3 .anchor,\n.markdown-body summary h4 .anchor,\n.markdown-body summary h5 .anchor,\n.markdown-body summary h6 .anchor {\n  margin-left: -40px;\n}\n\n.markdown-body summary h1,\n.markdown-body summary h2 {\n  padding-bottom: 0;\n  border-bottom: 0;\n}\n\n.markdown-body ul.no-list,\n.markdown-body ol.no-list {\n  padding: 0;\n  list-style-type: none;\n}\n\n.markdown-body ol[type=\"a s\"] {\n  list-style-type: lower-alpha;\n}\n\n.markdown-body ol[type=\"A s\"] {\n  list-style-type: upper-alpha;\n}\n\n.markdown-body ol[type=\"i s\"] {\n  list-style-type: lower-roman;\n}\n\n.markdown-body ol[type=\"I s\"] {\n  list-style-type: upper-roman;\n}\n\n.markdown-body ol[type=\"1\"] {\n  list-style-type: decimal;\n}\n\n.markdown-body div\u003eol:not([type]) {\n  list-style-type: decimal;\n}\n\n.markdown-body ul ul,\n.markdown-body ul ol,\n.markdown-body ol ol,\n.markdown-body ol ul {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body li\u003ep {\n  margin-top: 16px;\n}\n\n.markdown-body li+li {\n  margin-top: .25em;\n}\n\n.markdown-body dl {\n  padding: 0;\n}\n\n.markdown-body dl dt {\n  padding: 0;\n  margin-top: 16px;\n  font-size: 1em;\n  font-style: italic;\n  font-weight: var(--base-text-weight-semibold, 600);\n}\n\n.markdown-body dl dd {\n  padding: 0 16px;\n  margin-bottom: 16px;\n}\n\n.markdown-body table th {\n  font-weight: var(--base-text-weight-semibold, 600);\n}\n\n.markdown-body table th,\n.markdown-body table td {\n  padding: 6px 13px;\n  border: 1px solid var(--color-border-default);\n}\n\n.markdown-body table td\u003e:last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body table tr {\n  background-color: var(--color-canvas-default);\n  border-top: 1px solid var(--color-border-muted);\n}\n\n.markdown-body table tr:nth-child(2n) {\n  background-color: var(--color-canvas-subtle);\n}\n\n.markdown-body table img {\n  background-color: transparent;\n}\n\n.markdown-body img[align=right] {\n  padding-left: 20px;\n}\n\n.markdown-body img[align=left] {\n  padding-right: 20px;\n}\n\n.markdown-body .emoji {\n  max-width: none;\n  vertical-align: text-top;\n  background-color: transparent;\n}\n\n.markdown-body span.frame {\n  display: block;\n  overflow: hidden;\n}\n\n.markdown-body span.frame\u003espan {\n  display: block;\n  float: left;\n  width: auto;\n  padding: 7px;\n  margin: 13px 0 0;\n  overflow: hidden;\n  border: 1px solid var(--color-border-default);\n}\n\n.markdown-body span.frame span img {\n  display: block;\n  float: left;\n}\n\n.markdown-body span.frame span span {\n  display: block;\n  padding: 5px 0 0;\n  clear: both;\n  color: var(--color-fg-default);\n}\n\n.markdown-body span.align-center {\n  display: block;\n  overflow: hidden;\n  clear: both;\n}\n\n.markdown-body span.align-center\u003espan {\n  display: block;\n  margin: 13px auto 0;\n  overflow: hidden;\n  text-align: center;\n}\n\n.markdown-body span.align-center span img {\n  margin: 0 auto;\n  text-align: center;\n}\n\n.markdown-body span.align-right {\n  display: block;\n  overflow: hidden;\n  clear: both;\n}\n\n.markdown-body span.align-right\u003espan {\n  display: block;\n  margin: 13px 0 0;\n  overflow: hidden;\n  text-align: right;\n}\n\n.markdown-body span.align-right span img {\n  margin: 0;\n  text-align: right;\n}\n\n.markdown-body span.float-left {\n  display: block;\n  float: left;\n  margin-right: 13px;\n  overflow: hidden;\n}\n\n.markdown-body span.float-left span {\n  margin: 13px 0 0;\n}\n\n.markdown-body span.float-right {\n  display: block;\n  float: right;\n  margin-left: 13px;\n  overflow: hidden;\n}\n\n.markdown-body span.float-right\u003espan {\n  display: block;\n  margin: 13px auto 0;\n  overflow: hidden;\n  text-align: right;\n}\n\n.markdown-body code,\n.markdown-body tt {\n  padding: .2em .4em;\n  margin: 0;\n  font-size: 85%;\n  white-space: break-spaces;\n  background-color: var(--color-neutral-muted);\n  border-radius: 6px;\n}\n\n.markdown-body code br,\n.markdown-body tt br {\n  display: none;\n}\n\n.markdown-body del code {\n  text-decoration: inherit;\n}\n\n.markdown-body samp {\n  font-size: 85%;\n}\n\n.markdown-body pre code {\n  font-size: 100%;\n}\n\n.markdown-body pre\u003ecode {\n  padding: 0;\n  margin: 0;\n  word-break: normal;\n  white-space: pre;\n  background: transparent;\n  border: 0;\n}\n\n.markdown-body .highlight {\n  margin-bottom: 16px;\n}\n\n.markdown-body .highlight pre {\n  margin-bottom: 0;\n  word-break: normal;\n}\n\n.markdown-body .highlight pre,\n.markdown-body pre {\n  padding: 16px;\n  overflow: auto;\n  font-size: 85%;\n  line-height: 1.45;\n  color: var(--color-fg-default);\n  background-color: var(--color-canvas-subtle);\n  border-radius: 6px;\n}\n\n.markdown-body pre code,\n.markdown-body pre tt {\n  display: inline;\n  max-width: auto;\n  padding: 0;\n  margin: 0;\n  overflow: visible;\n  line-height: inherit;\n  word-wrap: normal;\n  background-color: transparent;\n  border: 0;\n}\n\n.markdown-body .csv-data td,\n.markdown-body .csv-data th {\n  padding: 5px;\n  overflow: hidden;\n  font-size: 12px;\n  line-height: 1;\n  text-align: left;\n  white-space: nowrap;\n}\n\n.markdown-body .csv-data .blob-num {\n  padding: 10px 8px 9px;\n  text-align: right;\n  background: var(--color-canvas-default);\n  border: 0;\n}\n\n.markdown-body .csv-data tr {\n  border-top: 0;\n}\n\n.markdown-body .csv-data th {\n  font-weight: var(--base-text-weight-semibold, 600);\n  background: var(--color-canvas-subtle);\n  border-top: 0;\n}\n\n.markdown-body [data-footnote-ref]::before {\n  content: \"[\";\n}\n\n.markdown-body [data-footnote-ref]::after {\n  content: \"]\";\n}\n\n.markdown-body .footnotes {\n  font-size: 12px;\n  color: var(--color-fg-muted);\n  border-top: 1px solid var(--color-border-default);\n}\n\n.markdown-body .footnotes ol {\n  padding-left: 16px;\n}\n\n.markdown-body .footnotes ol ul {\n  display: inline-block;\n  padding-left: 16px;\n  margin-top: 16px;\n}\n\n.markdown-body .footnotes li {\n  position: relative;\n}\n\n.markdown-body .footnotes li:target::before {\n  position: absolute;\n  top: -8px;\n  right: -8px;\n  bottom: -8px;\n  left: -24px;\n  pointer-events: none;\n  content: \"\";\n  border: 2px solid var(--color-accent-emphasis);\n  border-radius: 6px;\n}\n\n.markdown-body .footnotes li:target {\n  color: var(--color-fg-default);\n}\n\n.markdown-body .footnotes .data-footnote-backref g-emoji {\n  font-family: monospace;\n}\n\n.markdown-body .pl-c {\n  color: var(--color-prettylights-syntax-comment);\n}\n\n.markdown-body .pl-c1,\n.markdown-body .pl-s .pl-v {\n  color: var(--color-prettylights-syntax-constant);\n}\n\n.markdown-body .pl-e,\n.markdown-body .pl-en {\n  color: var(--color-prettylights-syntax-entity);\n}\n\n.markdown-body .pl-smi,\n.markdown-body .pl-s .pl-s1 {\n  color: var(--color-prettylights-syntax-storage-modifier-import);\n}\n\n.markdown-body .pl-ent {\n  color: var(--color-prettylights-syntax-entity-tag);\n}\n\n.markdown-body .pl-k {\n  color: var(--color-prettylights-syntax-keyword);\n}\n\n.markdown-body .pl-s,\n.markdown-body .pl-pds,\n.markdown-body .pl-s .pl-pse .pl-s1,\n.markdown-body .pl-sr,\n.markdown-body .pl-sr .pl-cce,\n.markdown-body .pl-sr .pl-sre,\n.markdown-body .pl-sr .pl-sra {\n  color: var(--color-prettylights-syntax-string);\n}\n\n.markdown-body .pl-v,\n.markdown-body .pl-smw {\n  color: var(--color-prettylights-syntax-variable);\n}\n\n.markdown-body .pl-bu {\n  color: var(--color-prettylights-syntax-brackethighlighter-unmatched);\n}\n\n.markdown-body .pl-ii {\n  color: var(--color-prettylights-syntax-invalid-illegal-text);\n  background-color: var(--color-prettylights-syntax-invalid-illegal-bg);\n}\n\n.markdown-body .pl-c2 {\n  color: var(--color-prettylights-syntax-carriage-return-text);\n  background-color: var(--color-prettylights-syntax-carriage-return-bg);\n}\n\n.markdown-body .pl-sr .pl-cce {\n  font-weight: bold;\n  color: var(--color-prettylights-syntax-string-regexp);\n}\n\n.markdown-body .pl-ml {\n  color: var(--color-prettylights-syntax-markup-list);\n}\n\n.markdown-body .pl-mh,\n.markdown-body .pl-mh .pl-en,\n.markdown-body .pl-ms {\n  font-weight: bold;\n  color: var(--color-prettylights-syntax-markup-heading);\n}\n\n.markdown-body .pl-mi {\n  font-style: italic;\n  color: var(--color-prettylights-syntax-markup-italic);\n}\n\n.markdown-body .pl-mb {\n  font-weight: bold;\n  color: var(--color-prettylights-syntax-markup-bold);\n}\n\n.markdown-body .pl-md {\n  color: var(--color-prettylights-syntax-markup-deleted-text);\n  background-color: var(--color-prettylights-syntax-markup-deleted-bg);\n}\n\n.markdown-body .pl-mi1 {\n  color: var(--color-prettylights-syntax-markup-inserted-text);\n  background-color: var(--color-prettylights-syntax-markup-inserted-bg);\n}\n\n.markdown-body .pl-mc {\n  color: var(--color-prettylights-syntax-markup-changed-text);\n  background-color: var(--color-prettylights-syntax-markup-changed-bg);\n}\n\n.markdown-body .pl-mi2 {\n  color: var(--color-prettylights-syntax-markup-ignored-text);\n  background-color: var(--color-prettylights-syntax-markup-ignored-bg);\n}\n\n.markdown-body .pl-mdr {\n  font-weight: bold;\n  color: var(--color-prettylights-syntax-meta-diff-range);\n}\n\n.markdown-body .pl-ba {\n  color: var(--color-prettylights-syntax-brackethighlighter-angle);\n}\n\n.markdown-body .pl-sg {\n  color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);\n}\n\n.markdown-body .pl-corl {\n  text-decoration: underline;\n  color: var(--color-prettylights-syntax-constant-other-reference-link);\n}\n\n.markdown-body g-emoji {\n  display: inline-block;\n  min-width: 1ch;\n  font-family: \"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";\n  font-size: 1em;\n  font-style: normal !important;\n  font-weight: var(--base-text-weight-normal, 400);\n  line-height: 1;\n  vertical-align: -0.075em;\n}\n\n.markdown-body g-emoji img {\n  width: 1em;\n  height: 1em;\n}\n\n.markdown-body .task-list-item {\n  list-style-type: none;\n}\n\n.markdown-body .task-list-item label {\n  font-weight: var(--base-text-weight-normal, 400);\n}\n\n.markdown-body .task-list-item.enabled label {\n  cursor: pointer;\n}\n\n.markdown-body .task-list-item+.task-list-item {\n  margin-top: 4px;\n}\n\n.markdown-body .task-list-item .handle {\n  display: none;\n}\n\n.markdown-body .task-list-item-checkbox {\n  margin: 0 .2em .25em -1.4em;\n  vertical-align: middle;\n}\n\n.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox {\n  margin: 0 -1.6em .25em .2em;\n}\n\n.markdown-body .contains-task-list {\n  position: relative;\n}\n\n.markdown-body .contains-task-list:hover .task-list-item-convert-container,\n.markdown-body .contains-task-list:focus-within .task-list-item-convert-container {\n  display: block;\n  width: auto;\n  height: 24px;\n  overflow: visible;\n  clip: auto;\n}\n\n.markdown-body ::-webkit-calendar-picker-indicator {\n  filter: invert(50%);\n}\n\n.markdown-body .markdown-alert {\n  padding: var(--base-size-8, 8px) var(--base-size-16, 16px);\n  margin-bottom: 16px;\n  color: inherit;\n  border-left: .25em solid var(--color-border-default);\n}\n\n.markdown-body .markdown-alert\u003e:first-child {\n  margin-top: 0;\n}\n\n.markdown-body .markdown-alert\u003e:last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body .markdown-alert .markdown-alert-title {\n  display: flex;\n  font-weight: var(--base-text-weight-medium, 500);\n  align-items: center;\n  line-height: 1;\n}\n\n.markdown-body .markdown-alert.markdown-alert-note {\n  border-left-color: var(--color-accent-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title {\n  color: var(--color-accent-fg);\n}\n\n.markdown-body .markdown-alert.markdown-alert-important {\n  border-left-color: var(--color-done-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title {\n  color: var(--color-done-fg);\n}\n\n.markdown-body .markdown-alert.markdown-alert-warning {\n  border-left-color: var(--color-attention-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title {\n  color: var(--color-attention-fg);\n}\n\n.markdown-body .markdown-alert.markdown-alert-tip {\n  border-left-color: var(--color-success-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title {\n  color: var(--color-success-fg);\n}\n\n.markdown-body .markdown-alert.markdown-alert-caution {\n  border-left-color: var(--color-danger-emphasis);\n}\n\n.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title {\n  color: var(--color-danger-fg);\n}\n\u003c/style\u003e\u003ctitle\u003eREADME\u003c/title\u003e\u003c/head\u003e\u003cbody\u003e\u003carticle class=\"markdown-body\"\u003e\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://orx-project.org\" rel=\"nofollow\"\u003e\u003cimg src=\"/C:/workspace/orx/logo.png\" alt=\"Orx Engine\" width=\"400\" height=\"auto\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003cbr\u003e\n    \u003cstrong\u003eA (HEAVILY) DATA-DRIVEN 2D GAME ENGINE\u003c/strong\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"/C:/workspace/orx/LICENSE\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/04f70e81985b272b0090b51a9adc1645492fea066eb78716351e8d5ac11fe3c2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f72782f6f7278\" alt=\"license\" data-canonical-src=\"https://img.shields.io/github/license/orx/orx\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/orx/orx/graphs/commit-activity\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/4490137441d1f8c2c895eb3d35a9fc527838c42e42e84358dd5b57721946992c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f742f6f72782f6f72782f6d6173746572\" alt=\"total-commit-activity\" data-canonical-src=\"https://img.shields.io/github/commit-activity/t/orx/orx/master\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/orx/orx\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/65af09547930ead61ab3f07daf20467e537e7d665175e6c8f4d48e017747f0a8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6f72782f6f7278\" alt=\"stars\" data-canonical-src=\"https://img.shields.io/github/stars/orx/orx\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/orx/orx/forks\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/51c0ac6b0d1e4462c56c3e813763d89c39f5d4b79c37348d4b4bcf62beec3d59/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6f72782f6f7278\" alt=\"forks\" data-canonical-src=\"https://img.shields.io/github/forks/orx/orx\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://orx-project.org/discord\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/a13c7499ccd751816ed1451320c87ae01e67869ae402012b739cf8ed2f47f486/68747470733a2f2f646973636f72646170702e636f6d2f6170692f6775696c64732f3532323136373733363832333138353431382f7769646765742e706e673f7374796c653d736869656c64\" alt=\"discord\" data-canonical-src=\"https://discordapp.com/api/guilds/522167736823185418/widget.png?style=shield\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://orx-project.org\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/8a4af2e34c57dde5f954dca6e40b51223dfa01dba5a49670ef1b7965474147d0/68747470733a2f2f696d672e736869656c64732e696f2f776562736974653f75726c3d68747470732533412532462532466f72782d70726f6a6563742e6f7267\" alt=\"site\" data-canonical-src=\"https://img.shields.io/website?url=https%3A%2F%2Forx-project.org\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://wiki.orx-project.org\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/38124bd081453633b8d3500c2194ed1bcbdc183143019827e3197b30d589579e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d732d77696e646f77732532302537432532306c696e75782532302537432532306d61632532302537432532307765622f68746d6c35253230253743253230616e64726f6964253230253743253230696f732d726564\" alt=\"platforms\" data-canonical-src=\"https://img.shields.io/badge/platforms-windows%20%7C%20linux%20%7C%20mac%20%7C%20web/html5%20%7C%20android%20%7C%20ios-red\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/orx/orx/releases\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/ab9053b92c4edff02ed5a3467a714ae400ccffc26a6aa42dfb011ad2d6ce142a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6f72782f6f72783f636f6c6f723d6f72616e6765\" alt=\"releases\" data-canonical-src=\"https://img.shields.io/github/v/release/orx/orx?color=orange\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/orx/orx/actions/workflows/main.yml\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/2944001c8ceaff06c24d4b0809288dba6f39a07915c0eb5bda5f00e7519bb7de/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6f72782f6f72782f6d61696e2e796d6c\" alt=\"build-travis\" data-canonical-src=\"https://img.shields.io/github/actions/workflow/status/orx/orx/main.yml\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://ci.appveyor.com/project/iarwain/orx\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/1cc7f48320f09b7e2c577e9d20c3b2b9c17fffd4a16931ce3c02aad4244d7478/68747470733a2f2f63692e6170707665796f722e636f6d2f6170692f70726f6a656374732f7374617475732f616c776d34696c377831773667316f343f7376673d74727565\" alt=\"build-appveyor\" data-canonical-src=\"https://ci.appveyor.com/api/projects/status/alwm4il7x1w6g1o4?svg=true\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/orx/orx/commits/master\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/43b060b0e18931aad554f002569bb4ced14c1c0952a21ffeffff899e8ec570f4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6f72782f6f72782f6d6173746572\" alt=\"last-commit\" data-canonical-src=\"https://img.shields.io/github/last-commit/orx/orx/master\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/orx/orx/graphs/commit-activity\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/62dabdaa96a35dfc32a239c360f93cc4d97f9281a1509694c53aa1f159a46ffc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f6f72782f6f72782f6d6173746572\" alt=\"monthly-commit-activity\" data-canonical-src=\"https://img.shields.io/github/commit-activity/m/orx/orx/master\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/orx/orx\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/0bc1431f0828c70c1a3604fe6e915787c6ea45a1022a8b22715253b797dd63e1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7265706f2d73697a652f6f72782f6f72782e737667\" alt=\"repo-size\" data-canonical-src=\"https://img.shields.io/github/repo-size/orx/orx.svg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/orx/orx/issues\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/374ac11fd0d1f0771a2d229557401d9f067c00d075c1e3725e7db6de6473e995/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6f72782f6f7278\" alt=\"issues\" data-canonical-src=\"https://img.shields.io/github/issues/orx/orx\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/orx/orx/pulls\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/a5825e7dbe405ab05e9411a3414f5b0f6923457f8874da74de3fe8ed2c532040/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d70722f6f72782f6f7278\" alt=\"pull-requests\" data-canonical-src=\"https://img.shields.io/github/issues-pr/orx/orx\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\"\u003e\u003ch1 class=\"heading-element\"\u003eOrx (Version 1.15)\u003c/h1\u003e\u003ca id=\"user-content-orx-version-115\" class=\"anchor\" aria-label=\"Permalink: Orx (Version 1.15)\" href=\"#orx-version-115\"\u003e\u003cspan aria-hidden=\"true\" class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp\u003eThis engine is licensed under the very permissive \u003ca href=\"https://en.wikipedia.org/wiki/Zlib_License\" rel=\"nofollow\"\u003ezlib license\u003c/a\u003e (i.e. it's free for any commercial or non-commercial use),\nsee the \u003ca href=\"https://github.com/orx/orx/blob/master/LICENSE\"\u003eLICENSE\u003c/a\u003e file for details.\u003c/p\u003e\n\u003cp\u003eEmail iarwain [at] orx-project.org to contact the author or come \u003ca href=\"https://orx-project.org/discord\" rel=\"nofollow\"\u003echat with us on Discord\u003c/a\u003e if you have any questions, feedback or comments.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\"\u003e\u003ch2 class=\"heading-element\"\u003eSummary\u003c/h2\u003e\u003ca id=\"user-content-summary\" class=\"anchor\" aria-label=\"Permalink: Summary\" href=\"#summary\"\u003e\u003cspan aria-hidden=\"true\" class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp\u003e\u003ca href=\"https://orx-project.org\" rel=\"nofollow\"\u003eOrx\u003c/a\u003e is a heavily data-driven, 2D-oriented, portable game engine, focused primarily on ease of use and powerful features.\n(See below for a list of supported platforms.)\u003c/p\u003e\n\u003cp\u003eThis is a release candidate for orx v1.15. If you find any bugs,\nplease report them on the \u003ca href=\"https://forum.orx-project.org\" rel=\"nofollow\"\u003eforum\u003c/a\u003e, in the \"Bug report - Feature request\" board,\nor via orx's \u003ca href=\"https://github.com/orx/orx/issues\"\u003eissue page/tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eSome notable features of the engine are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003epowerful config system that makes orx data-driven and provides an easy to use load/save system\u003c/li\u003e\n\u003cli\u003ehardware-accelerated rendering that provides: translation, anisotropic scale, rotation,\ntransparency (alpha blending), different blending modes, coloring, tiling and mirroring\u003c/li\u003e\n\u003cli\u003eadvanced rendering features such as MRT (Multiple Render Targets), offscreen rendering, flexible pipeline \u0026amp; easy compositing\u003c/li\u003e\n\u003cli\u003eadvanced resource management allowing for easy multi-platform data support and patching\u003c/li\u003e\n\u003cli\u003eautomatic hotloading of resources upon modification on disk drastically shortens iteration times\u003c/li\u003e\n\u003cli\u003etimelines and commands modules allow for config-driven scripting-like features\u003c/li\u003e\n\u003cli\u003einteractive console can execute commands at runtime (very useful for tweaking/debugging purposes)\u003c/li\u003e\n\u003cli\u003eadvanced animation engine (including a chaining graph \u0026amp; custom animation events for synchronization)\u003c/li\u003e\n\u003cli\u003efragment (pixel) shader support\u003c/li\u003e\n\u003cli\u003evisual FXs based on curve combinations\u003c/li\u003e\n\u003cli\u003eintegrated runtime profiler (with graphical display) to easily spot which parts of your game need to be optimized\u003c/li\u003e\n\u003cli\u003ecollision handling and rigid body physics\u003c/li\u003e\n\u003cli\u003ecamera/viewport scheme allowing multiple views displayed with camera translation, zoom and rotation\u003c/li\u003e\n\u003cli\u003egeneric input system that abstracts keyboard, mouse, joystick, touch and accelerometer inputs\u003c/li\u003e\n\u003cli\u003epowerful localization module (for localized texts, audio, graphics, etc.)\u003c/li\u003e\n\u003cli\u003espawners (provides an easy way to create particles or projectiles)\u003c/li\u003e\n\u003cli\u003e3D positioning using \"scene nodes\"\u003c/li\u003e\n\u003cli\u003ecustom bitmap font support\u003c/li\u003e\n\u003cli\u003eautomatic differential scrolling and depth scaling upon request\u003c/li\u003e\n\u003cli\u003efully featured and extensible sound system (WAV/MP3/OGG/QOA support, streams, hierarchical buses, filters, spatialization, etc.)\u003c/li\u003e\n\u003cli\u003eclock system that provides time consistency and allows time stretching + high precision timers\u003c/li\u003e\n\u003cli\u003eevent manager\u003c/li\u003e\n\u003cli\u003eunicode support with UTF-8 encoding\u003c/li\u003e\n\u003cli\u003eplugin system\u003c/li\u003e\n\u003cli\u003escreenshot capture tool (supports bmp, png, jpg, qoi, tga and dds)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\"\u003e\u003ch2 class=\"heading-element\"\u003eGetting Started\u003c/h2\u003e\u003ca id=\"user-content-getting-started\" class=\"anchor\" aria-label=\"Permalink: Getting Started\" href=\"#getting-started\"\u003e\u003cspan aria-hidden=\"true\" class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp\u003eCheck \u003ca href=\"https://orx-project.org/wiki\" rel=\"nofollow\"\u003eorx's wiki\u003c/a\u003e for detailed information, including:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003einitial setup\u003c/li\u003e\n\u003cli\u003ebeginner's guide\u003c/li\u003e\n\u003cli\u003etools\u003c/li\u003e\n\u003cli\u003esamples\u003c/li\u003e\n\u003cli\u003edetailed tutorials (both official and community-made ones)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCheck the \u003ca href=\"/C:/workspace/orx/doc/html/index.html\"\u003edoc/html\u003c/a\u003e directory for orx's API doxygen documentation.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\"\u003e\u003ch2 class=\"heading-element\"\u003eSupported Platforms\u003c/h2\u003e\u003ca id=\"user-content-supported-platforms\" class=\"anchor\" aria-label=\"Permalink: Supported Platforms\" href=\"#supported-platforms\"\u003e\u003cspan aria-hidden=\"true\" class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp\u003eThe engine compiles for, and is tested on:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLinux (x86/x86-64 with codelite, codeblocks and GNU makefile)\u003c/li\u003e\n\u003cli\u003eWindows (x86/x86-64 with vs2017, vs2019 \u0026amp; vs2022, x86/x86-64 mingw-w64 (14.2.0) with codelite, codeblocks and GNU makefile)\u003c/li\u003e\n\u003cli\u003eMacOS X (x86/x86-64 with xcode or x86/x86-64 with codelite, codeblocks and GNU makefile), version 10.6+\u003c/li\u003e\n\u003cli\u003eWeb/HTML5 (Emscripten)\u003c/li\u003e\n\u003cli\u003eAndroid (Gradle build files, simulator \u0026amp; device)\u003c/li\u003e\n\u003cli\u003eiOS (iPhone/iPod Touch/iPad, simulator \u0026amp; device with xcode)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\"\u003e\u003ch2 class=\"heading-element\"\u003eVersions\u003c/h2\u003e\u003ca id=\"user-content-versions\" class=\"anchor\" aria-label=\"Permalink: Versions\" href=\"#versions\"\u003e\u003cspan aria-hidden=\"true\" class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp\u003eThose are not revision versions but link/run versions.\nOrx library can be compiled as a static or a dynamic library.\nIn addition to these modes, orx can be compiled as an embedded version or not.\u003c/p\u003e\n\u003cp\u003eOrx's core is basically platform-independent. All the platform/OS-dependent features\nare implemented via plugins. These plugins can be loaded at runtime (hotplug) or\nthey can be embedded at linktime.\u003c/p\u003e\n\u003cp\u003eIf you use the non-embedded versions, you'll have to specify which plugins to use.\nThis is more flexible but also requires additional files (the plugins themselves).\nThe embedded version will store everything in orx's library, meaning you won't be able\nto choose which plugin to use at runtime, but will also be more compact. This will\nalso make orx run considerably faster.\u003c/p\u003e\n\u003cp\u003eFrom the download page you'll find precompiled binaries for Windows (x86), Linux (x86/x86-64), MacOS X (ppc/x86/x86-64),\niOS and Android, using the dynamic embedded versions only.\nIf you want to use the non-embedded versions (to use with your own plugins), you'll need to compile orx yourself from the source.\nEverything compiles out-of-the-box for the hardware platforms cited above.\u003c/p\u003e\n\u003cp\u003eThe embedded versions currently use:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGLFW-based (+stb_image/webp/qoi/BasisU) display, joystick, keyboard and mouse plugins for all non-iOS/non-Android platforms\u003c/li\u003e\n\u003cli\u003eminiaudio (+stb_vorbis) sound plugin for all platforms\u003c/li\u003e\n\u003cli\u003eLiquidFun-based physics plugin\u003c/li\u003e\n\u003cli\u003eHomemade rendering plugin (2D)\u003c/li\u003e\n\u003cli\u003eOpenGL ES display plugins for iOS and Android\u003c/li\u003e\n\u003cli\u003eTouch/MultiTouch-based mouse plugin for iOS and Android\u003c/li\u003e\n\u003cli\u003eAccelerometer-based joystick plugin for iOS and Android\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf the headless variants of the embedded versions are requested, dummy plugins will be used for the display, joystick, mouse, keyboard and soundsystem plugins.\nThe render \u0026amp; physics plugins will be the same as the ones used for the non-headless versions.\u003c/p\u003e\n\u003cp\u003eAll the 11 basic and advanced official tutorials are shipped with the dev packages, including precompiled release binaries.\u003c/p\u003e\n\u003cp\u003eSome tools (precompiled binaries only) are also shipped with the dev packages:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eorxCrypt\u003c/code\u003e  : command line tool to encrypt/decrypt/merge multiple config files\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorxFontGen\u003c/code\u003e: command line tool (based on FreeType2) to generate custom bitmap fonts (.png texture \u0026amp; .ini config file) from TrueType fonts\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\"\u003e\u003ch2 class=\"heading-element\"\u003ePackages\u003c/h2\u003e\u003ca id=\"user-content-packages\" class=\"anchor\" aria-label=\"Permalink: Packages\" href=\"#packages\"\u003e\u003cspan aria-hidden=\"true\" class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp\u003eYou can download all the packages from \u003ca href=\"https://sf.net/projects/orx\" rel=\"nofollow\"\u003eSourceForge\u003c/a\u003e or \u003ca href=\"https://github.com/orx/orx/releases\"\u003eGitHub\u003c/a\u003e.\nHere is a list with a small description for each package.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-doc-1.15.zip\u003c/code\u003e                  : orx's API doxygen documentation\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-src-1.15.zip\u003c/code\u003e                  : orx's source code, ready for compile after running the setup script\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-linux32-1.15.tar.bz2\u003c/code\u003e      : dynamic embedded binaries for Linux (x86), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-linux64-1.15.tar.bz2\u003c/code\u003e      : dynamic embedded binaries for Linux (x86-64), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-mac-1.15.zip\u003c/code\u003e              : dynamic embedded binaries for MacOS X (x86/x86-64), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-mingw-32-1.15.zip\u003c/code\u003e         : dynamic embedded binaries for Windows (mingw/x86), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-mingw-64-1.15.zip\u003c/code\u003e         : dynamic embedded binaries for Windows (mingw/x86-64), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-vs2017-32-1.15.zip\u003c/code\u003e        : dynamic embedded binaries for Windows (Visual Studio 2017, x86), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-vs2017-64-1.15.zip\u003c/code\u003e        : dynamic embedded binaries for Windows (Visual Studio 2017, x86-64), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-vs2019-32-1.15.zip\u003c/code\u003e        : dynamic embedded binaries for Windows (Visual Studio 2019, x86), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-vs2019-64-1.15.zip\u003c/code\u003e        : dynamic embedded binaries for Windows (Visual Studio 2019, x86-64), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-vs2022-32-1.15.zip\u003c/code\u003e        : dynamic embedded binaries for Windows (Visual Studio 2022, x86), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-vs2022-64-1.15.zip\u003c/code\u003e        : dynamic embedded binaries for Windows (Visual Studio 2022, x86-64), release/profile/debug + tools.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-full-ios-1.15.zip\u003c/code\u003e             : static embedded binaries for iOS, release/profile/debug, simulator/device + doc + source + XCode project file.\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-dev-android-1.15.zip\u003c/code\u003e          : static embedded binaries for Android, release/profile/debug (device).\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-linux32-1.15.tar.bz2\u003c/code\u003e : tutorials for Linux (x86)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-linux64-1.15.tar.bz2\u003c/code\u003e : tutorials for Linux (x86-64)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-mac-1.15.zip\u003c/code\u003e         : tutorials for MacOS X (x86/x86-64)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-mingw-32-1.15.zip\u003c/code\u003e    : tutorials for Windows (mingw/x86)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-mingw-64-1.15.zip\u003c/code\u003e    : tutorials for Windows (mingw/x86-64)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-vs2017-32-1.15.zip\u003c/code\u003e   : tutorials for Windows (Visual Studio 2017, x86)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-vs2017-64-1.15.zip\u003c/code\u003e   : tutorials for Windows (Visual Studio 2017, x86-64)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-vs2019-32-1.15.zip\u003c/code\u003e   : tutorials for Windows (Visual Studio 2019, x86)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-vs2019-64-1.15.zip\u003c/code\u003e   : tutorials for Windows (Visual Studio 2019, x86-64)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-vs2022-32-1.15.zip\u003c/code\u003e   : tutorials for Windows (Visual Studio 2022, x86)\u003c/li\u003e\n\u003cli\u003e\n\u003ccode\u003eorx-tutorial-vs2022-64-1.15.zip\u003c/code\u003e   : tutorials for Windows (Visual Studio 2022, x86-64)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAll the \u003ccode\u003e*-dev-*\u003c/code\u003e packages above include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eorx release/profile/debug libraries used for linking\u003c/li\u003e\n\u003cli\u003eruntime release/profile/debug orx libraries\u003c/li\u003e\n\u003cli\u003eheaders to include at compile time\u003c/li\u003e\n\u003cli\u003etemplate files exposing which properties can be accessed using the config system (for user reference only, not needed by orx)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAll the \u003ccode\u003e*-tutorial-*\u003c/code\u003e packages above include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eheavily commented source code for 11 basic and advanced tutorials\u003c/li\u003e\n\u003cli\u003eprecompiled binaries (orx link library, orx runtime library)\u003c/li\u003e\n\u003cli\u003eheaders to include at compile time\u003c/li\u003e\n\u003cli\u003etemplate files exposing which properties can be accessed using the config system (for user reference only, not needed by orx)\u003c/li\u003e\n\u003cli\u003ebuild/project files\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\"\u003e\u003ch2 class=\"heading-element\"\u003eCompiling\u003c/h2\u003e\u003ca id=\"user-content-compiling\" class=\"anchor\" aria-label=\"Permalink: Compiling\" href=\"#compiling\"\u003e\u003cspan aria-hidden=\"true\" class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\"\u003e\u003ch3 class=\"heading-element\"\u003eIMPORTANT - FIRST STEP:\u003c/h3\u003e\u003ca id=\"user-content-important---first-step\" class=\"anchor\" aria-label=\"Permalink: IMPORTANT - FIRST STEP:\" href=\"#important---first-step\"\u003e\u003cspan aria-hidden=\"true\" class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp\u003e\u003cstrong\u003eIf you just cloned orx's repository (or downloaded the \u003ccode\u003esrc\u003c/code\u003e package), you will need to run the \u003ccode\u003esetup.bat\u003c/code\u003e / \u003ccode\u003esetup.sh\u003c/code\u003e script located at its root before being able to compile the engine.\nThis script will download all the required dependencies and generate the project files for your platform.\nFinally, the script will hook itself to mercurial/git so you won't have to run it manually ever again.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe easiest way to learn how to build your project using orx for a given platform\nis to check \u003ca href=\"https://wiki.orx-project.org\" rel=\"nofollow\"\u003eorx's wiki\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe generated project files will contain 6 different configurations to build orx: \u003ccode\u003eDebug\u003c/code\u003e, \u003ccode\u003eProfile\u003c/code\u003e \u0026amp; \u003ccode\u003eRelease\u003c/code\u003e in both regular and \u003ccode\u003eCore\u003c/code\u003e flavors. Here's what they do:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eDebug\u003c/code\u003e: These configurations will build orx in debug mode. They are the only configurations that will output warning and error messages resulting from incorrect data, code and behaviors. These configurations are also much slower than the other ones but is recommended during development to catch any mistake. Note: the internal profiler is also available with these configurations.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eProfile\u003c/code\u003e: These configurations will build orx in optimized mode but will keep the internal profiler, slightly slowing down the execution but allowing the user to get high level profiling information which can be very useful during development.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eRelease\u003c/code\u003e: These configurations will build orx in optimized mode, \u003cem\u003ewithout\u003c/em\u003e the internal profiler. These are the configurations one should be using when shipping their project. Note: on Windows, the OS terminal will also be hidden with this configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eCore\u003c/code\u003e: Those configurations will only build orx's core as a static library. With these configurations, no plugins will be compiled/embedded. In non-\u003ccode\u003eCore\u003c/code\u003e configurations, all the plugins are built and embedded inside orx's library, and should be the configurations used by most users. The \u003ccode\u003eCore\u003c/code\u003e configurations are typically used to build orx's tools that do not require any plugin (\u003ccode\u003eorxCrypt\u003c/code\u003e \u0026amp; \u003ccode\u003eorxFontGen\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHere's a quick list of the available compile preprocessor flags:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e__orxDEBUG__\u003c/code\u003e    : used to compile and link against the debug versions of orx library\n(liborxd.a / orxd.lib / liborxd.dylib), if not specified it refers to\nthe release versions (liborx.a / orx.lib / liborx.dylib).\u003cbr\u003e\nNB: If you want to link against the debug versions of orx library, you need\nto specify it to your compiler!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e__orxPROFILER__\u003c/code\u003e : used to enable the profiling push/pop macros for release builds\nIt's automatically enabled for debug builds and it has been enabled to\nbuild liborxp.a / orxp.lib / orxp.dll / liborxp.dylib / liborxp.so\u003cbr\u003e\nNB: You can define it in your projects even when using regular release builds,\nbut you won't be able to see orx's internal profiling markers!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e__orxSTATIC__\u003c/code\u003e   : used to compile and link against the static versions of orx library.\u003cbr\u003e\nNB: If you want to link against the static versions of orx library, you need\nto specify it to your compiler!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e__orxEMBEDDED__\u003c/code\u003e : used to compile the embedded versions of orx library.\u003cbr\u003e\nNB: this flag is \u003cem\u003eONLY\u003c/em\u003e needed when compiling orx library, not when linking\nagainst it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e__orxHEADLESS__\u003c/code\u003e : used to embed plugins that are compatible with a headless mode.\u003cbr\u003e\nNB: this flag is \u003cem\u003eONLY\u003c/em\u003e used when compiling orx library\nand when \u003ccode\u003e__orxEMBEDDED__\u003c/code\u003e is also defined!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThere are other preprocessor flags used when compiling the orx library,\nbut those should be easy enough to decipher.  markdo\nHowever, you might want to specify them manually for cross-compiling or\nuse them so that your code will behave differently depending on the architecture\nfor which you're compiling. Here's a quick list of these flags:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"center\"\u003eFlag\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxARM__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for an ARM architecture\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxPPC__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for a PowerPC architecture\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxPPC64__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for a PowerPC 64 architecture\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxX86__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for a x86 architecture\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxX86_64__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for a x86-64 architecture\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxLITTLE_ENDIAN__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for a little endian architecture\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxBIG_ENDIAN__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for a big endian architecture\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxGCC__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled with gcc\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxMSVC__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled with visual studio C/C++\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxLLVM__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled with llvm/clang\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxWINDOWS__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for Windows\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxMAC__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for MacOS X\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxLINUX__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for Linux\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxWEB__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for Web/HTML5\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxIOS__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for iOS\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxANDROID__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled for Android\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxCPP__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled with a C++ compiler\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxOBJC__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eorx is being compiled with an Objective-C compiler\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxPLUGIN__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ea plugin for orx is being compiled\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003ccode\u003e__orxEXTERN__\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ecode using orx's library is being compiled\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cdiv class=\"markdown-heading\"\u003e\u003ch2 class=\"heading-element\"\u003eComments\u003c/h2\u003e\u003ca id=\"user-content-comments\" class=\"anchor\" aria-label=\"Permalink: Comments\" href=\"#comments\"\u003e\u003cspan aria-hidden=\"true\" class=\"octicon octicon-link\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp\u003eIf you have any questions, comments, ideas or feedback, feel free to come \u003ca href=\"https://orx-project.org/discord\" rel=\"nofollow\"\u003echat with us on Discord\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eEnjoy!\u003c/p\u003e\n\u003c/article\u003e\u003c/body\u003e\u003c/html\u003e","funding_links":["https://github.com/sponsors/iarwain"],"categories":["Libraries"],"sub_categories":["C++"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forx%2Forx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forx%2Forx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forx%2Forx/lists"}