pages/garden/dice-armor/index.html

62 lines
43 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>Dice Armor | 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.Dyr1wKxP.css" as="style">
<script type="module" src="/assets/app.CjRwD5T4.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.Sr2_9k8k.js">
<link rel="modulepreload" href="/assets/chunks/theme.DpCaOULF.js">
<link rel="modulepreload" href="/assets/chunks/git.data.BcrWSzMU.js">
<link rel="modulepreload" href="/assets/garden_dice-armor_index.md.BvcL1Xmx.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="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#3a0839">
<link rel="shortcut icon" href="/favicon.ico">
<meta name="msapplication-TileColor" content="#00FFFF">
<meta name="msapplication-config" content="/browserconfig.xml">
<meta name="theme-color" content="#3B4252">
<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">
<link rel="authorization_endpoint" href="https://indie.incremental.social/auth">
<link rel="token_endpoint" href="https://indie.incremental.social/auth/token">
<link rel="micropub" href="https://indie.incremental.social/micropub">
<link rel="indieauth-metadata" href="https://indie.incremental.social/.well-known/oauth-authorization-server">
<script data-goatcounter="https://thepaperpilot.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
<meta name="og:title" content="Dice Armor">
<meta name="og:description" content="">
<meta name="og:image" content="https://www.thepaperpilot.org/paperpilot_thumb.png">
<meta name="og:site_name" content="The Paper Pilot's Digital Garden">
<meta name="og:type" content="article">
<meta name="article:author" content="https://www.thepaperpilot.org/about">
</head>
<body>
<div id="app"><div class="Layout" data-v-4f9a2448 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/5ac040e4c90a8c29635aec2017065e2dfd7e5a83' title='Wed Jun 26 09:56:04 2024 -0500'><time class='dt-updated' datetime='Wed Jun 26 09:56:04 2024 -0500'>2024-06-26</time></a>
.</span></p><hr><details><summary>Referenced by:</summary><a href="/garden/babble-buds/index.md">Babble Buds</a></details><details><summary>Tags:</summary><a href="/garden/my-projects/index.md">My Projects</a></details><p>Download it <a href="https://drive.google.com/open?id=18rwqEIdMChdGtB-9LdI4wiqeM5C5ViOL" target="_blank" rel="noreferrer">here</a></p><p>Dice Armor is a game that started development as a semester-long project by a team of nine: a producer, a creative director, a narrative writer, an artist, two programmers, and 3 game designers. The information here is about my contributions as the lead programmer over the semester because I can show off stuff like the editor scripts I wrote. I was doing everything from interface coding, editor scripts, integrating Babble Buds, and of course, everything related to the gameplay itself. To date I&#39;m still the lead programmer for the game; for more up-to-date information on the current state of the game please visit the official site.</p><p>The build available here was created for showing off at the end of the semester, and as such has some buttons present to make the game easier to skip parts of the game to see all the content: You start with all the dice in the game already in the shop, there&#39;s a button to give yourself free money to buy these dice with, and in the duel, there are buttons to force a win or a loss, which can be used to skip the tutorial (not recommended for first-time players).</p><div class="img-container"><img src="/garden/da2_1717378483173_0.png" title="Tutorial"></div><p>Dice Armor is a dice dueling game. Players can use abilities, flip dice, and attack each other to win in a dice game that puts chance into the hands of the players. This is what the dueling scene looks like, with a tutorial cutscene happening on top to guide the player through the basics. Also, all the dice are constructed dynamically, using quaternion math to figure out the placement of each component relative to the face it is going on. The die in the middle has one of the player&#39; and opponents&#39; portraits on each of its sides.</p><div class="img-container"><img src="/garden/editors_1717378509527_0.png" title="Editors"></div><p>For many of the objects I&#39;ve created, I&#39;ve made scriptable objects so that game designers can add and modify them easily. Additionally, I would create custom inspectors for the objects to help make them as easy to understand and edit as possible. The opponent&#39;s artificial intelligence is made up of many strategies, in a prioritized list. When it is the opponents&#39; turn they go through each strategy and check if they can be run, and if so then the opponent performs the strategy and starts back over at the top of the list of strategies. The + sign under the list of strategies opens an organized dropdown of all the various strategies.</p><div class="img-container"><img src="/garden/simulator_1717378525890_0.jpg" title="Simulator"></div><p>In addition to custom inspector code, I&#39;ve created new tools for the editor for our game designers to use. This is a duel simulator that will take two opponents and simulate an arbitrary number of duels between them, and output the results and summarize them for you, much much quicker than manually going through the duels, even with an absurdly high timeScale. This will become incredibly useful in making balance changes and testing new dice against existing sets. This is a screenshot of it in edit mode, but in play mode it removes the &quot;Dueling Managers&quot; field and will use whatever the current duel balance settings are, allowing for the GDs to test freely in play mode without worrying about undoing all their changes afterward.</p><div class="img-container"><img src="/garden/da1_1717378469912_0.png" title="da1.png"></div><p>I created the Babble Buds puppet editor and ported the rendering library I wrote for it to C# so it could be used in Unity. Dice Armor has a full campaign using cutscenes made using the Babble Buds cutscene editor, taking advantage of its support for custom commands
<script>window.__VP_HASH_MAP__=JSON.parse("{\"garden_webrings_index.md\":\"C9YRZ8vb\",\"guide-to-incrementals_index.md\":\"Bpq15UaX\",\"garden_chromatic-lattice_index.md\":\"B5qPBo-S\",\"garden_weird_index.md\":\"BjZi1MDu\",\"garden_the-indieweb_signature-blocks_index.md\":\"C4-BOO4I\",\"garden_babble-buds_index.md\":\"CRllazQ1\",\"garden_this-knowledge-hub_index.md\":\"BAlSWWx9\",\"garden_synapse_index.md\":\"j2MWsuO_\",\"garden_atproto_index.md\":\"ITAYOGJR\",\"garden_fediverse_index.md\":\"DdsbJhRP\",\"garden_cinny_index.md\":\"CKXJ1bbs\",\"garden_technocracy_index.md\":\"CX0DwK9Y\",\"garden_the-beginner-s-guide_index.md\":\"B9s_UlL-\",\"garden_the-cozy-web_index.md\":\"DaheNEdp\",\"garden_imperialism_index.md\":\"CshuexhP\",\"garden_art-is-never-complete_index.md\":\"BtIYQjow\",\"garden_command-palettes_index.md\":\"DPkTiZSA\",\"garden_filter-bubbles_index.md\":\"qLDBKf98\",\"garden_the-indieweb_amplification_index.md\":\"3x5VqZ80\",\"about_index.md\":\"YpmaDm_z\",\"guide-to-incrementals_design_criticism_index.md\":\"CF3ptiyg\",\"guide-to-incrementals_ludology_appeal-gamers_index.md\":\"Cmpvya3x\",\"guide-to-incrementals_ludology_appeal-developers_index.md\":\"CimyBWKE\",\"garden_anarchism_index.md\":\"CER_o3nm\",\"garden_artificial-intelligence_index.md\":\"VFi9pcqA\",\"garden_decentralized_index.md\":\"bryhD8xj\",\"garden_a-plea-to-organize_index.md\":\"DmEe_rYO\",\"garden_chat-glue_index.md\":\"BUFDcaM4\",\"garden_everything-is-political_index.md\":\"rbSDwqZc\",\"garden_guide-to-incrementals_what-is-content_index.md\":\"DZ5pJU-H\",\"garden_consensus-democracy_index.md\":\"CofuRdBH\",\"garden_decentralized-identity_index.md\":\"BEIMlpi0\",\"garden_decentralized-moderation_index.md\":\"ueaXQznW\",\"garden_guide-to-incrementals_navigating-criticism_index.md\":\"DivZ76BD\",\"garden_davey-wreden_index.md\":\"gXQRuuUm\",\"changelog_index.md\":\"ilnyzBD3\",\"garden_moderation_index.md\":\"B7RP_VZ_\",\"garden_garden-rss_index.md\":\"BuAHk1MQ\",\"garden_gender_index.md\":\"DoQhDjKl\",\"garden_mtx_index.md\":\"BsaqlBYK\",\"public_gamedevtree_docs_custom-tab-layouts.md\":\"DNTfGub2\",\"garden_my-browser-stack_index.md\":\"uksLZ895\",\"garden_direct-democracy_index.md\":\"Drd3bOt8\",\"public_gamedevtree_docs_challenges.md\":\"CE_eHHwf\",\"public_kronos_docs_layer-features.md\":\"B0ijhoip\",\"garden_leftism_index.md\":\"DU61D021\",\"public_kronos_docs_infoboxes.md\":\"DoJEZ-co\",\"garden_life-is-strange_index.md\":\"CiHEZNoV\",\"public_kronos_docs_grids.md\":\"D6W3aZvd\",\"garden_logseq_index.md\":\"BjYPX9U_\",\"garden_matrix_index.md\":\"B2azu3Wc\",\"garden_local-first-software_index.md\":\"Cb7v9klo\",\"garden_dice-armor_index.md\":\"BvcL1Xmx\",\"garden_mbin_index.md\":\"DqnlhoRc\",\"garden_fedi-v2_index.md\":\"CThQv-zy\",\"garden_local-communities_index.md\":\"CAEN6S2r\",\"garden_my-political-beliefs_index.md\":\"BYXcV_fb\",\"garden_my-political-journey_index.md\":\"BXr8MFu7\",\"garden_my-projects_index.md\":\"wiE69CCE\",\"garden_my-personal-website_index.md\":\"D9RxR9Ge\",\"garden_neoliberalism_index.md\":\"ui08wbfa\",\"garden_gerrymandering_index.md\":\"CsB_YWSB\",\"garden_objectivity_index.md\":\"DVnccZzk\",\"garden_network-of-knowledge_index.md\":\"CyD-TRX8\",\"garden_nostr_index.md\":\"CEXJKYHs\",\"garden_freeform-vs-chronological-dichotomy_index.md\":\"Bc4Lj93E\",\"garden_forgejo_index.md\":\"4kXC1s_Z\",\"garden_digital-gardens_index.md\":\"CBAUQVhO\",\"garden_digital-locality_index.md\":\"CqP1_XyW\",\"garden_enshittification_index.md\":\"DPNqV21w\",\"garden_game-dev-tree_index.md\":\"BYDVgNyE\",\"garden_no-politics-rules_index.md\":\"C_dydAdq\",\"public_gamedevtree_docs_subtabs-and-microtabs.md\":\"CMFhzxtB\",\"public_kronos_docs_getting-started.md\":\"mxo4iirj\",\"public_kronos_docs_bars.md\":\"CSguFZp_\",\"public_gamedevtree_changelog.md\":\"33CNNJKT\",\"public_gamedevtree_docs_buyables.md\":\"B23LDgI6\",\"public_kronos_docs_achievements.md\":\"KsbXJC1r\",\"public_gamedevtree_readme.md\":\"DE0tbltW\",\"garden_planar-pioneers_index.md\":\"k-RkmoSH\",\"public_kronos_docs_clickables.md\":\"BjE13u2w\",\"public_kron
</body>
</html>