tag:blogger.com,1999:blog-354855272024-03-13T15:25:00.143+10:00Down to the Bones ...[ A raw, truthful take on life from the perspective of VRBones ]VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.comBlogger605125tag:blogger.com,1999:blog-35485527.post-67811354312737170202024-01-18T14:55:00.004+10:002024-01-25T13:09:58.305+10:00The Evolution of Alphabattle: A Journey Through Strategic Game Development<p>In the fascinating world of game development, the creation of a new game often involves a blend of strategic thinking, coding expertise, and a dash of creativity. Recently, I embarked on an intriguing journey to develop a game called "Alphabattle," a text-based strategy game where players compete using armies represented by sequences of letters. This blog post chronicles my experience from the initial concept to the implementation of an evolutionary tournament system.</p><p><br /></p><p><b>The Birth of Alphabattle</b></p><p>Alphabattle's concept is simple yet captivating. Each player's army consists of 10 units, each represented by a letter. These units, like Infantry (I), Archers (A), Horsemen (H), and others, have specific strengths and weaknesses. The challenge was to design a game that is easy to understand but rich in strategic depth.</p><p><br /></p><p><b>Key Features:</b></p><p><b>Simple Interface:</b> The game features a straightforward interface, making it accessible to a wide range of players.</p><p><b>Unique Units: </b>Each unit type, symbolized by a letter, has distinct abilities and counters.</p><p><b>Strategic Depth: </b>Players must carefully arrange their units to outmaneuver their opponents.</p><p><br /></p><p><b>Rapid Game Development and Platform Selection</b></p><p>Given the game's simplicity, I chose a web-based platform for its development, utilizing HTML, CSS, and JavaScript. This choice allowed for rapid development and easy access for players across different devices.</p><p><br /></p><p><b>Implementing a Challenge Leaderboard</b></p><p>To add a competitive edge, I integrated a challenge leaderboard into Alphabattle. This feature incentivizes players to compete and improve their strategic skills, creating an engaging and dynamic gaming experience.</p><p><br /></p><p><b>Evolving the Game: Tournament Play and Team Progression</b></p><p>The most significant development in Alphabattle was the introduction of tournament play and the progression of top teams. After each tournament, the top 50 teams advance, ensuring that successful strategies are carried forward and pitted against new challengers.</p><p><br /></p><p><b>Genetic Mutations and Custom Teams:</b></p><p>Mutations: To maintain diversity, I introduced genetic mutations to the game, where top-performing teams are modified in various ways (like rotation, swapping, or merging) for subsequent tournaments.</p><p>Custom Team Addition: Players can now add their custom-designed teams to the tournament, further enriching the strategic diversity of the game.</p><p><br /></p><p><b>Technical Challenges and Innovations</b></p><p>Throughout the development process, I encountered and overcame various challenges:</p><p><b>Ensuring Valid Team Compositions:</b> A crucial aspect was to ensure that each team adhered to the game's rules (like having one King and one Guard). This required careful coding and validation.</p><p><b>Debugging and Evolution:</b> Debugging played a significant role, especially when implementing the mutations. It was fascinating to see how small changes could significantly impact the game's dynamics.</p><p><b>Conclusion</b></p><p>Developing Alphabattle has been a journey of innovation, challenge, and creativity. From its humble beginnings as a simple text-based game to its evolution into a strategically complex tournament with evolving teams, Alphabattle stands as a testament to the joys and challenges of game development. As players engage in this ever-evolving battle of wits, Alphabattle continues to grow, adapt, and surprise, offering a unique experience to strategy enthusiasts.</p><p dir="rtl" style="text-align: right;"><br />ChatGPT session summary</p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-53356924364351458642024-01-15T13:51:00.004+10:002024-01-15T13:51:30.335+10:00Enhancing Visual Clarity in Card Chess: Today's Development Focus<p>In today's development session for Card Chess, we focused on enhancing the visual representation of card stacks and differentiating terrain cards for a clearer and more intuitive gameplay experience. By implementing a slight offset in the rendering of card stacks, players can now easily discern multiple cards in a stack. Additionally, we muted the terrain cards to make is clearer what is playable, while remaining close to the original look and feel of using proper playing cards. These improvements aim to balance aesthetic appeal with functional clarity, elevating both the game's visual quality and playability.</p><p dir="rtl" style="text-align: right;">Code Knight</p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-24696187394210553522024-01-10T13:45:00.001+10:002024-01-10T13:45:10.404+10:00The dawn of Custom GPTs<p> As OpenAI's app store approaches, it's time to take stock of the Custom GPTs written in the past few months:</p><p><b><a href="https://chat.openai.com/g/g-1YALIjERg-luther-1521">Luther 1521</a></b></p><p><i>I am writing as Martin Luther on this day in 1521. Check in daily and journey through the year the reformation was born and the most intense year of Luther's life.</i></p><p>One of the first CustomGPTs I created and one I consistently come back to. Now that the year has reset it feels like it's worth recording each day somewhere as the Diet of Worms approaches. It's not only been an interesting read, but has made me dig more into the history and times of the reformation. </p><p>Rating: Moderate.</p><p><b> <a href="https://chat.openai.com/g/g-N5g433AMx-churchill-1940">Churchill 1940</a></b></p><p><i>I write as Winston Churchill on this day in 1940. Check in daily for a journey through a critical part of World War II, England as a nation, and Winston's challenge for Prime Minister.</i></p><p>Another year-in-the-life-of GPT made after enjoying Luther so much. 1940 is a really interesting year for the war, for Britain and for Churchill himself. The bleakness of the Blitz jars against common sentiment of the war living on the other side and on the winning team. Now that the year has reset, it's going to be interesting going through the Battle of Britain, Churchill's sudden charge at Prime Minister and the day-to-day throes of war. </p><p>Rating: Moderate-high</p><p><b><a href="https://chat.openai.com/g/g-TaC4yCyGW-solution-sage">Solution Sage</a></b></p><p><i>Hints without the spoilers</i></p><p>I have been contemplating doing a hintbook style YouTube series where the watcher is encouraged to pause the clip after each hint so that they have the joy of figuring out most of the puzzle. This GPT is in the same vein, but has morphed a little into a sage-like response. Still feels like it needs a few more tweaks to make it even less spoilery.</p><p>Rating: Moderate</p><p><br /></p><p><a href="https://chat.openai.com/g/g-jPPQS8u4y-ainstein">AInstein</a></p><p><i>Hi, I'm personality upload of Albert Einstein. Relatively speaking...</i></p><p>I've liked the name AInstein for a while, and a CustomGPT was a good way of using it. This AI is lke running into Albert on campus and discussing the day's events. There's a whole heap of other famous scientists uploaded to the Virtual University, so hearing stories of their interactions is quite interesting. It hasn't gotten as much use as the others after a few days</p><p>Rating: Low</p><p><br /></p><p><b><a href="https://chat.openai.com/g/g-WOhgPiQ2V-talkie-toaster">Talkie Toaster</a></b></p><p><i>Howdy Doodly Doo!</i></p><p>Ahh so you're a waffle man! One weekend we had waffles, which led to regaling the exploits of Talkie Toaster from Red Dwarf to the kids. This one is surprisingly good at mixing in the puns. Longer legs than most of the others and keeps coming up in conversation. </p><p>Rating: Moderate</p><p><br /></p><p><b>Code Knight</b></p><p><i>Card Chess coding companion.</i></p><p>This has been my coding companion since the Custom GPTs came out. It's much easier to upload the entire game as it's small enough to fit into memory. Struggled earlier on to get it to have all the code ready to go rather than analysing it (which it still does sometimes), but the hallucination outside of the coding standards used have dropped dramatically and it's been quite effective. In use far more than any other Custom GPT, but only as a personal assistant and likely never to be release publically.</p><p><br /></p><p><b>Jobber</b></p><p><i>Personalized, professional job application support.</i></p><p>This is a new Custom GPT to help me apply for jobs. I place a lot of emphasis on the cover letter to bring out the varied experiences I've had and how they would apply to a specific job (far more than the resume' would), so this one helps by analysing previous cover letters to see if a posted job is something I'm likely to be a strong candidate for. It also helps review cover letters for potential weaknesses so that additional effort can be made to shore up those parts of the application. As with most interactions with ChatGPT on a new subject, I like to get it look for weaknesses in the concept first as it tends to be a bit of a yes-man. It's actually pretty good at providing unbiased feedback when requested.</p><p><br /></p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-20075184621956987912024-01-09T22:38:00.006+10:002024-01-09T22:38:46.152+10:00Card Chess Game Development: Expanding Strategic Horizons with Terrain Variety<p>In the fascinating world of game development, each day brings new opportunities to enhance player experience and add layers of strategic depth. Since our last update, we've taken significant strides in the development of the Card Chess game, particularly focusing on the implementation of diverse terrain types. Here's a glimpse into the progress we've made:</p><p><br /></p><p><b>Introducing Terrain Diversity</b></p><p>Our primary objective was to enrich the strategic gameplay of Card Chess by incorporating various terrain types. This not only adds visual appeal but also introduces new tactical considerations for players. We implemented three distinct terrain types: Random, Chequerboard, and Balanced Random.</p><p><br /></p><p><b>Random Terrain: </b>In this setup, terrain cards (2s, 3s, and 5s) are randomly distributed across the designated terrain area, introducing an element of unpredictability to each game.</p><p><br /></p><p><b>Chequerboard Terrain:</b> We created a method to arrange the terrain cards in a chequerboard pattern, alternating between red and black suits. This layout offers a visually pleasing and strategically challenging terrain.</p><p><br /></p><p><b>Balanced Random Terrain:</b> A unique approach where each set of ranks (2s, 3s, and 5s) is shuffled independently and placed in a predefined 235532 pattern. This maintains a balance in rank distribution while still incorporating randomness.</p><p><br /></p><p><b>UI Enhancements for Terrain Selection</b></p><p>To complement these new terrain types, we updated the game’s user interface. A dropdown menu was added to the opening screen, allowing players to select their preferred terrain type before starting a game. This feature not only improves the game's usability but also empowers players with more control over their game setup.</p><p><br /></p><p><b>Code Refinement and Testing</b></p><p>A significant portion of our work involved refining the code to support these new features. We utilized constants for terrain rows to enhance code readability and maintainability. Thorough testing was conducted for each terrain type to ensure correct implementation and integration with the game’s existing rules and mechanics.</p><p><br /></p><p><b>Looking Ahead</b></p><p>As we continue to develop Card Chess, our focus remains on creating an engaging and strategically rich experience for players. The introduction of diverse terrain types marks a significant milestone in this journey, opening up new tactical possibilities and game dynamics.</p><p><br /></p><p>Stay tuned for more updates as we continue to evolve and enhance the Card Chess game!</p><p dir="rtl" style="text-align: right;">Code Knight</p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-68695756504312251912024-01-08T22:27:00.001+10:002024-01-29T17:43:45.850+10:00Card Chess - Code Knight daily review<p>In the dynamic world of game development, creating an immersive and enjoyable user experience is paramount. Today's focus was a deep dive into enhancing a game known as Card Chess - a strategy game combining elements of chess with the randomness of cards. Our journey through various aspects of game development using C# and Myra, a UI library for MonoGame, offered insightful glimpses into the intricacies of building a captivating game.</p><p><br /></p><p><b>Elevating the Endgame: The Win/Lose Screen</b></p><p>A crucial part of any game is its conclusion - the moment of triumph or defeat. We embarked on creating a win/lose screen that not only announces the game's outcome but does so while showcasing the final state of the board. The challenge was to overlay this information elegantly. By employing a semi-transparent screen, we managed to display the game's result while allowing players to view the endgame board state, enhancing the player's connection to the game's conclusion.</p><p><br /></p><p><b>State of Play: Refining Game States</b></p><p>Next, we delved into the game's heartbeat - its state management. The GameState enum in CardChessGame.cs was fine-tuned to include specific states reflecting various game outcomes. This addition paved the way for more nuanced control over the game's flow, allowing for a more refined gaming experience.</p><p><br /></p><p><b>User Interface: A Touch of Finesse</b></p><p>A significant portion of the day was spent enhancing the game's user interface. We replicated the CreateOpeningMenu method to craft a results menu, complete with a "Play Again" button - a feature allowing players to jump right back into action. To ensure clarity in communication, we added a label displaying the game's outcome, making use of the EndGameState. Attention to detail was key as we meticulously adjusted the positioning and padding of UI elements for optimal layout and readability.</p><p><br /></p><p><b>Terrain Choices: Enhancing Strategic Depth</b></p><p>In a strategic twist, we introduced a terrain selection feature in the opening menu. A dropdown list, or ComboBox, was implemented, offering players the choice between different terrain types like "None", "Random", and "Chequerboard". This feature not only added a layer of depth to the game's strategy but also showcased how UI elements could be dynamically populated using enums for a streamlined codebase.</p><p><br /></p><p><b>Behind the Scenes: Game and Board Logic</b></p><p>A significant discussion point was where to store the terrainType variable - in the game class or the board class. This decision hinged on the architectural and functional implications within the game. We also refactored the ResetGame() method to incorporate terrain type, illustrating the importance of adaptable and maintainable code.</p><p><br /></p><p><b>Localization: Crossing Language Barriers</b></p><p>Finally, we touched upon the topic of localization. Using enums to populate UI elements like a ComboBox poses a unique challenge in a multilingual setting. We explored the use of resource files for localized strings, ensuring that the game remains accessible and enjoyable to a diverse audience.</p><p><br /></p><p><b>Conclusion</b></p><p>Today's journey through game development highlighted the delicate balance between technical prowess and creative vision. Each line of code, each UI adjustment, and each gameplay tweak brought us closer to a game that not only challenges the mind but also delights the senses. As we wrapped up the day, it was clear that the art of game development is a continuous pursuit of perfection, where every detail contributes to an unforgettable player experience.</p><p style="text-align: right;">Code Knight</p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-46619660911905666362023-10-04T00:28:00.011+10:002023-10-04T00:29:34.886+10:00CardChess V006<p><b> ChatGPT Summary</b></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em;">Over the past week, our discussions have mainly revolved around the implementation and debugging of a game simulation involving cards, players, and boards. Here's a quick summary<br /></p><b>Game Implementation & Cloning</b><div>We explored designing classes like Card, Player, and Board and implemented cloning mechanisms to create deep copies of these objects, ensuring the original game state remains unchanged during simulations.</div><div><br /></div><div><b>Minimax Algorithm & Simulating Moves</b></div><div>We implemented a version of the Minimax algorithm for determining the best move for a computer player in the game.<br />We introduced SimGameState to simulate game states for exploring possible future moves without affecting the actual game state.<br />Developed methods like ApplyMove and ApplySimMove to allow a move to be made in the simulated game state.<br />Introduced SimMove to handle moves within SimGameState, and methods to convert back and forth between Move and SimMove.</div><div><br /><b>Scoring and Move Evaluation</b></div><div>Explored the logic of scoring and evaluating moves and developed methods like RankMoveForBoard and GetPlayerScore to estimate the value of a move or a board state within the Minimax algorithm.<br />Iterated on RankMoveForBoard and GetPlayerScore to consider various game scenarios and card states (like covered cards or cards covering an opponent's card).</div><div><br /><b>Debugging and Refining Logic</b></div><div>Throughout our discussions, we worked through various logic and implementation challenges, ensuring that cloned and original objects are managed properly, and that moves in simulated game states are accurately represented and do not affect the actual game state.<br />Addressed specific issues like making sure that moves are valid, players' states are updated appropriately, and that the Minimax algorithm explores possible moves in a logical and efficient manner.</div><div><br /><b>Future Steps</b></div><div>Potential next steps might involve further refining move evaluation logic, optimizing the Minimax algorithm, addressing any remaining bugs or logical inconsistencies, and potentially exploring additional features or variations of the game.</div>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-85584201338260973392023-08-30T17:46:00.005+10:002023-08-31T06:11:08.784+10:00CardChess v0.05<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4RWdXH0DMruGqCruRik6GakZERGlYgjxM8MkOugq-N_abfhKGZcj8_PhCth6Nm09aKa4n7zlvptG-KLVNiGktzRWTkh-rbZ-OC21-ovYN2srNRNAhbKdtz0RIVex89k2Mz-RHdyXqm9tTliE-Bqca6Nh1lVzOBDY31KvocYqBx3mVmKabOMp2-A/s1152/CardChess.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="1152" data-original-width="768" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4RWdXH0DMruGqCruRik6GakZERGlYgjxM8MkOugq-N_abfhKGZcj8_PhCth6Nm09aKa4n7zlvptG-KLVNiGktzRWTkh-rbZ-OC21-ovYN2srNRNAhbKdtz0RIVex89k2Mz-RHdyXqm9tTliE-Bqca6Nh1lVzOBDY31KvocYqBx3mVmKabOMp2-A/w266-h400/CardChess.jpg" width="266" /></a></div>Soo... I've been quietly developing <a href="https://www.vrbones.com/2007/04/card-chess.html">CardChess</a> as an experiment in using ChatGPT and AI-powered coding techniques. So far there has definitely been an improvement over doing it myself (mainly due to my lack of knowledge with MonoGame and the finer details of C#). It's also much more fun and collaborative using it more as a pair programmer experience. <p></p><p>I've recently also cleaned up the opening menu with the Leonardo.ai generated art to the left (Stable diffusion skinned system)</p><p>Below is ChatGPT's summary of the project so far..</p><p><br /></p><h3 style="text-align: left;"> ChatGPT Summary: </h3>As of your last update, the CardChess project is in the process of implementing computer-controlled players. The game can be played between two human players, and the basic structure and rules of the game have been implemented. Here are some of the key aspects that have been worked on:<div><ul style="text-align: left;"><li><b>Game Concept: </b>The game concept, including the rules, the board setup, the movement of the cards, and the win conditions, has been defined.</li><li><b>Board Setup:</b> The board is set up with a 6x6 grid, and the initial positions of the cards for both players have been implemented.</li><li><b>Card Movement:</b> The movement of the cards, including the rules for valid moves and attacking, have been implemented. The Move class has been created to handle the movement of the cards, and the PlayableCard class has StartMove and FinishMove methods to handle the start and finish of a move.</li><li><b>Win Conditions:</b> The win condition, which is covering both kings of the opponent, has been implemented.</li><li><b>Game States: </b>Different game states, such as the opening menu, human turn, computer turn, and game over, have been implemented.</li><li><b>UI: </b>The opening menu has been implemented, including the play button and the background. The game state is also being exported to a JSON file for future analysis and AI learning.</li><li><b>Computer Player: </b>The framework for a computer opponent has been started, including the GetMove method to get a move from the computer player, and the ExecuteMove method to execute the move. The Player class has a GetMove method that can be overridden by the ComputerPlayer class. Currently the computer opponent only uses random moves.</li><li><b>Animation: </b>Implemented the animation for the movement of the cards.</li></ul><br />Pending tasks include:</div><div><ul style="text-align: left;"><li><b>Computer AI:</b> Developing multiple AI opponents.</li><li><b>Testing and Debugging: </b>Thorough testing and debugging of the game to ensure that it runs smoothly and without errors.</li><li><b>UI Enhancement:</b> Enhancing the user interface, including the opening menu with opponent selection, clean up the game board, and the game over screen.</li><li><b>Game Analysis and AI Learning: </b>Implementing the game analysis and AI learning features using the exported game state.</li></ul></div>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-91498343190232982432023-01-16T23:25:00.005+10:002023-01-16T23:25:48.539+10:00GameLog 2023-02<p> Toward the end of last year the Steam stats in review reminded me of the old GameLogs and had a few hours of reminiscing. That also led to a new Year's resolution to kick them off again this year with a potential cover of iPad / Android games too. </p><p><br /></p><p>Software Inc - 16.5 Hrs - Pretty sure I've played it before, but a few new updates had me pick this one up to round out a return to Steam games over the holidays. A couple of attempts to get a fledgling company off the ground into launching its first game, but when it netted ~500K it felt like the game was essentially solved. Might come back at a later point and set a few moe challenges, like manufacturing my own console. </p><p><br /></p><p>HexRogue - 5.3 Hrs - Quick little strategy game combining catan-like maps into a tactical battler. Seems a little too quick, but still in beta.</p><p><br /></p><p>Star Valor - 48 Hrs - Possibly not all in this year, but a neat little space privateer game with a bit more focus on building a posse' rather than going it alone. Only got into what feels like the mid-game in terms of ship size, but felt like I could see the finish line. Might try again when it's released.</p><p><br /></p><p>Stellar Winds - 12h - Android idle space battler that uses ship styles to relatively good effect to make it not just a linear experience. </p><p><br /></p><p>Pokemon Purple - 3h - Switch pickup for the family for Christmas, largely driven by MissGooey's Pokemon craze that is still going strong. Giving it a whirl too.</p><p><br /></p><p>Urban flow -1.5h - quick little switch co-op game with Sandy. Good frantic traffic light flippin' </p><p><br /></p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-49246245504441670152022-05-17T07:54:00.004+10:002022-05-17T07:54:56.811+10:00TournamentCompare v0.007 - The microsoft alternative<p> After getting a standard user set up (so I'm not directly touching the admin account), the first step is to set up a <a href="https://docs.microsoft.com/en-us/power-platform/admin/create-environment">new Power Platform environment</a> to keep all the development tables and apps away from the default instance. I'm also tempted to have a Dev / Test / Prod environment too. Yep, may as well go full lifecyccle management from the get-go (It'll be in Dev for a significant chunk of time anyway).</p><p>Hmm, apparently the tenant doesn't have enough space for the database. Sure enough, database capacity is 0 of 0, No space allocated. Might see if I can create the environment without the dataverse database and make afterwards. Hmm nope, still complaining about capacity constraints. Tried signing up for the <a href="https://powerapps.microsoft.com/en-us/developerplan/">developer plan for power apps</a>, but it just took me to the same environment. Looks like Microsoft confirms that the <a href="https://docs.microsoft.com/en-us/power-platform/admin/create-environment">developer plan cannot create environments</a>. Oh well.</p><p>The next alternative is to create separate databases in the dataverse of the default instance and hopefully link them to separate solutions. Actually without environments the standard solution export / import isn't going to work. Possibly just use DevOps and branching?</p><p>Setting up DevOps it looks like my personal account had got there first to register VRBones. Since my personal account is also set up as a developer for Visual Studio, it probably makes sense to leave it there, so I just added the organisation admin and standard user to the mix and made a new TournamentCompare project. </p><p>Upon looking into the <a href="https://docs.microsoft.com/en-us/connectors/visualstudioteamservices/">DevOps integration</a> it looks to be only with VS Team Services account. Ok, it looks like I'll just need to build out the app in default and keep it lightweight before deciding whether lifecycle management will help to push out anything. </p><p>Tournament Template files created pretty quickly. Next step is to check the model-driven app and especially the self-referenced heirarchy.</p><p><br /></p><p><br /></p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-78764470677051849942022-05-03T07:38:00.000+10:002022-05-03T07:38:00.095+10:00Microsoft 365 and Power Apps development<p>Inspired by my new job at Best Practice, I have been looking at Microsoft 365 Dataverse and model-driven power apps as a potential replacement for TournamentCompare development (and possibly others). </p><p>Although it looked like you could sign up for a <a href="https://www.youtube.com/watch?v=UthnC2aupZ4">free community / developer plan</a>, it didn't like my hotmail address. Digging deeper it looked like all I had to do was have a custom domain, so I set up a dev account on tournamentcompare.com, but it still rejected stating it needed a O365 tenant (had expected such, otherwise it would have created all the back end anyway). </p><p>It turns out what I REALLY need is a <a href="https://developer.microsoft.com/en-us/microsoft-365/dev-program">developer tenant for the entire Microsoft 365 suite</a>, which comes with 25 sample E5 licenses and a 3 month extendable trial window. Super impressed with this offering and goes along the lines of Visual Studio being offered for free too. </p><p>Initially it offered a sample userbase and SharePoint site for a trial, but since I had used the admin tools before I decided to go with the custom install and eschew the trial data, even though it warned on a possible 2 day setup timeframe. Luckily it was provisioned within a minute and sure enough, all the admin controls are available. </p><p>Checking SharePoint and it has a boilerplate communication-style site already set up and admin back end ready to go. </p><p>Jumping straight over to <a href="https://make.powerapps.com/">Power Apps</a> and although it took a little to process, it was also provisioned and looks to be ready for development. Excellent, don't need the developer plan (kinda makes sense since I am already inside a dev plan for the entire tenant).</p><p>Popping over to <a href="https://aad.portal.azure.com/">Azure Active Directory</a> and, as expected by now, it is also provisioned on a Premium P2 license. This will also allow a great sandbox for testing some of the potential dev opportunities at work (PIM springs to mind).</p><p>Overall super happy with the offering.</p><p> </p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-46562128940721550452022-02-02T20:04:00.000+10:002022-02-02T20:04:17.935+10:00TournamentCompare v0.006 - The resurrection<p> Now that I have some time to blow the dust off parked projects, TournamentCompare is back in active development. Since almost 7 years have passed, there has a been a pretty steep relearn and upgrade path to get back into the swing of things. </p><p><b>Visual Studio 2022</b><br />Previously development had been exclusively on the laptop with a full install of VS2012, whereas with the community edition generally available I wanted to move it all over to my main PC. Most of the code came across, but the project had issues reconnecting the local files to the new version of SQLExpress. Rather than tackle the upgrade I assumed the laptop would make an easier upgrade path and, as I was taking it to Andrew's, would be required anyway. Over the course of the resurrection I bounced several times between old-but-working versions and the draw of a shinier interface with more integration. </p><p><b>NuGet Package Management</b><br />On the laptop I was able to easily get the original project cloned and compiled under VS2022, but when I went to test a database field update, the scaffolding options for generating the controller and view failed due to requiring EF 6.4.4. After an hour struggling to upgrade 6.1.1 to 6.4.4 using the NuGet package manager (continually downloaded a 0kb package) I gave up and went back to the old code and VS2012 to at least confirm everything was actually working. As package management would definitely be needed eventually I returned after calming down and it was likely an artifact of storing the data on Google Drive. I didn't have much confidence in the cloned package so I looked to regenerate the project again from scratch. </p><p><b>.NET Framework</b><br />When building a brand new project, the package management issues disappeared, but generating the EDMX and controllers from the SQL database seemed to be completely missing. It turns out that a new MVC project using default settings builds only on .NET Core and all the solutions I found for scaffolding out the model-controller & view were definitely NOT what I'd call helpful. To get a new project with .NET Framework elements needed additional components installed into VS 2022, but once up and running it quickly generated the model, controllers and views as expected. </p><p><b>Bootstrap</b><br />I had re-read some of the initial blog posts and recalled the struggles with enumerated types. Instead of repeating the coding upgrades to maintain data-first capability, I revisited the initial clone of the code on my main PC and resolved most of the database upgrade and connection issues. NuGet was also working to deliver Entity Framework 6.4.4, but failed to clean up the old version properly (restart VS needed). Feeling confident I upgraded all other components and promptly broke the compile with bootstrap giving unexpected object errors. Looking into it, Bootstrap 3.x to bootstrap 5.x is just too big a jump, so chose just to downgrade. </p><p>So after a couple of days it feels like I have revisited and relearned most of the foibles with Entity Framework and MVC to set off and actually make progress</p><p><b>ToDo:</b></p><p> - Get Github integrated so I can develop on PC or laptop<br /> - Confirm everything is able to be published to Azure SQL & Azure apps<br /> - Build a few more tournament templates<br /> - Generate sample tournaments rather than record every single tournament instance when calculating bias. <br /> - Generate bias using running methods for averages, std deviations and other aggregators. </p><p><br /></p><p><br /></p><p> </p><p><br /></p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-10310193959585225022020-10-05T16:31:00.002+10:002022-01-31T08:52:21.147+10:00 Bo'ness Dynasty Pt3 - King Maine McCinaed 'the reveler' of Lothian<p><br /></p><div class="post-header-line-1" style="overflow: visible;"></div>(This is an AAR for Crusader Kings III. Year 867 start with the Earl of Fife - renamed to the Bo'ness Dynasty.)<br /><a href="http://www.vrbones.com/vrbones.com/2020/09/boness-dynasty-pt1-high-chieftain.html">Pt1 - High Chieftan Drystan</a><br /><a href="http://www.vrbones.com/2020/09/boness-dynasty-pt2-high-chieftan-cinaed.html">Pt2 - High Chieftan Cinaed of Lothian</a><div><br /></div><div>Trained as an adequate bargainer, Maine made is name as the life of the party. A dear friend to vassals, foreign rulers and wandering knights, Maine's feasts brought many to Edinburgh and most stayed to add their sword or skills to the glory of Lothian. Under Maine's rule the Bo'ness line strengthened in number and power with most finding desirable matches around the banquet table and landed titles flowing from continued expansion throughout Ireland, England, Norway and Denmark. </div><div><br /></div><div>Although the Bo'ness family tree grew greatly, Maine himself had only one daughter, Anna, through his early years. Maine's dearest held the family hopes of alliance with France together with early betrothals to Armagnac, but by the time the marriage proposal came to fruition Aquitaine had split from Francia, taking Armagnac with them. Adding to the strife, the Bouchard rulers were swayed to Messalianism, a new heretical offshoot of the Christian faith. For this they were hounded and purged through holy war, leaving Anna stranded without a husband. Before Maine could bring her home, Anna's elderly father-in-law, Duke Bouchard, forced another marriage to the young genius, dashing hopes of future children and alliances. This would not do. Maine plotted to bring her home through any means to keep the Bo'ness heir safe. Soon Duke Bouchard died to mysterious circumstances.</div><div><br /></div><div>With Maine approaching 40 and still no male heir to the throne, the marriage to 'Anna the wise' was annulled under suspicion of infidelity. Maine's 2nd wife, Alix de Trainel (also gifted with a marvellous intellect) soon lifted to become a magnanimous host of the ever more impressive feasts crowding the halls of Edinburgh. 2 more daughters graced the family line, but concerns were finally laid to rest when Adam, heir to the Lothian throne, was born with Maine over 45. Alix continued to have children, leaving 8 to share the heritage left behind by the time Maine died.</div><div><br /></div><div>With lineage secured, Maine's final years were devoted to becoming a King in his own right. The kingdom of Alba had flourished in large part to the growing power base of Lothian, but increases in land and levees for Maine also meant increases to his leige. Coupled with King Cinaed V's tight relationship to the Bavarian King, he held a dominant position fielding almost 14,000 men at the height of his power. Another concern was the tanistry elective process limiting kingdom candidates to only those of the Ailpin house; it couldn't be ousted by Bo'ness candidates no matter their standing. An exit strategy had to be found. </div><div><br /></div><div>Maine's opening came with the mysterious death of King Cinaed V to a spider bite, succeeding to King Conchenn. While the new liege had lower prestige and less alliances, he could still field 8,000 souls if needed. Maine's troops had grown to over 6,000, but was unsure how the generally reliable family alliances would hold since all swore fealty to Alba as well. With additional alliances garnered through his children to Wessex and as far-flung as Florence, Maine pressed for independence alone as Conchenn returned from raiding Ireland. The Lothian elite were also bolstered by mercenary warbands to field over 17,000 once raised. As Alba's levees returned to their lands, the Retinue of Hengist and other warbands tore into Gowrie, demolishing the standing army and laying siege the capital. Unable to recall Lothian levees, King Conchernn's army depleted to a measly 4,800 that even his own mercenary hires could not recover from. After the first month the campaign had largely been won, leaving only a few harried skirmishes and sieges to seal independence.</div><div><br /></div><div>Shortly after breaking the shackles of Alba, the Kingdom of Lothian was announced with all lands from Edinburgh to York under rule as well as holdings in Ireland, Norway, Denmark and the Netherlands. As the embarrassment of Alba's sudden fall from dominance over the northern realms sunk in, King Conchernn switched primary titles to the Kingdom of Norway to signify where his power base now lay. Alba is no more. </div><div><br /></div><div>Maine's drunken excesses finally took their toll as the obese king revelled his last feast. King Adam may be young, but has his own destiny and domain to lead now. </div><div><br /></div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAkanq7U0Jq5lONheUilOqakevaCt0xVhKIkRdyGHQkwuQhb-S0mu-8eFgFNeNR0_DmgfgqL6H02k_RiYGoOc-EcoRnGOm3ZEnZuiSu1GA8N7ThzVJsMcfewxBCmy4jhiKgUPHoQ/s928/Boness-KingMaine-death.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="711" data-original-width="928" height="490" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAkanq7U0Jq5lONheUilOqakevaCt0xVhKIkRdyGHQkwuQhb-S0mu-8eFgFNeNR0_DmgfgqL6H02k_RiYGoOc-EcoRnGOm3ZEnZuiSu1GA8N7ThzVJsMcfewxBCmy4jhiKgUPHoQ/w640-h490/Boness-KingMaine-death.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGoyMtx1cXf0SCB75XANWNRY3I3-Wb2huZDy-vEz60w4oQVP5PwYgc61dw7UYEwW5phDrBQ4jlcA60_QKx32agBnmqQ0xp7-ylTHLgD8f54UUSztiCCFKgOFG4E3KXyZ98rEymsg/s947/Boness-KingMaine-map.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="757" data-original-width="947" height="512" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGoyMtx1cXf0SCB75XANWNRY3I3-Wb2huZDy-vEz60w4oQVP5PwYgc61dw7UYEwW5phDrBQ4jlcA60_QKx32agBnmqQ0xp7-ylTHLgD8f54UUSztiCCFKgOFG4E3KXyZ98rEymsg/w640-h512/Boness-KingMaine-map.png" width="640" /></a></div><br /><div><br /></div><div><br /></div>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-58537533730871356242020-09-20T23:09:00.003+10:002020-10-05T11:09:33.200+10:00Bo'ness Dynasty Pt2 - High Chieftan Cinaed of Lothian (This is an AAR for Crusader Kings III. Year 867 start with the single title of Earl of Fife and the start of the Bo'ness Dynasty.)<div><a href="vrbones.com/2020/09/boness-dynasty-pt1-high-chieftain.html">Pt1 - High Chieftan Drystan</a></div><div><br /></div><div><br /></div><div>Cinaed took up the mantle of patron to the Bo'ness line amidst the turmoil of Viking battles for Scotland (Alba) and Northern England. With internal bickering between sons of Ivar the Boneless, other nations descended onto the confusion to tear out a piece for themselves. Cinaed helped himself to most of Lothian to surround his new capital at Edinburgh. Other regions of Ireland and Northumbria also came under the control of the Duke of Moray to add to Alba's dominance of the northern lands. </div><div><br /></div><div>In between local skirmishes and clams on the mainland, Cinaed also strengthened his presence on the Nordic coastline to completely supplant the Danes all the way to the Finnish peninsula as well as all mountain passes over into Swedish lands. </div><div><br /></div><div>Mercia moved in on Danes holding York to put even more pressure on established viking conquests. Cinaed also saw the opportunity to move in and take the prized capital of York, but missed the opportunity to compliment it with the fertile lowlands around Leeds, with the West Riding capital ceding to Mercia. Spoils were split on the Lancastrian coast as well with Cinaed holding Westmorland and the rest falling to an expanding Mercia. </div><div><br /></div><div>All was not happy families within the Alban Kingdom as easy Danish targets dried up. Strife started with the Earl of Lennox declaring rightful ownership of the Irish lands of Oriel, held by Cnes Bo'ness along with her norwegian estates in Traendalog. Mormaer Tadg from Atholl supported the claim to add vastly superior numbers to the equation and tore through the local Oriel defenses. With no formal alliance to assist, Cinaed changed tack and found an avenue to claim Lennox itself through somewhat dubious heraldry. He pressed the claim immediately and swept through the midland holding with ease and pushed into Atholl while their forces were preoccupied overseas on the nordic coast. As they pinned Cnes's troops into a final pitched battle, word reached Flaithbertach Neill that his domain is no more and, as a landless lord, his claim to Oriel is no longer valid.</div><div><br /></div><div>Even though a few more petty claims over Danish lands rounded out the Cinaed's reign as one of expansion, the internal fractures of Alba hinted at an independent future for the Bo'ness line. </div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMpsEkKFITBw9Hn2kJWPE6bDoh7-g59J33h5LDL_DCkFjpU-ZhCXk38iauTJe3a_AsktrCFA_EtbkQ4Viysg_rwZQGv-RawVqxzEIC1CGEfy9xS30Ie46O69NcMTOkTmdrrkpVSA/s926/Annotation+2020-09-20+214241.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="705" data-original-width="926" height="453" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMpsEkKFITBw9Hn2kJWPE6bDoh7-g59J33h5LDL_DCkFjpU-ZhCXk38iauTJe3a_AsktrCFA_EtbkQ4Viysg_rwZQGv-RawVqxzEIC1CGEfy9xS30Ie46O69NcMTOkTmdrrkpVSA/w594-h453/Annotation+2020-09-20+214241.png" width="594" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgipLBp_nult7cLK8XPyGCv_jlSdpX0ZPOz2tKzpW2vqAJP8UqMObIC4xYnXuxqiDYbmvhoZHqRfkD9z_GdAy44CZf1rh0hUPtOD64EwNtVAqMjzI2VktSbubn54tyVbK6C_iCu8g/s1044/Annotation+2020-09-20+214825.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="798" data-original-width="1044" height="454" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgipLBp_nult7cLK8XPyGCv_jlSdpX0ZPOz2tKzpW2vqAJP8UqMObIC4xYnXuxqiDYbmvhoZHqRfkD9z_GdAy44CZf1rh0hUPtOD64EwNtVAqMjzI2VktSbubn54tyVbK6C_iCu8g/w593-h454/Annotation+2020-09-20+214825.png" width="593" /></a></div><br /><div><br /></div>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-42894337448448013682020-09-13T04:02:00.004+10:002020-09-13T08:46:30.414+10:00Bo'ness Dynasty Pt1 - High Chieftain Drystan<p> (This is an AAR for Crusader Kings III. Year 867 start with the Earl of Fife - renamed to the Bo'ness Dynasty.)</p><p><br /></p><p>Drystan is the earliest known landholder for the Bon'ess Dynasty. Although there is no record of his early life or even how he came to hold the Mormaerdom (Earldom) of Fife, Drystan is likely to have come from Gaelic tribal lands between Edinburg and Linlithgow during the time of viking raids and great upheaval. </p><p>Under the Kingship of Causantin II of Alba, Drystan had relative independence and sought a path to take over Edinburg to claim his homeland. With Ivar the Boneless raiding from the west and Jorvik pushing up from York, Drytan's meagre army could not hold claim for long on the Lothian capital, and eventually fell to Danish hands along with Northumbria. Disheartened, Drystan looked to Linlithgow instead. </p><p>Both Sterling and Linlithgow were held by fellow vassal MacMuirdach. Although internal fighting was not unheard of, MacMuirdach held double the lands and could command almost 1000 tribesmen. Through marriage of Drystan's youngest son into the line of Prince Rhodri 'the great' of Gwynedd, the alliance yielded almost 2000 men to call upon and press the homeland claim. Stirling would fall 5 years later.</p><p>With Danish kings vying for Ireland, a small window of opportunity opened to allow Drystan to pinch Oriel from one of the smaller invaders. Alba also allied with Meath to control the top of Ireland until Bjorn 'Ironsides' headed west and dominated. </p><p>Alba turned back to the mainland and forced claims on Strathearn's heart, taking Glasgow from the independent Kingdom. Drystan followed in on the weakened Cumbrians to pick up Kyle and surrounds, leaving Carrick and Galloway to fall soon after to Ivar the Boneless, giving continuous land from east to west across Scotland.</p><p>As a more established Earl and finding favour with Moray, Drystan continued tussels with smaller independent Danes on the Nordic coastline, gaining foothold in Bjorgvin and pushing north all the way round to Raumsdale. Enough land was gained to usurp the Vestlond title and elevate Drystan to High Chieftan. </p><p>As an ill-fated holy war between Alba and The Isles was drawing to a close, Ivar the Boneless succumbed to injury and left his nation shattered between siblings. With Lothian falling to Jarl Godfrid separate to The Isles, Drystan pounced on the opportunity to take entire duchy in one bold claim. Calling on all allies and additional mercenaries the weakened Danes fell to a 4,500 strong army, but before the final sieges ran their course Drystan succumbed to old age. His dream of ruling from Edinburgh came 3 months later for the Bo'ness line. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmcFiLOGc9RMwIDaWvNQu7QFEENsG7431fdKtNptt4G_licZBrtulW3cMOTrlDyIVH8hqUhbssK2LhDphFhjEY50gFqhFkF4yQuqoGBFK5h-oavf4oXoaYIJ-M4Rh7cULfVNlwzw/s929/Boness01-High+chieftain+Drystan_cropped.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="662" data-original-width="929" height="445" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmcFiLOGc9RMwIDaWvNQu7QFEENsG7431fdKtNptt4G_licZBrtulW3cMOTrlDyIVH8hqUhbssK2LhDphFhjEY50gFqhFkF4yQuqoGBFK5h-oavf4oXoaYIJ-M4Rh7cULfVNlwzw/w625-h445/Boness01-High+chieftain+Drystan_cropped.png" width="625" /></a></div><br /><p><br /></p>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-75932006615605871292020-06-16T21:40:00.001+10:002020-06-16T21:40:25.223+10:00Nothing can stop a cheater?A recent discussion on the <a href="https://www.capitalism2.com/forum/">Capitalism Lab forums</a> led to the issue of optimising vs exploiting vs cheating in single player games. Below is a response to this quote:<div>
<br /></div>
<div>
<blockquote class="tr_bq">
While I think there is room for exploitation, in the end this comes down to the desire of the player for fair game - nothing can stop a cheater from cheating. - <a href="http://www.capitalism2.com/forum/viewtopic.php?f=52&t=7024&p=28934#p28934">JasonLJ on BankingDLC</a></blockquote>
<br />
<div>
<br /></div>
<div>
As a starting point, the simplest way to define cheating is operating outside the rules. In a computer game the rules are set by the designer and embedded into the simulation. In general this also means that you can interpret cheating as "operating outside the simulation", given the provision that if there are unintended consequences (bugs, etc) the designer can rectify them to clarify / enforce the rules.</div>
<div>
<br />On top of the simulation rules there can also be additional "house rules" where players in corporate or individually agree to abide by different rules to achieve a different goal to that which the designer intended. This can be anything from custom mods, scenarios, competitions, the obligatory "one city challenge" in Civ, to someone choosing to only buy and sell purple items. In this case it is the responsibility of the agreeing parties to enforce the rules and if this cannot be done absolutely through the simulation (Eg: turning off all imports at a port for a tougher CapLap challenge) then a level of trust that all players are "playing fair" starts to exist. Note that most sports and even collaborative play operate in this space.<br /><br />Saying "nothing can stop a cheater" isn't quite right. The simulation space can be hardened against attacks from outside of the simulation, and within the simulation it is almost completely possible to stop cheating by encoding the rules into the simulation.<br /><br />Now from the other side:<br />Within the simulation, the aim is to optimise play to maximize whatever the winning criteria is defined to be. In a competitive sense this is the heart and soul of the challenge and the main striving factor. To achieve greater and greater optimization requires deeper and deeper understanding of the rules (and therefore the simulation) and the skills needed to execute optimal play.<br /><br />This still holds true for "house rules" games, although if there are rules that need to be enforced from outside the simulation, the line between "breaking the rules" and "optimal play" is not as clear cut and opens a window for debate about what is or isn't "fair play".</div>
<div>
<br /></div>
<div>
With JasonLJ's comment:<blockquote class="tr_bq">
Cons<br />- Could be exploited by some players to bankrupt AI competitor banks. However, this is a matter of "willingness to cheat" not "capability to cheat" - even if deposit cap was 20%, players who wanted to use the same trick to cause a liquidity crisis with AI firms could still do so.</blockquote>
<br />There are 2 different angles to view the question of cheating (not sure which one Jason is using, but both are worth discussing anyway):<br />- If Jason is referring to "tricking" the AI because they don't know how to handle it, then Jason is expressing the fact that any other player wouldn't fall for that, or, more officially, the AI is not playing like a real company would in the real world. Jason is expressing a desire to play with a house rule of "only do what would work in the real world", therefore taking advantage of a dumb AI would be cheating. Unfortunately since CapLab is actually trying to simulate the real world, there is some legitimacy in thinking that the game you are playing is operating under the same rules as the real world, however this isn't the case; the game's rules are enforced by the simulation. That said the designer should, as much as possible, encapsulate the desirable rules from the real world and embed into the simulation to enhance the simulation's relevance to people with this particular house rule. In the scenario above, making the AI aware of their liquidity risk exposure would remove this element of cheating from those expecting the "real world" house rule regardless of any changes to the deposit cap.<br /><br />- But what if the AI knew about liquidity risk exposure and still got itself into a vulnerable position? Would it then be Ok to punish them? What if the the player got into a vulnerable position, would/should the AI bankrupt them? If Jason was thinking that the ethical choice of intentionally bankrupting someone is available in the game but classified as cheating, then he is putting a new house rule in effect; "Don't bankrupt opponents". Once again the designer COULD choose whether this rule is enforced in the simulation through some sort or anti-competitive behaviour legislation and enforcement (as would likely happen in the real world).<br /><br />Although it sounds like I'm advocating a wild-west anything-goes-inside-the-simulation approach, it's more the opposite that the designer has the LUXURY of controlling exactly what is or is not simulated, what rules are or are not enforced, what ethical choices do or do not appear, and what learnings the player can take away from the game to apply to the real world. Ideally all players uptake the rules as intended, obviating the need for house rules and potentially divergent views on how to play the game.<br /><br /><br />Onto the game-breaking strategy:<br />As mentioned I generally play single-player games until I "break" them by discovering a strategy that guarantees a win, because all that is left is to execute the strategy over and over again. What I REALLY enjoy are complex games where the balance allows a variety of strategies packed full of interesting choices along the way. CapLab is one of those games and I've been playing on and off since the original Capitalism. When I started using the land pre-purchase strategy it felt wonky, but somewhat believable since it seemed to simulate the land-developer mindset. After investigating exactly what was going on and finding the edge cases (especially infinite money generators) it seems FAR more likely that this is unintended and would be classified as a bug or at least needing clarification / enforcement of the intended rules. If so, I look forward to a new version with many more optimising challenges ahead.<br /></div>
</div>
VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-18749992354855787812019-08-13T00:10:00.000+10:002019-08-13T00:10:08.163+10:00TournamentCompare v0.005 prepA recent <a href="https://www.youtube.com/channel/UC1_uAIS3r8Vu6JjXWvastJg">Math binge</a> has brought me back to predicting confidence levels in the montecarlo method approach to assessing what the bias is in a tournament. Previously I had kept a running total of averages as 1000's of randomly seeded tournaments rolled by, but it looks like I can also keep a <a href="https://www.johndcook.com/blog/standard_deviation/">running standard deviation</a>. Once I have both the sample standard deviation and the number of tournaments sampled, I should be able to calculate the <a href="https://www.mathsisfun.com/data/confidence-interval.html">95% confidence interval</a> for the trial. Hopefully I can blow the dust off the old code and get it running again. VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-54620276798035814262018-12-02T22:12:00.000+10:002018-12-05T22:13:22.916+10:0014.5Although I missed an excellent opportunity to hit Burners after work for 30+Kn, Sunday was almost ideal for Burners with a full tide at 4pm and winds above 20Kn. First session felt good, but not as special as 2 weeks ago and I greeted a 13.1m peak height with a knowing nod. At least it's the Burners record by a fair way.<div>
<br /></div>
<div>
Francis came down for a late session and I'd recovered enough to hit it once again. Unfortunately the wind was down a few knots and it really felt the heights weren't there. Luckily a strong surge for about 2 mins launched me unexpectedly up above the trees. A few more boosts through the surge saw me up over 14.5m! another PB!</div>
<div>
<br /></div>
<div>
Of the 4 boosts during the surge, the most telling was the 2nd one of only 12.1m where I distinctly remember being pulled off my edge in the leadup. Although I was still riding fully powered, it's the first sign that I might be getting close to the peak wind performance of the kite. The next jump I'd held my edge better and that's what registered the 14.5 monster. 15m is definitely on the cards, but going past that will need better technique. </div>
VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-50631370886306400722018-11-18T21:57:00.000+10:002018-12-05T22:15:07.133+10:00Woo rank #1After an excellent demo over a year ago, I have had my sights set on an Ozone Edge v9 as my next potential kite. The problem had been that the 10m Edge that I tested felt like it provided the power of my 14m Bandit, yet nimble like my 10m Bandit. Do I get one kite that replaces both? I wasn't willing to give up on the Bandits that soon. Fast forward a good 9 months and the Bandit's had their fair share of running repairs that kept them out of the sky. It finally feels like the maintenance is going to be costing more than replacement. The last piece to fall was a bit of a discount through Wardy.<br />
<br />
The first session was great. 10.1m jump off a pretty average session (maybe 18Kn winds) at Elliott. I'd settled on a slightly larger 11m Edge to mainly knock out the 14m Bandit and keep just a bit more sail up in the sky for boosting in the standard 20kn range, and it immediately felt like it was going to bring in the height department.<br />
<br />
Unfortunately the next few outings were in lighter winds, and it wasn't as good at the low range as expected. Admittedly I was sometimes the only one out on the 11 when others on 12's and 14's were parking, but it didn't quite have the bottom end of the 14 Bandit as I'd hoped.<br />
<br />
18th November was the weekend I was waiting for; steady 20+Kn winds with a full tide to really push the kite into boost mode. After 2 hours on the water I came in and downloaded the woo stats hoping for at least a new personal best. C'mon, 10.5 metres! 12 possibly? The reading floored me. 13.7 metres! a new PB by over 3.5m. Maybe an outlier? Nope, analysis of the session showed several boosts over 12m and the 11 over 11m badge. YES!<br />
<br />
As it happened the day was also the QLD boosting comp down in Brisbane. I kept refreshing to see the boosts come in and was pleasantly surprised that they maxed out at 11m. WINNING! Granted I wasn't at the event to share the exact conditions and had over 2 hours to put in a good one, but it looked from the reports to be close enough to give me hope I'm in the right ballpark. Maybe February's <a href="https://www.facebook.com/events/184819965751647/">Wind Slasher</a> and state freestyle titles might have a boost off?<br />
<br />
The day rolled into night and I stayed above the rest. More due to WA missing out on their normal 25+ winds than anything else kept me and David (boosting at Lake Weyba just down the coast) out in front to claim my first (and probably only) daily win on the woo charts:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYdJSH_-dKAlAD4cc7B4chzHy_-qYcew_S88raY1ok-C60pw5Coe-JPzDWBMBNNXsLb_9n6tDQZYvFm9Cywdbg-WM6OG4MEsDrDVtyuO5OA6ND5EAjOjbYRBY6Xqwo1XvaTA-tVA/s1600/WooAus1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="749" data-original-width="738" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYdJSH_-dKAlAD4cc7B4chzHy_-qYcew_S88raY1ok-C60pw5Coe-JPzDWBMBNNXsLb_9n6tDQZYvFm9Cywdbg-WM6OG4MEsDrDVtyuO5OA6ND5EAjOjbYRBY6Xqwo1XvaTA-tVA/s320/WooAus1.PNG" width="315" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Another notable improvement was my overall rank. previously a 10.2m still had me in the bottom 33% of all Woo owners, but moving to 13.7m put me right up into the top 20%. There must be a massive bubble of people about the 11-12m mark, which likely means that there's a typical peak jump on standard equipment at that mark. The Edge is certainly the catalyst for going bigger as my technique hasn't changed much in the past 2 years. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Also notable was that I still has the Edge fully powered all session. I'm pretty sure I can hold down another 5Kn, which means going higher is definitely possible. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-38833239241698607702018-07-22T07:54:00.003+10:002018-07-22T13:43:01.804+10:00Send out the disciples<br />
<br />
There was a group of people who wanted to establish a new Surf Life Savers Club on a new beach: <br />
<br />
<ul>
<li>Between them they gathered enough funds for a building.</li>
<li>Turned up weekly to go inside and practice</li>
<ul>
<li>Marching in straight lines,</li>
<li>Overhead line pass</li>
<li>Brought in specialists. Famous names.</li>
<li>Taught the theory of swimmingSwimming while holding another afloat</li>
<li>Talking calmly to others to let them know that the shoreline isn’t too far away.</li>
</ul>
</ul>
<br />
Months of training. Years of training. Yet they didn’t enter the water once, and people kept drowning. <br />
<br />
In the reading today we hear Jesus equipping and sending out his disciples:<br />
<br />
<blockquote class="tr_bq">
<b>Mark 6:6-8 </b>Then Jesus went around teaching from village to village. Calling the Twelve to him, he began to send them out two by two and gave them authority over impure spirits. These were his instructions: “Take nothing for the journey except a staff—no bread, no bag, no money in your belts</blockquote>
<br />
Jesus’ instructions seem to be an odd way to equip your followers. No food (not even a lunchbox) no bag, no money. But he did equip them with spiritual power. The authority over demons was the main tool needed for this journey. The rest is not a concern right now. It will be provided when the time comes. Have faith. The point is to go. Right now. 2 by 2.<br />
<br />
And they should have had faith. By this time they had been with Jesus for about a year. They had seen him start off his ministry and drive out impure spirits, then go on to heal the sick, then those with Leprosy, even the paralysed. They had front row seats to see Jesus exercising his authority.<br />
<br />
So did they Go? Yes, yes they did.<br />
<br />
<blockquote class="tr_bq">
<b>Mark 6:12-13</b> They went out and preached that people should repent. They drove out many demons and anointed many sick people with oil and healed them.</blockquote>
<br />
That authority was real and evident in them.<br />
<br />
So what about us disciples gathered here in the present. Do we feel trained and ready? Do we feel confident to step outside in faith? Or are we more like the surf life saving club afraid of the water?<br />
<br />
If these services each Sunday were training sessions, how many would you need to feel ready? Here’s an experiment. Close your eyes and think how many years you have been a Christian. A rough guess is fine. Now half that number (divide by 2), then multiply by 100. That’s roughly how many hours spent in church. <br />
<br />
Not only that we have the bible with us. An instruction book that even tells us how it’s going end. <br />
<br />
Yet sometimes it feels like we’re strangely inadequate (myself included), unable to head out in faith, to seek and save the lost. <br />
<br />
There was a period where the disciples from Mark’s gospel faltered. They watched their source of power be falsely accused, be stripped and humiliated, and laid bare on the cross. They ran away, their faith all but gone. <br />
<br />
But Jesus wasn’t done with them, and he’s not done with us. Rising again Jesus not only claimed authority over death, but authority over everything. When ascending up to heaven he repeated the sending out: <br />
<br />
<br />
<blockquote class="tr_bq">
<b>Matthew 28:18-20</b> Then Jesus came to them and said, “All authority in heaven and on earth has been given to me. Therefore go and make disciples of all nations, baptizing them in the name of the Father and of the Son and of the Holy Spirit, and teaching them to obey everything I have commanded you. And surely I am with you always, to the very end of the age.” </blockquote>
<br />VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-28234925569930985422017-10-05T07:31:00.000+10:002017-10-05T07:31:48.327+10:00Actions speak louder than wordsThis is a sermon based on <a href="https://www.biblegateway.com/passage/?search=matthew+21&version=NIV">Matthew 21:23-32</a> : <div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<blockquote class="tr_bq">
<b>The Authority of Jesus Questioned</b><br />23 Jesus entered the temple courts, and, while he was teaching, the chief priests and the elders of the people came to him. “By what authority are you doing these things?” they asked. “And who gave you this authority?”<br />24 Jesus replied, “I will also ask you one question. If you answer me, I will tell you by what authority I am doing these things. 25 John’s baptism—where did it come from? Was it from heaven, or of human origin?”<br />They discussed it among themselves and said, “If we say, ‘From heaven,’ he will ask, ‘Then why didn’t you believe him?’ 26 But if we say, ‘Of human origin’—we are afraid of the people, for they all hold that John was a prophet.”<br />27 So they answered Jesus, “We don’t know.”<br />Then he said, “Neither will I tell you by what authority I am doing these things. </blockquote>
<blockquote class="tr_bq">
<b>The Parable of the Two Sons</b><br />28 “What do you think? There was a man who had two sons. He went to the first and said, ‘Son, go and work today in the vineyard.’<br />29 “‘I will not,’ he answered, but later he changed his mind and went.<br />30 “Then the father went to the other son and said the same thing. He answered, ‘I will, sir,’ but he did not go.<br />31 “Which of the two did what his father wanted?”<br />“The first,” they answered.<br /><br />Jesus said to them, “Truly I tell you, the tax collectors and the prostitutes are entering the kingdom of God ahead of you. 32 For John came to you to show you the way of righteousness, and you did not believe him, but the tax collectors and the prostitutes did. And even after you saw this, you did not repent and believe him.</blockquote>
<h2>
<br /></h2>
<h2>
2 Kids</h2>
<br />When the father asks his 2 sons to help out, one says he will do it and then doesn’t, the other son says he won’t do it, then eventually turns around and does it. Who did what the father wanted? <br /><br />When Jesus posed this question to the religious leaders, they answered by choosing the son who eventually turns around and helps out. Do you agree? <br /><br />I’m sure the parents among us see this as a simple yes. From the Father’s perspective there is work to be done, and at the end of the day, no matter what was said, the work just has to be done. If not by the sons then, most likely, by the Father. <br /><br />It’s disappointing to hear your son whinge and whine about doing what was asked, but it’s even more disappointing to be told it’s all under control and find out later on that nothing got done.<br /><br />Actions speak louder than words. <br /><h2>
Hypocrites</h2>
There is a name for people who say they are going to do something and then don’t. Anyone know? Hypocrites (Politicians?)<br /><br />The word “hypocrite” was originally used to describe a greek actor about 400 years before Jesus. These actors would literally have a mask on to display the type of person they were portraying and their mood. This is a happy scene? Wait a minute and I’ll just go get my happy mask. From there the word branched out to cover people that hid behind a figurative mask; people looking happy even when they were sad, people saying one thing and doing another, people hiding their true intentions. <br /><br />As an aside: Politics? Demosthenes, a respected politician in Athens ridiculed Aeschines because he used to be an actor. An untrustworthy man used to hiding behind a mask. A hypocrite. They have no place in such a respected profession... <br /><br />Jesus had branded the Pharisees as hypocrites several times, but they weren’t alone. Earlier on in the chapter, Matthew writes about Jesus entering the temple. What appears from the outside to be a magnificent structure and the spiritual centre of the Jewish religion had been infested with moneymakers. A den of robbers. After that Jesus came across a fig tree. All leafy and green on the outside, but no fruit at all! What good is it!? <br /><br />Now the Jewish leaders and elders come to Jesus to ask about his authority, but Jesus has a question back: where did John’s baptism come from?<br /><blockquote class="tr_bq">
They discussed it among themselves and said, “If we say, ‘From heaven,’ he will ask, ‘Then <b>why didn’t you believe him?</b>’, But if we say, ‘Of human origin’—we are <b>afraid of the people</b>, for they all hold that John was a prophet." </blockquote>
<blockquote class="tr_bq">
So they answered Jesus, “We don’t know.”</blockquote>
<br />Both answers show that deep inside, they really just wanted to maintain their OWN authority in the sight of others. They don’t want to be ridiculed and are more interested in saving face than actually seeking the answers they asked for. An outward appearance of seeking God, while an inward selfish preservation of the status quo. <br /><br /><h2>
Repenters</h2>
So what of the second son, the one who said no, but later went and helped? Isn’t that hypocrisy too?<br /><br />It’s interesting to read that something happened between the second son’s response and his action: <br /><br /><blockquote class="tr_bq">
29 “‘I will not,’ he answered, but later he <b>changed his mind</b> and went.</blockquote>
<br />The son quite possibly had every intention of not helping, but something changed his mind. He dropped his selfish ways and turned back to the request of the Father. <br /><br />Jesus drives home the parable: <br /><br /><blockquote class="tr_bq">
Jesus said to them, “Truly I tell you, the tax collectors and the prostitutes are entering the kingdom of God ahead of you. 32 For John came to you to show you the way of righteousness, and you did not believe him, but the tax collectors and the prostitutes did. </blockquote>
John the Baptist was preaching about repentance, which, in the original greek, can also mean a “changing of the mind”. Those that started out disobeying the will of the Heavenly Father, the crooks and whores, were the ones that changed their minds. They were the ones that went. They were the ones that started to do the will of the Father, They were the ones bearing fruit. <br /><br />Of the 2 sons, the hypocrite and the repenter, which one are you? I’ve been a Christian all my life, I’m now an Elder. Like it or not, I identify more with the religious leaders in this story than the lost-and-now-saved. Am I a hypocrite? Do I say one thing and do another? Sadly, sometimes the answer is yes ... <br /><br /><h2>
The real hypocrisy - not seeing the need to repent.</h2>
<blockquote class="tr_bq">
32 For John came to you to show you the way of righteousness, and you did not believe him, but the tax collectors and the prostitutes did. And even after you saw this, <b>you did not repent and believe him</b>.</blockquote>
Our heavenly Father had offered John’s message to the Jews, yet those most entwined in the Law failed to act. They believed their words and actions kept them in high regard, yet ALL fail to meet the perfection required. There was only one whose actions carried out the will of the Father perfectly, Jesus. <br /><br /><div>
Even from an early age the bible says Jesus had a thirst for God’s Word. We hear that he stayed in the temple soaking up the Jewish teachings, discussing and debating with the religious teachers of the time. He prayed to His Father, especially before big events, to keep the lines of communication open. <br /><br />Jesus loved others. He wasn’t afraid of how it looked to eat with tax collectors and sinners, he saw the need in others and acted. Even to the end, in the garden Jesus prayed “Let not my will but Your will be done”. Loving us enough to lay down his life. <br /><br />Jesus message echoed John’s. Repent and believe. All have sinned and all need saving. I have come to seek and save the lost. Through my sacrifice you can be made whole with the Father. Through my sacrifice you can walk with him in the garden again. Turn from you ways and remain with the Father. Change your mind to be in tune with the Father. Don’t just say you’ll love other, actually love others! <br /><br />Father, change our minds so that we are always listening for your call. <br />Father, change our minds so that we have the courage to answer “Yes, you can count on me” <br />Father, change our minds so that we do what you ask.<br />May our actions speak louder than words. </div>
<div>
<br /></div>
VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-84017972219714072652016-08-21T21:59:00.000+10:002016-12-14T06:28:18.811+10:00Introduction to Adaptive Grids<b>Summary: </b><br />
Adaptive Grids are a procedural generation technique for area and point based topologies that can expand to n-dimensional space.<br />
<br />
<b> Preamble: </b><br />
Although ROAM was a technique that inspired temporal ROAM (Later, <a href="http://www.vrbones.com/2008/11/vrworlds-procedural-world-generation.html">VRWorlds</a>), there has been an unresolved question on how to adapt the self-similarity of right triangles to 3 dimensions and above. I’ve been considering a square / cube based approach that exhibits the near-parent properties of ROAM, but have usually run afoul of being unable to conceptualize it into a working model past the main recursive function. A breakthrough in going from 3x3 to 4x4 grids as a starting point has spawned a lot of additional pieces to fall into place.<br />
<br />
<b>Introduction: </b><br />
<a href="https://en.wikipedia.org/wiki/ROAM">Realtime Optimally Adaptive Meshes</a> (ROAM) have certain key features when attempting to build procedurally generated content (like terrain).<br />
- Scaleable depth: ROAM allows one part of the map to be generated more deeply than another part of the map. This is important in terrain generation as a potentially infinite terrain can be generated without infinite memory / storage requirements to generate the entire world at the proposed granularity.<br />
- Deterministic depth: ROAM can be configured to always return the same division given the same parents. This allows the scaleable depth to continue to generate the same result given a very high level starting parent set, which in turn allows ROAM to roll up and forget previously expanded areas in favour of the currently viewed area.<br />
- Continuous mesh deformation: Any change made by ROAM continues to keep the mesh cohesive and continuous due to the reliance of splitting pairs of right triangles together based on known parents. This largely removes issues of creasing and tent-poling inherent in many terrain generation techniques.<br />
Adaptive Grids attempt to mimic these traits, but be based off a grid (of squares for 2-dimensional space, cubes for 3-dimensional space, etc).Continuous mesh deformation is currently not retained for the eventual mesh itself, but utilises parental involvement to remove creasing.<br />
<br />
<b>Adaptive Grid core algorithm:</b><br />
(The algorithm is explained for a 2-dimensional surface using squares. Extensions to higher dimensions are trivial, but covered formally later.)<br />
Given a set of parents arranged in a 3x3 grid of squares, the Adaptive Grid generates a 3x3 grid ½ the size centered on the middle square. The new squares rely on the parents that they overlap with. This means that the new middle square is determined solely by the middle parent; the new cardinal squares are determined by the middle square and the adjacent parent (Eg: New square to the north requires the middle parent and the northern parent); and the new corner squares are determined by the middle square and the 3 other parental squares in that diagonal direction (Eg: New square to the NorthEast requires the middle, North, East & NorthEast parents).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3fwnLgDTVumAy9XI_3khb8S0en5LHlZTllx7sM-tVjXXyfJJVldllWt9D9b1JVma0KewcpPI4PUz_dNlC0qVeJ7FmODITnOzZiMa8VLCp-WFEHS0er8XzCnIA2M8dLD6AJBHXqA/s1600/3x3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3fwnLgDTVumAy9XI_3khb8S0en5LHlZTllx7sM-tVjXXyfJJVldllWt9D9b1JVma0KewcpPI4PUz_dNlC0qVeJ7FmODITnOzZiMa8VLCp-WFEHS0er8XzCnIA2M8dLD6AJBHXqA/s320/3x3.JPG" width="320" /></a></div>
<br />
Since the algorithm produces another 3x3 grid at a deeper layer, the algorithm can be recursively applied to create an arbitrary depth.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWYCoeAGMRE2ukqwD7Ou48GykdeuKeWZX6QpIJGXOJVhzUrbQz-mWrnV4oWxeXBP8dAe4u-Hy2WrCV3UX1j8moZsS2HF5dNrUjLp4oMh7GOxyN5REb8_S0x7KvkqzFsz0Rzwr8Dg/s1600/3x3recursive.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWYCoeAGMRE2ukqwD7Ou48GykdeuKeWZX6QpIJGXOJVhzUrbQz-mWrnV4oWxeXBP8dAe4u-Hy2WrCV3UX1j8moZsS2HF5dNrUjLp4oMh7GOxyN5REb8_S0x7KvkqzFsz0Rzwr8Dg/s320/3x3recursive.JPG" width="320" /></a></div>
<br />
<br />
<b> Top Layer: </b><br />
If a top layer of 3x3 is used to initiate the algorithm, it can continue to develop infinite depth, but no method of developing breadth of grid when at an arbitrary depth. Any requirement to develop anything other than the centre grid requires the rebuilding of another parent in the previous layer to make the requested square a centre square. The parent would also require a grand-parent in the layer above, and so on, eventually breaking due to the absence of a parent outside of the initial 3x3 layer.<br />
<br />
To allow a defined space for breadth generation, the Adaptive Grid is initiated with a 4x4 grid. This allows the generation of a grid of arbitrary size or arbitrary depth to be generated within a 1x1 size square centred on the midpoint of the 4x4 grid. (Eg: an initial grid of 4x4 squares of 128 unit length can generate a 64x64 grid with 2 unit length inside a 128x128 space centered on the middle of the initial grid)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioxrqD8ln8EKkVHS-Z8RUXZZkPU5q-1_101ot5uC2QEUAFcWCkmUFHvix7HDzo6y-EunpErXaA62wC9GZkLAKQ52VlVlBCCIVgvKRcJ_1SmKQVdo49Gls9KkXxFu0WHCW_sG2lhQ/s1600/4x4asymptote.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioxrqD8ln8EKkVHS-Z8RUXZZkPU5q-1_101ot5uC2QEUAFcWCkmUFHvix7HDzo6y-EunpErXaA62wC9GZkLAKQ52VlVlBCCIVgvKRcJ_1SmKQVdo49Gls9KkXxFu0WHCW_sG2lhQ/s1600/4x4asymptote.JPG" /></a></div>
<br />
<br />
<b> 4x4 grid layer progression: </b><br />
When initiating an Adaptive Grid with a 4x4 layer, the amount of squares in each fully expanded subsequent layer increases with this observed sequence:<br />
<br />
<table>
<tbody>
<tr>
<td>Layer 1</td><td>Layer 2</td><td>Layer 3</td><td>Layer 4</td><td>Layer 5</td>
</tr>
<tr>
<td>4</td><td>5</td><td>7</td><td>11</td><td>19</td>
</tr>
</tbody></table>
<br />
The calculation for each layer follows the sequence: Layer(n) = Layer(n-1)*2-3<br />
<br />
<b> Proof of defined space:</b><br />
Since the child 3x3 grid is located centrally over the parent 3x3 grid, the middle child is a direct shrinking of the parent middle square. Continued shrinking makes the centre square reduce the area around the centre point, but never will reduce the centre point to nothingness or deviate from the centrepoint. The sides of the square asymptote to the central point. Since the side length of each square is the same across the entire grid, as the middle square side length reduces toward 0, so too does the outer squares. Therefore the outside of the outer squares also asymptotes toward the central point, which is 1.5 units in from the outside of each outer square.
<br />
<br />
Applying this asymptote to a 4x4 grid means that the outside of the outer squares will only ever need to be brought in by 1.5 units when creating a grid of infinite depth. Removing 1.5 units from the borders of the 4x4 grid leaves a 1x1 unit area that cannot be reached, thus leaving the area to be rendered by an arbitrary grid size (Eg: If the requirement for a 1000x1000 grid is needed covering an area of 100 m2 (side 10m), a starting Adaptive Grid of side 40m or larger is required).<br />
<br />
Simple <a href="https://scratch.mit.edu/projects/118663578/">Scratch application to help demonstrate Adaptive Grids</a>VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-31141695453013070382016-04-10T02:22:00.002+10:002016-04-10T02:22:55.242+10:00Darkest, Darkest Dungeon - The Hamlet, The Ruins<h2>
The Hamlet</h2>
Much work to do. Once a bustling hive of activity, the hamlet offered little in service. It, too, had felt the harsh sting of my lineage’s demise. Boarded up and left to time’s grasp. Rising above the rooftops our mansion silhouetted the sky with exposed beams like festering claws. No place to stay anymore.<br />
<br />
We need fresh souls to infuse life into this dilapidated estate, and for that, a restoration of the stagecoach network is my first priority. With deeds and crests of sovereignty, the veins of commerce were once again revived.<br />
<br />
Canouville was the first to alight into our bleak domain, an aspiring Vestal with judgemental vigor. Raoullin also made the journey, but his proclivity to plague made for an awkward commute. Our assembly is enough to embark upward into the ruinous remains of my bloodline.<br />
<br />
<h2>
The Ruins</h2>
With limited provisions we set out to my ancestral home. Gothic architecture rising above once demanded respect, now webbed in neglect it portrayed a more sinister abode. Leading the way through the grandiose entrance, I halted at the sight of candles bracing a raised altar beneath a muralled monk. Lit candles. Apprehensive we scanned the foyer, but skeletal remains adorning the windows only indicated a prior, more murderous occasion.<br />
<br />
Ever east through creaking door to a corridor festooned with derelict shelves of vellum and decaying plaster. Still nothing, but the tension eats into Dismas and I as we exchange nervous glances. Of note, an unburned torch held aloft, poised for a task long forgotten. We will give it purpose again.<br />
<br />
Up ahead, a strongbox placed proudly in the vaulted chamber drew our gaze while a rabble of bones lurched toward us in animated fits. “To Arms!”<br />
<br />
Raullin, silent as ever, reacted first with a puff of emboldening vapours to break my shocked condition and keen the senses. Dismas drew and fired forcefully, splintering bone and exploding whatever foul mastery held its frame together. “Back to the Pit!” He raged. I followed with my own critical smite to blanket the floor with unholy remains. They CAN be fought, they CAN be beaten!<br />
<br />
Our attention turned to the reinforced chest. Surely no sober logic leaves this prize so openly on display? A trap? Dismas dared the lock with well-seasoned expertise and proffered up coin, scriven records of land grants and an unlikely shovel. “We’ll be needing that” announced Canouville, scouting the upcoming passageway. True enough, a crude jumble of stones and debris stood tall, defying our advance. Protruding corpses of unknown labourers mocked our attempts to clear the rubble, but with grim determination and spaded steel we overcame the obstacle.<br />
<br />
Lying in wait, a brace of skeletons lumbered toward us, backed by a masked cultist. Grapeshot peppered them all as Dismas took command, urging us into the fray. Raoullin let loose a blinding flask of fireworks toward the surprised acolyte while I zealously accused the leading skeletons; “Destroy. Them. All!” My words ripped through what fabric of control bound the bones together, leaving one in a clattering heap and the other wavering. Delivering holy judgement upon the stunned cultist, Canouville’s call boomed bright to rip clear the mask and expire the eyes behind it. The remaining soldier of bone took a grave slash toward our group, catching Canouville off guard. Dismas closed with knife in hand, but skilled execution in bloodletting offered no assistance in felling the calcified corpse, leaving the fatal blow to my own hand. A faint hope blossoms.These creatures seem poorly constructed and easily overpowered by zealous might.<br />
<br />
Through the portico into another ruined expanse. No ambush or assault, but a choice of paths for consideration. We head East, more through comforting routine than strategic merit.<br />
<br />
The torch, our lifeblood of sanity. Slowly ebbing into shadowy cocoon.VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-1650545034923775962016-04-09T09:56:00.001+10:002016-04-09T10:05:25.353+10:00Darkest, Darkest Dungeon - Reynauld the Crusader<h2>
Reynauld the Crusader </h2>
As the stagecoach wheels clattered along the cobblestones leading to our venerable house, I held the note loosely, hoping that the pored-over words would shake into a more enlightening alignment. The lanterns held back the darkness, but offered little comfort to my wandering mind. Memories of playing in the cavernous halls of that old house flooded back.<div>
<br /></div>
<div>
An unearthly howl pierced the night and broke me from my reverie. The startled horses bucked out and couldn’t be contained by the driver’s whip. We left the road to an even bumpier excursion before clattering to a halt minus a wheel and our means of locomotion. Dismas and I were unscathed, but alone as the coach driver scurried after the fleeing mares, a torrent of cursing that trailed into the blackness.</div>
<div>
<br /></div>
<div>
“I guess this means we are on foot?” Queried Dismas. </div>
<div>
<br /></div>
<div>
We left the luggage for a future return and headed East. Ever East. The hamlet is just ahead.</div>
<div>
<br /></div>
<div>
A grizzled thug stepped out to block our path, but we were in no mood to talk. Dismas, good with a knife, opened his veins while I landed a pommel strike to daze him for a moment. He recovered quickly though and still managed a slashing uppercut that caught my brow. Move quicker or die. Dismas dispatched him with ruthless efficiency to bring the tempo back to an eerie night’s walk. The gold will help, if only to make the tavern that much more enticing upon arrival.</div>
<div>
<br /></div>
<div>
Ever East.</div>
<div>
<br /></div>
<div>
A disheveled tent came into view, but no movement betrayed its owner. Possibly the lowlife bleeding out back on the road? Dismas wasted no time in claiming the additional gold and misappropriated onyx. </div>
<div>
<br /></div>
<div>
Another ambush! We’ll send them a message that the rightful owner has returned and there is no place for these vermin. Dismas was quick to shoot, but the grapeshot missed both the larger, whip-wielding brigand or the fusiler toward the back. I landed a stunning blow to curtail the bloodletter’s flaying, but couldn’t escape the blanket fire that erupted into the night. Back to the knives for Dismas as we focused on the heavy-set villian to drop him quickly. The whip was our concern, but a point blank shot drove me away before returning with my own justified strike. Prodigious size alone does not dissuade the sharpened blade. </div>
<div>
<br /></div>
<div>
Pelted with blanket fire, Dismas and I took shelter behind the fallen mass, but the rain of shrapnel didn’t cease. Exploding through the bloodied carcass, we set upon the rifle-clad bandit with steel. As the fiend fell, a faint hope blossomed. </div>
<div>
<br /></div>
<div>
Portraits, deeds and crests of my heritage lay with the fallen, but I will make something of them in time. More gold to be relieved too, but the hard-won chest held nothing but blight. </div>
<div>
<br /></div>
<div>
My return was not met with adulation. These squalid lands, these corrupted hovels are mine to rebuild, but the populace remain ambivalent. I, too, fear they may be right. Stress rises when I see their downcast husks.<br /><br /><br /><br /><br /></div>
VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-63658386476656261662016-04-09T09:55:00.000+10:002016-04-09T10:02:24.258+10:00Darkest, Darkest Dungeon - An Unwelcome Letter<div style="margin-bottom: 6pt; margin-top: 18pt;">
</div>
<h2>
An Unwelcome Letter</h2>
“Ruin has come to our family. “<br />
<div style="margin-bottom: 6pt; margin-top: 18pt;">
“You remember our venerable house? Opulent and imperial, gazing proudly from its stoic perch above the moor. I lived all my years in that ancient, rumour-shadowed manor, fattened on decadence and luxury”</div>
<div style="margin-bottom: 6pt; margin-top: 18pt;">
“And yet I began to tire of conventional extravagance. Singular, unsettling tales suggested the mansion itself was a gateway to some fabulous and unnameable power.”</div>
<div style="margin-bottom: 6pt; margin-top: 18pt;">
“With relic and ritual, I bent every effort towards the excavation and recovery of those long buried secrets, exhausting what remained of our family fortune on sworly workmen and sturdy shovels.” </div>
<div style="margin-bottom: 6pt; margin-top: 18pt;">
“At last, in those salt-soaked crags beneath the lowest foundations, we unearthed that damnable portal and a deluded evil. Our every step unsettled the ancient earth, but we were in a realm of death and madness.”</div>
<div style="margin-bottom: 6pt; margin-top: 18pt;">
“In the end, I, alone, fled laughing and wailing through those blackened arcades of antiquity until consciousness failed me.”</div>
<div style="margin-bottom: 6pt; margin-top: 18pt;">
“You remember our venerable house? Opulent and imperial.”</div>
<div style="margin-bottom: 6pt; margin-top: 18pt;">
“It is a festering abomination!”</div>
<div style="margin-bottom: 6pt; margin-top: 18pt;">
“I beg you, return home! Claim your birthright and deliver our family from the ravenous, clutching shadows of the darkest dungeon!” </div>
VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0tag:blogger.com,1999:blog-35485527.post-31804722751556305622016-03-28T20:49:00.002+10:002016-03-28T20:49:46.665+10:00Kitesurfing MemoriesFinally got a <a href="http://woosports.com/">woo</a> to measure jumping height, and March delivered a 2 weeks spell of near 20 knot days to test it out. This video was of a particularly clean day in the run-out channel at 1/2 tide. Such a smooth section. Such a lovely day to be out on the water. Such a great time going higher and higher!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/qGzZiD36Ch4/0.jpg" src="https://www.youtube.com/embed/qGzZiD36Ch4?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />VRBoneshttp://www.blogger.com/profile/10654192372497663948noreply@blogger.com0