Hello! And welcome to WHITE SHEEP GAMING LLC's website! My name is Kelson Bain and I've set this website up utilizing AWS architecture as a practical application of self-pursued knowledge. I'll be posting demonstrations of projects on this page in particular.
WHITE SHEEP GAMING LLC is video game development company. Over the years I've had a number of ideas I've worked on with varying degrees of intensity. From composing music, crafting art, contemplating storylines, and programming in Unity- I'm now ready to formally put it all together. I've just released Dem Gem Cats using Godot, now available on Android and iOS devices! The next planned release will be Choices in the near future, and Mistake following as a spiritual successor.
Project 1: Website Architecture
I started by creating a Hosted Zone to host the domain. This should be thought of as your area to work in for the network. If you have a site already you would like to bring over (like I did), take special note of the details portion to view the 4 AWS Name Servers. These are effectively your preferred DNS.
It's highly recommended to change these on your site prior to beginning the transfer process to ensure traffic will continue without interuption. If you don't do this now, doing it later will cause the site to be unavailable for a couple of days as services get updated.
After bringing the domain over and configured properly, I set up 2 buckets. 1 to point directly to the static site and another to serve as a backup in another region. If my site goes down, I can redirect to the backup bucket. While there may be more advantageous backup solutions, this works well for a currently simple site.
For additional accessibility and security, I also used CloudFront. This allows me to provide quick access of cached content and enable WAF (a decent firewall). Enabling CloudFront also meant walking through the process of creating a SSL certificates and securing the site.
Finally, Route53 was configured to ensure www.whitesheepgaming.com redirects properly to whitesheepgaming.com.
The website design itself utilizes a CSS file for styles to keep the html content relatively clean, as well as provide easy scaling so content can be viewed on a variety of mobile devices. This was tested using the Device Selector within the Inspector Tool of the browser.
The html pages were primarily composed in Notepad++, but I've been adapting to Microsoft's Visual Studio Code and using Amazon's CodeWhisperer extension to expand AI knowledge/interaction. If the site grows, I would move twoards EC2 instances for scaling.
Project 2: Chatbot
I decided to learn about Chatbots. The difference between FAQ bots (those that have been around for a long time), AI bots, and Modern bots. While there are many services out there for quickly and easily creating a chatbot, such as Chatbase, Dante, or Cody, I decided to have more control learning and using Voiceflow. They have a surprisingly great degree of options and graphics user interface (GUI). By supplying some of the website pages as the Knowledge Base, I can have the chatbot refer to information throughout the site as it's updated.
For those not aware, AI uses a metric called tokens for calculations. Tokens can best be thought of a 'keywords', 'parts of a keyword', or even a single letter of a keyword. It all depends on how the information was separated. Voiceflow will allow me to use this chatbot up to a limit of tokens that have been processed, and will ask for an upgrade or wait till the following month for a new amount available. So if the bot doesn't appear to be working at the moment, thank you for your patience.
This chatbot can be found in the bottom right of most pages and may be considered a custom-knowledge chatbot. It's meant to serve as an easy way to find information throughout the site contents without needing to be on the correct page detailing it. If the information can't be found, it should offer the whitesheepgamlingllc email as an option for requesting additional details or reporting issues.
While a standard FAQ chatbot is all that's needed, I wanted to explore adding logic for a better AI experience. I started programing supplied text with possible alternative versions, passing responses into variables that may go through a services similar to ChatGPT, and structuring the flow of a conversation that loops back to asking if there's anything else it can help with. It will hopefully pick up on the intent of your statements and direct you to the correct information in a more conversational approach than a simple FAQ. Later, it will be able to provide summaries and links to the most recent updates White Sheep Gaming provides.
[Further Application] These skills can be easily adapted for customizing a bot for business intake. Training the bot on company specific information and have the bot present a fillable form in a conversational approach, which would then be sent to a database. Tools, such as Power Automate, could then take the information from the database and present it in a visually appealing format within an email. You could also summarize totals or send an automatic confirmation, but those are all Power Automate things we can talk about in a later project.
Project 3: Art Tools
All art for Dem Gem Cats has been done by myself, Kelson Bain, primarily using Paint Tool Sai 2.
I've used Paint Tool Sai 2 for a number of years, exploring layering, tool, and edit techniques. There are many tutorials for such a strong piece of software. I highly recommend taking a look if exploring digital art tools.
Project 4: Music Composition
All music for Dem Gem Cats has been done by myself, Kelson Bain, using LLMS and Reaper. Choices is currently next in development.
LLMS is a free DAW (software used for creating music), but I've found a strong community within Reaper for better orchestration. Many of my descisions for how I've composed music comes from the experiment structure of Choices, where you can level up various attributes and have that choice impact your experience. You may gain a new ability and the environment may adapt to facilitate that change. To drive this point home, when you upgrade an ability for the first time you'll hear the part of the overall soundtrack. You could decide jumping simply wasn't important and never know there was a violin section to the song- and that's okay. For Choices, I've tried creating tracks with strong bass, melody, counter-melody, and accents. This allows me to identify the parts of the track I want tied to the various skills. The tracks are hopefully put together in a way that they feel... not necessarily complete, but independent and able to stand on their own. When combined, they should feel stronger together, interweaving within one another.
Project 5: Analyzing Game Engagement
I wanted to take a look at game genre popularity on Steam, to have a better idea of what games are received well over the years. This was a great way to explore Google Cloud Platform (GCP) tools, and get some more experience in data gathering and analysis. To go a step further, I wanted to incorporate AI to perform this analysis and let me know if there was an underlying interest in a game I would like to make based on genre and determined by hours of engagement. No one can tell the future, not even AI (as explained by Wolfram's quest for creating a true computational language), but this would provide some good expectations regarding future products.
I started by grabbing a dataset of the top 5000 Steam games from Kaggle and ensured it was updated within the past month. I edited the dataset for easier use in Excel by adjusting 'Free' and 'Demo' prices to 0 so the fields may be recognized as integers instead of strings. From there, I created a new project in BigQuery and uploaded the dataset. This is where I learned more about SQL query commands and was able to provide a report of the top played game types on Steam. This metric of engagement would help provide context regarding the most sought after games and the number of competitors for a person's time.
To train a logistic regression model, I put in additional labels for 'average_engagement' and 'engaging', which is a boolean value to true if the average engagement for a genre is above 300000 hours. For this project, I went very high level and utilized Google's BigQuery ML capabilities, using just a few ML commands. After training the regression model and evaluation, I created a query to check if a game featuring any number of genres may be engaging. This was primarily calculated by the total number of hours played by total number of games containing the genres selected anywhere whithin the dataset. In this example, it was found that a game fitting the survival, platformer, and casual genres would more than likely be engaging.
Now, there are many factors that go into making appealing games that attract this degree of engagement and it may be better to identify games that don't seem engaging to capitalize on a niche market. Take any ML/AI output with a grain of salt... or a truckload if you're unsure about the prediction success rate.
[Further Application] With the right data, these skills can be used to identify business opportunities. A good example of this would be to create a model that's trained on CRM data, outlining known services companies are utilizing, and to then predict if it would be advantageous to reach out if something were spotted in a news article detailing service problems. Much better than cold calling since you could easily identify a pain point and offer solutions.
GenAI: Spoken to Story
Generative Artificial Intelligence (GenAI) has been at the forefront of artistic discussion for years now without much in the way of clear answers regarding proper use cases, copyright laws, or who can claim the model output with only minor tweaks being made. However, that shouldn't stop us from using it as ethically as possible as such things are sorted out. It's a really useful tool that can be wonderful to approach problems from a different perspective. And as advancements are continued to be made, we can easily imagine new processes such as this:
Do you ever have amazing dreams, but they quickly fade away as you wake up? Or have you ever been amazing at improvisation as you tell a child a bedtime story? That SPARK of precious creativity. If only you could gift these stories later! Well, I made a process using AWS tools, specifically Transcribe, Bedrock (Claude/Titan), and Comprehend. In this example, I'm telling a very quick story about Troy and Abed becoming Dem Gem Cats.
We start with grabing a recording of our story to the best of our ability and then transcribing it. I used Audacity to capture my voice as a file for testing, but you could use your phone or native OS recorder as well. I then uploaded the mp3 file to my S3 bucket, and used Amazon Transcribe to recognize any known words within the recording and ideally grammar.
The output file contains a lot of information regarding settings, but we can easily grab the transcription portion since it's nicely labeled in the beginning. The output file doesn't have an extension, but you can open it with Notepad or an equivalent. While here, it's also a good time to adjust any details or misunderstood grammar. For this example, I didn't need to correct too many things outside of sentences getting cut short. Then in Amazon Bedrock we can use the Anthropic Claude 2 model to summarize the transcription. You may need to request access to the model.
Now the real magic happens. With this summary, we can use the Amazon Comprehend Key Phrases Insight to identify parts of the summary that are most impactful or descriptive. Once again, head back to Bedrock to use a Titan model for image generation. Your prompts for image generation are best kept short and simple, which is why we used Amazon Comprehend. Instead of supplying an entire paragraph, we could further limit our instruction to a couple key sentences. The Titan model provided 3 images to choose from.
And here we have the finished product: A summary of the story alongside a picture.
I look forward to someday streamlining this process with a UI for easy review of materials and ultimately storing a collection of stories using API calls. I can't think of a better present to someone than a personal binding of all the magical adventures they were told while growing up.