Published © CC BY-NC-SA

League of Legends Minion Memorial

A memorial for all the brave League of Legends minions giving their lives every day.

BeginnerFull instructions provided15 hours965
League of Legends Minion Memorial

Things used in this project

Hardware components

Raspberry Pi 4 Model B
Raspberry Pi 4 Model B
×1
NeoPixel Ring: WS2812 5050 RGB LED
Adafruit NeoPixel Ring: WS2812 5050 RGB LED
×1
Box
×1

Software apps and online services

Raspbian
Raspberry Pi Raspbian

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)
Drill / Driver, Cordless
Drill / Driver, Cordless
Clear filament

Story

Read more

Custom parts and enclosures

Gemstone

Code

code.py

Python
# import neopixel
# import time

# import board
# pixels = neopixel.NeoPixel(board.D18, 50)

# Info from https://leagueoflegends.fandom.com/wiki/Minion and https://www.leagueofgraphs.com/rankings/game-durations

#  Everything is stored in seconds
secondsPerWave = 30
minionStartTime = 65
avgGameTime = 1800

avgWavesPerGame = (avgGameTime - minionStartTime)/secondsPerWave

# Siege & Super Minions per game per lane
siegeMinionsFirst15Min = ((15*60-65) / 30)/3
siegeMinionsBetween15And25Min = ((10*60) / 30)/2
siegeMinionsRest = (58-47) / 1
siegeMinionsTotal = siegeMinionsFirst15Min + siegeMinionsBetween15And25Min + siegeMinionsRest

# Melee and Caster Minions per game per lane
casterMinions = avgWavesPerGame * 3
meleeMinions = avgWavesPerGame * 3
totalMeleeCasterMinions = casterMinions + meleeMinions

# Total minions per lane per game
minionsPerLane = totalMeleeCasterMinions + siegeMinionsTotal

# Total minions per game
lanes = 6
totalMinionsPerGame = (lanes * minionsPerLane)

# Games played per day - https://en.wikipedia.org/wiki/League_of_Legends
# Active players per day in 2014
activeDailyPlayers = 27000000

# We need 10 players per game
singleGamesPlayed = activeDailyPlayers / 10

#  We assume each ative daily player playes two games
totalDailyGamesPlayed = singleGamesPlayed * 2

# Minion death stats
dailyMilMinionDeaths = (totalDailyGamesPlayed * totalMinionsPerGame) / 1000000
deathsPerSecond = (totalDailyGamesPlayed * totalMinionsPerGame) / 24 / 60 / 60

#  How long does it take to?
milDeaths = 1000000 / deathsPerSecond
print(dailyMilMinionDeaths)

pixels.brightness = 100
pixels.fill((255, 255, 255))


def brightnessBeat():

    steps = 72
    start = time.time()
    startBrightness = 0.01
    brightnessSteps = 0.014
    
    for i in range(1,steps):

        startBrightness = startBrightness + brightnessSteps
        pixels.brightness = startBrightness
        pixels.fill((255, 255, 255))

        time.sleep(0.04)

    print(startBrightness)
    time.sleep(0.1)

    for i in range(1,steps):

        startBrightness = startBrightness - brightnessSteps
        pixels.brightness = startBrightness
        pixels.fill((255, 255, 255))

        time.sleep(0.04)

    time.sleep(0.1)
    end = time.time()
    print(end-start)

while True:
    brightnessBeat()

    

Credits

Comments