pages/garden/v-ecs/index.html

44 lines
34 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>V-ecs | The Paper Pilot</title>
<meta name="description" content="The Paper Pilot's Digital Garden">
<meta name="generator" content="VitePress v1.2.2">
<link rel="preload stylesheet" href="/assets/style.WieSGy2g.css" as="style">
<script type="module" src="/assets/app.BWgSvyDc.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.VBE0TPts.js">
<link rel="modulepreload" href="/assets/chunks/theme.BXTgxh1Z.js">
<link rel="modulepreload" href="/assets/chunks/git.data.CyBiH_4j.js">
<link rel="modulepreload" href="/assets/garden_v-ecs_index.md.bw4rUp7d.lean.js">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Itim&amp;family=Roboto+Mono:ital,wght@0,400;0,600;1,400&amp;display=block">
<link rel="manifest" href="/site.webmanifest">
<link rel="alternate" type="text/mf2+html" href="/changelog">
<link rel="alternate" type="application/rss+xml" title="Changelog" href="/changelog/rss">
<link rel="alternate" type="application/atom+xml" title="Changelog" href="/changelog/atom">
<link rel="alternate" type="application/json+xml" title="Changelog" href="/changelog/json">
<link rel="me" href="mailto:thepaperpilot@incremental.social">
<link rel="me" href="https://incremental.social/u/thepaperpilot">
<link rel="me" href="https://matrix.to/#/@thepaperpilot:incremental.social">
<link rel="me" href="https://code.incremental.social/thepaperpilot">
<link rel="me" href="https://www.linkedin.com/in/anthony-lawn/">
<link rel="me" href="https://mastodon.gamedev.place/@thepaperpilot">
<link rel="me" href="https://beehaw.org/u/thepaperpilot">
<link rel="me" href="https://www.reddit.com/user/ThePaperPilot/">
<link rel="me" href="https://github.com/thepaperpilot">
<link rel="me" href="https://twitter.com/ThePaperPilot">
<meta name="og:description" content="The Paper Pilot's Digital Garden">
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-f89a273e data-v-5d98c3a5><!--[--><!--[--><!--]--><!----><!--]--><!--[--><span tabindex="-1" data-v-0f60ec36></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0f60ec36> Skip to content </a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar has-sidebar top" data-v-ae24b3ad data-v-ccf7ddec><div class="wrapper" data-v-ccf7ddec><div class="container" data-v-ccf7ddec><div class="title" data-v-ccf7ddec><div class="VPNavBarTitle has-sidebar" data-v-ccf7ddec data-v-ab179fa1><a class="title" href="/" data-v-ab179fa1><!--[--><!--]--><!----><span data-v-ab179fa1>The Paper Pilot</span><!--[--><!--]--></a></div></div><div class="content" data-v-ccf7ddec><div class="content-body" data-v-ccf7ddec><!--[--><!--]--><div class="VPNavBarSearch search" data-v-ccf7ddec><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-ccf7ddec data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://moddingtree.com" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-9c663999><!--[--><span data-v-9c663999>Profectus</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://incremental.social" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-9c663999><!--[--><span data-v-9c663999>Incremental Social</span><!--]--></a><!--]--><!--]--></nav><!----><!----><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-ccf7ddec data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://code.incremental.social/thepaperpilot" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Forgejo</title><path d="M16.7773 0c1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.1175a7.0759 7.0759 0 0 1 4.148-1.4205l.1176-.001 1.3385.0002c.4973-.8827 1.4434-1.4788 2.5288-1.4788 1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.319c.8827.4973 1.4788 1.4434 1.4788 2.5287 0 1.602-1.2986 2.9005-2.9005 2.9005-1.6018 0-2.9004-1.2986-2.9004-2.9005 0-1.0853.596-2.0314 1.4788-2.5287l-.0002-9.9831c0-3.887 3.1195-7.0453 6.9915-7.108l.1176-.001h1.3385C14.7458.5962 15.692 0 16.7773 0ZM7.2227 19.9052c-.6596 0-1.1943.5347-1.1943 1.1943s.5347 1.1943 1.1943 1.1943 1.1944-.5347 1.1944-1.1943-.5348-1.1943-1.1944-1.1943Zm9.5546-10.4644c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Zm0-7.7346c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Z"/></svg></a><a class="VPSocialLink no-icon" href="https://matrix.to/#/@thepaperpilot:incremental.social" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matrix</title><path d="M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01
. Last tended to <a href='https://code.incremental.social/thepaperpilot/pages/commit/14a570c17b9fb881c611ae5e1aad8e4200ca8b30' title='Tue Jun 18 02:32:30 2024 -0500'><time class='dt-updated' datetime='Tue Jun 18 02:32:30 2024 -0500'>2024-06-18</time></a>
.</span></p><hr><blockquote><p>Tags: <a href="/garden/my-projects/">My Projects</a></p></blockquote><div class="img-container"><img src="/garden/screenshot_1717383987886_0.png" title="screenshot.png"></div><p>V-ecs (pronounced &quot;Vex&quot;) is a Vulkan-based engine I made for making highly moddable games and tools in Lua centered around the ECS design pattern and a work-stealing job system.</p><p>The engine works with &quot;worlds&quot;, which are collections of systems and renderers. The engine comes with several worlds using systems and renderers I made, including a voxel world, an incremental game, and some test scenes. All of these include systems to render the fps as well as show a debug console by typing the grave key (`). The default world is a title screen that detects any worlds in the &quot;worlds&quot; folder and displays a button for each of them.</p><div class="img-container"><img src="/garden/debug_1717384018620_0.png" title="debug.png"></div><p>The original plans were to eventually put it on the steam workshop so people could more easily share their creations amongst each other, but I never became happy enough with the performance of the engine - the parallelization of the lua code involved a lot of overhead that severely limited performance.</p><p>Instead, I made a couple of worlds by myself - an infinite procedurally generated voxel world, a simple incremental game, and a more complex incremental game I call &quot;<a href="https://thepaperpilot.itch.io/sands-of-time" target="_blank" rel="noreferrer">Sands of Time</a>&quot;.</p><div class="img-container"><img src="/garden/sandsoftime_1717383994964_0.png" title="sandsoftime.png"></div><p>The gameplay of Sands of Time was replicated in <a href="/garden/kronos/">Kronos</a> Chapter 2!</p></div></div></main><!----><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><footer class="vp-doc" data-v-f89a273e><div data-v-f89a273e>CC 2024 <a class="h-card" rel="me" href="/about" data-v-f89a273e><img src="/me.jpg" alt="" data-v-f89a273e>The Paper Pilot</a>. <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/" data-v-f89a273e>CC BY-NC-SA 4.0</a>.</div><div data-v-f89a273e>Any and all opinions listed here are my own and not representative of my employers; future, past and present.</div><div data-v-f89a273e><a href="https://resume.incremental.social/thepaperpilot/thepaperpilot" data-v-f89a273e>Resume</a> (not actively seeking new opportunities).</div><div data-v-f89a273e>Site built from <a href="https://code.incremental.social/thepaperpilot/pages/commit/831060a57ea3b801f343d139ca89db3261d18cbf" data-v-f89a273e>this commit</a> on <time data-v-f89a273e>Thursday, June 20, 2024 at 07:37:29</time>.</div></footer><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"garden_digital-gardens_index.md\":\"CJoZsrEi\",\"garden_davey-wreden_index.md\":\"SGaHrxwX\",\"garden_activitypub_index.md\":\"nGB2Ugcw\",\"garden_freeform-vs-chronological-dichotomy_index.md\":\"DyHhTPx1\",\"about_index.md\":\"p-omr8fP\",\"garden_fediverse_index.md\":\"CGquF_ei\",\"garden_dice-armor_index.md\":\"Rr3nnh6V\",\"garden_guide-to-incrementals_navigating-criticism_index.md\":\"ICsm7JOZ\",\"garden_ivy-road_index.md\":\"AXtf8fZc\",\"garden_chat-glue_index.md\":\"CkMzaX_H\",\"garden_incremental-social_index.md\":\"DXrf6JNf\",\"garden_guide-to-incrementals_what-is-content_index.md\":\"CMD9eYuA\",\"garden_game-dev-tree_index.md\":\"SVW5COfA\",\"garden_forgejo_index.md\":\"BR0pkwOl\",\"garden_life-is-strange_index.md\":\"3o3FN6qT\",\"garden_logseq_index.md\":\"Owl3sCHO\",\"garden_garden-rss_index.md\":\"CJZ3uLwn\",\"public_gamedevtree_docs_infoboxes.md\":\"BtrpL17l\",\"public_gamedevtree_docs_custom-tab-layouts.md\":\"oOQumDgW\",\"public_gamedevtree_2.0-format-changes.md\":\"DWZ5VgEH\",\"public_lit_docs_trees-and-tree-customization.md\":\"D-rEc1nB\",\"garden_decentralized_index.md\":\"DABuWYWx\",\"public_gamedevtree_docs_basic-layer-breakdown.md\":\"DG6Q9mdT\",\"guide-to-incrementals_ludology_definition_index.md\":\"Dn9xPt1k\",\"garden_babble-buds_index.md\":\"BJE_tzY5\",\"garden_freeform_index.md\":\"CxwOYYUM\",\"public_kronos_old things_2.0-format-changes.md\":\"DAyzd7AX\",\"public_gamedevtree_changelog.md\":\"BFpQdU6f\",\"public_gamedevtree_docs_subtabs-and-microtabs.md\":\"BUkbEA-K\",\"public_gamedevtree_docs_updating-tmt.md\":\"B1_CRXZy\",\"public_gamedevtree_docs_upgrades.md\":\"DuL26i8s\",\"garden_guide-to-incrementals_appeal-to-developers_index.md\":\"C8GwgGD2\",\"public_kronos_readme.md\":\"DR8w07T9\",\"public_gamedevtree_docs_clickables.md\":\"DlF0g6fO\",\"public_kronos_changelog.md\":\"_RxA7rHJ\",\"garden_nostr_index.md\":\"Be6A8yGZ\",\"public_gamedevtree_docs_buyables.md\":\"BWSB6neR\",\"garden_video-game-monetization_index.md\":\"BqDfezhL\",\"public_gamedevtree_readme.md\":\"B6IoVQ-I\",\"garden_vitepress_index.md\":\"O43Um6MI\",\"garden_opti-speech_index.md\":\"Ctz_UJYG\",\"garden_weird_index.md\":\"CwkTA0TR\",\"garden_webrings_index.md\":\"C-yxVeE6\",\"public_kronos_docs_clickables.md\":\"Dpdgv1J5\",\"public_kronos_docs_custom-tab-layouts.md\":\"B34ACqtp\",\"changelog_index.md\":\"BpRz4m_c\",\"public_kronos_docs_getting-started.md\":\"qT4YQHFa\",\"garden_fedi-v2_index.md\":\"CK_GsGf6\",\"public_kronos_docs_grids.md\":\"dbyCMqJD\",\"public_kronos_docs_infoboxes.md\":\"Bc-XXHMa\",\"guide-to-incrementals_ludology_content_index.md\":\"BMAOL1a_\",\"public_kronos_docs_milestones.md\":\"Ce7tGr8C\",\"garden_cinny_index.md\":\"Dqj9jrEW\",\"public_kronos_docs_layer-features.md\":\"DJjusT4t\",\"public_kronos_docs_particles.md\":\"CgdBAXsD\",\"public_kronos_docs_updating-tmt.md\":\"yvj4vsSM\",\"public_kronos_docs_upgrades.md\":\"BY_E6naZ\",\"public_lit_docs_bars.md\":\"CnS5IMvm\",\"public_lit_readme.md\":\"Dp_XDgLr\",\"garden_guide-to-incrementals_defining-the-genre_index.md\":\"CTeEKO2E\",\"public_lit_docs_!general-info.md\":\"DwyPmy7N\",\"public_lit_changelog.md\":\"D7wPxHZ1\",\"public_lit_docs_infoboxes.md\":\"71lto7Te\",\"garden_the-indieweb_signature-blocks_index.md\":\"idlweEUf\",\"public_lit_docs_layer-features.md\":\"FrysJ_Sk\",\"public_lit_docs_main-mod-info.md\":\"B2Wd3G2L\",\"public_lit_docs_subtabs-and-microtabs.md\":\"DkrjReOt\",\"garden_mtx_index.md\":\"CY67oQSn\",\"public_lit_docs_milestones.md\":\"CKbDaByO\",\"public_kronos_docs_bars.md\":\"DLIjHzcw\",\"garden_capture-the-citadel_index.md\":\"BN-YksDC\",\"public_lit_docs_upgrades.md\":\"DCCBwvKJ\",\"public_kronos_docs_basic-layer-breakdown.md\":\"DHJLymK0\",\"garden_commune_index.md\":\"BksNnRi6\",\"garden_kronos_index.md\":\"BBfrUWpx\",\"garden_command-palettes_index.md\":\"cEwnHYSj\",\"public_lit_docs_buyables.md\":\"Cr6AwZWn\",\"garden_the-beginner-s-guide_index.md\":\"ChAdsj_y\",\"public_gamedevtree_docs_challenges.md\":\"DJU5H6Rk\",\"public_gamedevtree_docs_milestones.md\":\"C9u7zdbl\",\"garde
</body>
</html>