Keni

Kiana Khansmith
Sade Olutola
Today's Document
Claire Keane
Monterey Bay Aquarium

@theartofmadeline
One Nice Bug Per Day
Sweet Seals For You, Always

Discoholic 🪩
Aqua Utopia|海の底で記憶を紡ぐ
will byers stan first human second
NASA
styofa doing anything
cherry valley forever

titsay
Misplaced Lens Cap

祝日 / Permanent Vacation
Cosmic Funnies
almost home

seen from Brazil
seen from Malaysia
seen from United States

seen from Malaysia

seen from Japan
seen from United States

seen from Türkiye
seen from United States

seen from United States
seen from United States
seen from United States
seen from United States
seen from United States

seen from United States

seen from Türkiye
seen from United Kingdom

seen from United States

seen from Singapore
seen from United States
seen from Spain
@herreraprogramming-blog
favorite scene in naruto to date: rock lee stealing neji’s eyebrows post-mortem (to add to his own strength) under the guise of closing his eyes
Blackboards in Game Programming
In AI Programming, a blackboard refers to a "mechanism for coordinating the actions of several decision makers." (Millington pg459). The blackboard is a collection of data for individual decision making systems to refer to when stepping through their decision tree.
The appeal of blackboards comes from the fact that it is not dependent on any decision making system - it is literally a collection of data for reading and analyzing. The decision making systems can be implemented in any way, and still be able to utilize the data from the blackboard, as well as communicate with one another without a dependence on how their individual systems are implemented.
Blackboards usually consist of little to no data prior to code execution. The simplest way to store information within a blackboard would be to create a struct that contains the values you want to keep track of.
Algorithm
The basic structure of a blackboard system has three parts:
a set of different decision making tools; the experts; those who will use the blackboard.
a blackboard; an area of memory that any expert may use to read from and write to.
an arbiter; a mechanism that picks which expert gets control of the "chalk".
(Blackboard architecture: AI for Games; Millington)
The algorithm works in iterations:
1. Experts look at the board and indicate their interest.
2. Arbiter selects an expert to have control.
3. Expert does some work, possibly modifying blackboard.
4. Expert voluntarily relinquishes control.
Dynamic Blackboards
In a dynamic blackboard, the data within it is not predetermined. There could be unlimited amounts of data that the blackboard can store.
An example of a game with a dynamic blackboard would be one where several treasure hunters stock the blackboard with records of differing dig-sites and whether or not a clue of treasure was found. Each hunter has their own method to analyze the clue and search around it.
Static Blackboards
In a static blackboard, the data within it is predetermined.
For instance, with a static blackboard you could always have a 3D Vector that tracks the last known position of an enemy; when an expert is able to see the enemy, they modify that static value within the blackboard. (Champandard)
A game that may use static blackboards is any first-person shooter. The blackboard contains a static map of the environment, and each unit may read the map to coordinate with other units so that they all do not follow the same path toward a target location.
Blackboard in Action: Treasure Hunting
In an effort to demonsrate the blackboard in AI, I created a program dubbed, "Treasure Hunters." Units will continually search for treasure (represented by the X) and dig at random spots on the screen until the treasure is found. Clues (represented by the red O's) signfy hints where the treasure may be.
When a Unit digs at spot (represented by the multicolored circles), it inserts a record onto the blackboard that states:
Where the Unit dug at
Whether or not the Unit found something
Whether or not it the object found was treasure
Depending on the Unit's decision making, if a Unit found a clue, it will generate it's next target to search at using the last clue found.
The Units on screen will continue to search randomly until a Clue is found; then, the Unit will search within a radius of where the last clue was found.
This demo demonstrates how Unit's can communicate with one another - "Hey I found a clue over here!" - without any dependence on how each Unit may analyze the clue.
Blackboards in Gaming
So what games could benefit from using a blackboard? Any game that depends on sharing memory across differing decision systems. Games such as:
The Sims: the Sim's needs is a static blackboard, the Sim themselves being the expert. After analyzing their needs, each Sim makes a decision on what to do next, and eventually modifies the blackboard data values as they perform tasks.
League of Legends: in a dynamic world as the environment of LoL, the blackboard contains data as to determine where projectiles may be, or even if they exist on the battlefield. Data is constantly added and removed from the blackboard as projectiles are shot, received, or even blocked by wind walls - each expert, i.e. the Champions on the battlefield, responsible for dodging and knowing how to handle the damage the projectile gives.
Super Smash Bros:
Flexible and easy to implement, the blackboard is the core of coordinated artificial intelligence.
Citations
Champandard, Alex. Using a Static Blackboard to Store World Knowledge. LINK
Orkin, Jeff. Applying Blackboard Systems to First Person Shooters. LINK
Millington, Ian. Artificial Intelligence for Games, 2nd Edition.
League of Legends Network Protocol
League of Legends is an online MOBA game that pits teams of 5 against each other. In order to communicate effectively and efficiently in real-time to all 10 players on the field, the game client utilizes a UDP protocol. Using UDP, the player can see actions and abilities being used in real-time with little to no lag or interruptions. However, the actual network that connects the players to each other (PVP.net) uses a TCP protocol. Therefore, some lag occurs between players who have poor internet connections.
In summary, the network communicates using a TCP protocol to gather packets at once and send them to the respective players. The game client that actually runs the program/game uses UDP to display the packets in real-time with little to no interruption.
Come check out FlingFormer!
FlingFormer is a side-scrolling platformer where the method of travel is - well - flinging! Throw yourself across a variety of levels, getting the best rating possible!
You can check out (and like!) our Facebook page here!
FlingFormer is a game currently in development, heading to mobile devices soon.
The Team Behind FlingFormer
Colin Rebord - Producer
Lee Cudney - Designer
Dan McLean - Programmer
Abner Herrera - Programmer
Savannah Smackdown
Seize the watering hole and control the savannah in Savannah Smackdown!
This game was a collaborative effort made by:
.Louis Branton - Producer
Brendon Fay - Designer
Katelyn Ruff - Designer
Eric Kilkenny - Artist
Abner Herrera - Programmer
Savannah Smackdown is a turn-based strategy game where the goal is to get a full "resource bar", or 15 points, before the other team. Each team is comprised of three pieces: the mouse, the elephant, and the lion. Points are accrued by either controlling the watering hole in the center of the board at the end of each turn, or by gathering randomly spawned resources as they appear.
Animals band together to survive! Using a rock-paper-scissors style of combat, fight the enemy team in order to control the watering hole.
Lion counters Mouse
Mouse counters Elephant
Elephant counters Lion
Savannah Smackdown was created using Flash and FlashDevelop for Game Production at Champlain College in the Spring of 2014.
Want to play Savannah Smackdown? Click here!
Wizard Battle Royale: Demo
Wizard Battle Royale was my final project for Graphics Programming at Champlain College in the Fall of 2013.
For the sake of the video, the program was in "testing-mode", allowing a single player to play the game, as well as showing the FPS rate, number of particles on screen, and hit-boxes of the characters and projectiles on-screen.
Main Concept of Wizard Battle Royale
In Wizard Battle Royale, the concept of the game is that 2-4 players select Wizards and summon-able Minions to combat with; the last Wizard alive wins the game. The Player's Health, Mana, and Minions points are shown at the bottom of the screen with their primary color and Player number above their information.
Spells
Each Wizard is equipped with two spells; in the video, Fireball and Heal are demonstrated. The two spells each cost a specific amount of Mana and behave differently once cast. The Fireball is fired in the direction of the Player's cursor, damaging enemy Wizards and Minions. Casting Heal would restore health points to the player wizard and any allied minions in close proximity.
Minions
Each Wizard is allowed two minions they may summon in order to fight enemy Wizards as well as enemy minions. Depending on the minion type, each minion contained their own stats and behaviors on how to move and attack. For instance, the Brown Goblins hunt down enemies within close range, and the Green Goblins shoot fireballs toward enemies within a certain range. Each minion costs Minion points in order to summon, and have a smaller amount of Health points compared to their Wizard masters.
Strategize Mode
In order to provide a sense of tactics and strategy into the game, each Player is able to command and coordinate their minions at will by entering "Strategize Mode". Once activated, the Player's cursor will start to emit particles of random colors. Hovering over their allied minions put those minions into a queue, and once Strategize Mode is deactivated each minion in that queue is commanded to move to the current location of their Player's cursor. Once reaching the desired position, minions revert to their regular movement patterns.
Wizard Battle Royale and all content included are rights reserved to Herrera Programming.
Creating Custom Palettes In-Game
Wizard Battle Royale was my final project for Graphics Programming at Champlain College in the Fall of 2013.
One of the requirements for this final project was a feature that allowed custom content, something edit-able or created by the user. For my project, I provided the ability to create Custom Color Palettes for the Player's character and minions.
The user is able to modify the individual RGB color-values for each color of the palette. This allowed almost no limitation to the combination of colors any user can create. I added in a feature to be able to modify the alpha-value as well, but once testing commenced, I took that feature out due to problems saving the colors.
Once the user has finished editing their palette colors, they only need to press ENTER (if on Windows; Xbox users needed to press START) and the palette will be saved on a file, allowing the palette to remain in the game even once the program closes. Once saved, the palette becomes an option for the player to choose for their Wizard and Minions in battle.
But what about the sprites in the sprite sheet? How did the sprite sheet differentiate between two different palettes?
The way I solved this problem was by having two definite color-values in the Sprite Sheets that would be changed into either the Primary color/Secondary color of the Color Palette.
Example Wizard in the Sprite Sheet
Example Minions in the Sprite Sheet
The areas where the Color Palette will edit the Sprites are colors with values of [60, 60, 60] & [30, 30, 30], respective to the Primary and Secondary colors of the Color Palette. Once the palette was chosen, the program would scan the current frame of the sprite and change those areas with the Primary and Secondary colors, thus creating different looking palettes for each character.
Wizard Battle Royale and the rights associated with it are reserved to Herrera Programming.
Particles and Pixel Effects
** Warning: The video above contains strobes and strobe-like effects. **
This video demonstrates the use of my Particle Generator, full-screen Pixel effects, as well as depth between sprites and the horizon, and differing AI's stemming from a base Sprite class.
Particle Generator
For the Particle Generator, I created a function that allowed the creation of dynamic particles. This function allowed control of:
the texture of the particle
how long a particle lasts
starting and ending colors of the particle
movement behaviors
velocities and friction
frequency of particle creation
Some examples in the video of the Particle Generator is the Rabbit's after-image, the Professor's "thought-process steam", and the King's "fireworks explosion." This allows for a diverse and interesting display of particles for individual AI's and events.
Pixel Effects
For the Pixel Effects, I used the Graphics Card on the computer and with HLSL, created a variety of effects. The effects shown are, respectively:
Colorful Strobe: affecting each pixel to be a random color
Grey-scale: changing each pixel to become grey
Red Channel: changing each pixel to only show their red RGB color value
Blur: changing each pixel to appear "blurred" if not in a radius around the center of the screen
Strobe: changing each pixel to black and it's actual color quickly
Pulsing Darkness: changing each pixel to black and it's actual color slowly
Darken: changing each pixel to a darker value
Depth
The program demonstrates the depth using the horizon (an x value) as a point to relate to. The closer/farther each sprite came to that horizon, the smaller/larger they appeared on-screen. As well as changing sizes, each sprite would move behind/in-front of other sprites depending on their current position from the horizon. This was done by comparing the sprite's "base box" around their feet with one another.
AI Variation
Lastly, the AI system used a base Sprite class that contained variables such as the sprite's speed, texture, and behavior on how to move. Extending this base class, I was able to create a variety of different AI that had various characteristics. Some examples of the different AI are Feng the giant, AI with a larger texture and slower speed; the Rabbit, who created after-image particles and moved faster than most; and Zork, the yellow character who moved more rapidly than the other AIs. With this system of diverse AI's, it is easy to create characters who appear to be different, yet contain a similar framework with the other characters.
"The People" was a program created for my Graphics class in the Fall of 2013 at Champlain College.
All rights are reserved to Herrera Programming.
Find Em: The Game
This assignment was given to demonstrate our use of animations and multiple sprites on the screen. We had to make a game, so I went with a simple "Where's Waldo?" approach, adding in moving characters.
The general gist of this game is that before it begins, you are shown a "target" character to find among the large crowd. The goal is to find the target character as quickly as possible and thus receiving a low score. The longer you take to find the character, the higher your score becomes. Clicking on characters that are not the target causes that character to disappear, but adds a moderate amount to your score.
Some of the features of this game I'm pretty proud of is that when any character collides with the edges (or each other with the switch of a boolean), they gain new, random horizontal and vertical velocities. For instance, approaching the bottom edge moving at a down-right angle could then result in the character moving without any horizontal velocities and just an upward velocity. I think that this added to the difficulty to the game as well as the chaos.
For animations, I created a sprite sheet with three different frames for each character. I made sure only one of the "target" character was on-screen, in order to have a singular way to win.
"Find Em: The Game" was a program created for an assignment in my Graphics class at Champlain College in the Fall of 2013.
All rights reserved to Herrera Programming.