Skip to main content

Idle Witchcraft Sprint 2

  This sprint, I worked on implementing the scenario system, as well as creating some concept art for ingredients and potions in the GDD!


Left to Right: Phoenix Feather, Nightshade, Giant’s Toe, Wyvern Scale


To start off, the concept art I did was mostly just quick digital sketches based on the cards in my paper prototype, or a reference photo that I found online in the case of the nightshade. These aren’t meant to be high quality drawings, but more so an outline of ideas that I can hone in on when I’m creating the pixel art assets next sprint. 


Left to Right: Cloaking, Gigantification, Hunter’s Sense, Immediate Combustion, Larger Mind, Radiance


For the potions, I tried to decide on somewhat unique silhouette’s and color palettes for each one, so that they can be easily told apart at a glance. I also tried to convey the attributes of the potion through their shapes so that players will be rewarded for trying to intuit what they do (the exception here is immediate combustion, I want that one to look inconspicuous so that it’ll surprise unsuspecting players!). I think that for hunter’s sense and radiance I’ve succeeded in this, but the others could definitely use some further refining next sprint


Finally, the most exciting thing I worked on this sprint was the Scenario system! This system will handle everything to do with the customer interactions, from dialogue, success rolls, and deciding which scenarios should come next based on the outcome of the previous one. To get started, I first created a data table that would hold the necessary information for each scenario.



The current structure of the data table is as follows: Row name (for internal reference), Scenario name, dialogue, points required, stats applied, success dialogue, failure dialogue, character sprite, character name, scenarios unlocked on success, and scenarios unlocked on failure. The implementation of all of these from a .csv file to Unreal was very simple, except for the last two. Unreal’s data table rows are structs, which is a collection of any number of values you want as singles, this meant that I couldn’t have an array of scenarios to unlock, only one. But this wouldn’t be suitable for the gameplay I had in mind, so I needed a way to store a list within a single value.



Thankfully, after giving it some thought, a solution came to me quickly. Strings were single values that could have any size, so I could import a list of scenarios as a string of comma-separated substrings. Then within Unreal, I could use a handy built-in node called Parse into Array that could read my string, and split it into an array of strings using a delimiter as the separation points (in my case, a comma). Now I could store a list of variable size within one cell of a data table! Yay!


From here, creating the interaction process was pretty simple. I would start by alerting the player that they had a customer, then show the dialogue, then the stats of the scenario compared to the stats of the potion they chose, along with the odds of success. Finally, the scenario would end with unique dialogue based on if the character succeeded or failed!



The stat check itself was pretty interesting to implement, I already had an idea beforehand of how I wanted to do it, and for once my initial idea worked perfectly! Each scenario had a point count that the player would try to reach. Their score would be calculated based on the potion stats multiplied by the stat multiplier. For example, the above scenario takes the Power and Endurance stats, so the stat multiplier has a 1 for those stats and a 0 for the others. Since the potion has 2 Power and 0 Endurance, they score 2 points, for a 2 out of 4 chance of success. What this system also allows me to do is weigh stats differently. I could have one stat be multiplied by 2 or .5 to change its impact on success, or even make it negative to have it decrease the odds of success. This will allow me a lot of creative freedom when writing scenarios later!


Comments

Popular posts from this blog

CAGD 373 Blog Post 4

This sprint I was assigned a modular set to create the basic interior rooms out of, with three different textures for the walls. (a Square Brick Texture, a Cement Texture, and a Metal Wall Texture) The actual modeling itself was as basic as it gets, I just made a few different shapes and sizes of wall along with a doorframe, with a couple floors and ceilings to complete the set. The interesting stuff this week was the textures, all of which I made in designer! The brick texture was probably the most complicated, and the one I’m most proud of. Starting with a brick generator, I used some gaussian spots to add some variance to the shape of bricks (using the spots to “cut out” chunks of the perfectly square bricks) and that worked pretty well! After that, I used a grainy looking noise map to fill in the black part of this mask to add in the noisy texture of mortar between bricks Next, to add some color variation to the bricks, I used a flood fill node, which was able to identify all the...

CAGD 370 Blog Post 5 - Final Sprint and Postmortem

  The Final Prototype is officially done! And this final sprint has definitely been the most intense yet. While not perfect, I’m very happy with the game that me and my team have made, and I feel a lot of motivation to start a brand new project! But before I get ahead of myself, it’s a great time to reflect on the last two weeks and this project as a whole. To start off our final sprint, I once again made adjustments to the pole vaulting. I made the impulse of the vault scale with how close you got to the pole, which meant that not only could the player not get an immense movement boost from a standstill, but also that there was now a “sweet spot” to aim for to get the most vertical height out of the vault. To help players seek out this sweet spot, I also took the time to create a charge-indicating progress bar next to the player that would fill up the closer they got to the sweet spot. The bar progressively fills as the player approaches the sweet spot After this, my lead de...

CAGD 373 Blog Post 5

  Judgement day nears! And sadly I don’t have too much to show for this week as finals in other classes have swallowed up most of my time. However with most of them finally out of the way I’m clear to focus all my time towards this project over these next couple of days! The real meat of my texturing work this week is this Exterior Trim Sheet. I tried to group together as many models with similar-ish materials as possible so that I could get textures applied efficiently. Here I’ve created a trim sheet consisting of metal, tree bark, wood, a beige stone texture that worked pretty well for the pipes, and a separate, rougher metal texture for the motors found just outside the facility doors. I spent a lot of time compiling a list of all the models in our project along with reference images, so that way I could organize them into texture sets based on similar materials/texturing needs This plan should help to really accelerate the texturing pipeline over the next couple of days, so t...