Incite & Infiltrate
- Deck Building Game, Unity
- Aliens scheme to colonize Earth. Players dispatch spies to seize control of politics, culture, science, and religion. Exposure mechanics increase detection risk.
Procedural Alien Card Generation
Cards feature randomly generated attributes from a shared pool across culture, religion, politics, technology, and lifespan. Card images divided into: face contour, upper face (eyes), lower face (mouth) for variety through random combinations.
Effect Card Design
Handcrafted cards modify alien card attributes. Rarity distribution: 70% Level 1, 20% Level 2, 10% Level 3. Narratives tied to specific card attributes.
| 1 | using System.Collections; |
| 2 | using System.Collections.Generic; |
| 3 | using UnityEngine; |
| 4 | using UnityEngine.UI; |
| 5 | |
| 6 | public class AlienCardProcGen : MonoBehaviour |
| 7 | { |
| 8 | // assign fields |
| 9 | public Text lifeSpan; |
| 10 | public RectTransform culIcon, relIcon, polIcon, techIcon; |
| 11 | public Image head, eyes, mouth; |
| 12 | public Sprite[] headSpr, eyesSpr, mouthSpr; |
| 13 | public int cul, rel, pol, tech, lifeSpanNumber; |
| 14 | public int genSpeed, discoverRate, propertyMax; |
| 15 | public int lifeMin, lifeMax, totalAbility; |
| 16 | public List<float> properties; |
| 17 | |
| 18 | void Start() |
| 19 | { |
| 20 | // initialize list |
| 21 | for (int i = 0; i < 5; i++) { properties.Add(0); } |
| 22 | genSpeed = 3; |
| 23 | discoverRate = 2; |
| 24 | |
| 25 | // head Generate |
| 26 | head.sprite = headSpr[Random.Range(0, headSpr.Length)]; |
| 27 | eyes.sprite = eyesSpr[Random.Range(0, eyesSpr.Length)]; |
| 28 | mouth.sprite = mouthSpr[Random.Range(0, mouthSpr.Length)]; |
| 29 | |
| 30 | SetValues(); |
| 31 | lifeSpan.text = "Health " + lifeSpanNumber; |
| 32 | } |
| 33 | |
| 34 | private void SetValues() |
| 35 | { |
| 36 | // roll numbers |
| 37 | for (int i = 0; i < properties.Count; i++) |
| 38 | { |
| 39 | properties[i] = Random.Range(0, totalAbility); |
| 40 | totalAbility -= (int)properties[i]; |
| 41 | } |
| 42 | // shuffle numbers |
| 43 | for (int i = 0; i < properties.Count; i++) |
| 44 | { |
| 45 | float temp = properties[i]; |
| 46 | int randomIndex = Random.Range(i, properties.Count); |
| 47 | properties[i] = properties[randomIndex]; |
| 48 | properties[randomIndex] = temp; |
| 49 | } |
| 50 | // set numbers |
| 51 | cul = (int)(properties[0] / 100 * propertyMax); |
| 52 | rel = (int)(properties[1] / 100 * propertyMax); |
| 53 | pol = (int)(properties[2] / 100 * propertyMax); |
| 54 | tech = (int)(properties[3] / 100 * propertyMax); |
| 55 | lifeSpanNumber = lifeMin + (int)(properties[4] / 100 * lifeMax); |
| 56 | // set bar |
| 57 | culIcon.sizeDelta = new Vector2((100 - 8) * properties[0] / 100, 19); |
| 58 | relIcon.sizeDelta = new Vector2((100 - 8) * properties[1] / 100, 19); |
| 59 | polIcon.sizeDelta = new Vector2((100 - 8) * properties[2] / 100, 19); |
| 60 | techIcon.sizeDelta = new Vector2((100 - 8) * properties[3] / 100, 19); |
| 61 | } |
| 62 | } |
Narrative Design
Dynamic news system with scrolling HUD news and pop-up breaking news triggered at predetermined value benchmarks. Tone characterized by satirical dark humor exploring absurdity of human nature facing unknown forces.