diff --git a/public/images/EXPO/GameDev logos/Game logo(s) (File responses)-20260830T190331Z-1-001.zip b/public/images/EXPO/GameDev logos/Game logo(s) (File responses)-20260830T190331Z-1-001.zip new file mode 100644 index 0000000..9a62175 Binary files /dev/null and b/public/images/EXPO/GameDev logos/Game logo(s) (File responses)-20260830T190331Z-1-001.zip differ diff --git a/public/images/EXPO/gamedev/bullosseum.png b/public/images/EXPO/gamedev/bullosseum.png new file mode 100644 index 0000000..9c43327 Binary files /dev/null and b/public/images/EXPO/gamedev/bullosseum.png differ diff --git a/public/images/EXPO/gamedev/eelloon.png b/public/images/EXPO/gamedev/eelloon.png new file mode 100644 index 0000000..e51d5bb Binary files /dev/null and b/public/images/EXPO/gamedev/eelloon.png differ diff --git a/public/images/EXPO/gamedev/estonian_language.png b/public/images/EXPO/gamedev/estonian_language.png new file mode 100644 index 0000000..89deca5 Binary files /dev/null and b/public/images/EXPO/gamedev/estonian_language.png differ diff --git a/public/images/EXPO/gamedev/grandpas_bee_haven.png b/public/images/EXPO/gamedev/grandpas_bee_haven.png new file mode 100644 index 0000000..faec50b Binary files /dev/null and b/public/images/EXPO/gamedev/grandpas_bee_haven.png differ diff --git a/public/images/EXPO/gamedev/hardwired.png b/public/images/EXPO/gamedev/hardwired.png new file mode 100644 index 0000000..94c7444 Binary files /dev/null and b/public/images/EXPO/gamedev/hardwired.png differ diff --git a/public/images/EXPO/gamedev/hearthland.png b/public/images/EXPO/gamedev/hearthland.png new file mode 100644 index 0000000..1b80d28 Binary files /dev/null and b/public/images/EXPO/gamedev/hearthland.png differ diff --git a/public/images/EXPO/gamedev/jazzwitch.png b/public/images/EXPO/gamedev/jazzwitch.png new file mode 100644 index 0000000..3031254 Binary files /dev/null and b/public/images/EXPO/gamedev/jazzwitch.png differ diff --git a/public/images/EXPO/gamedev/machine_party.png b/public/images/EXPO/gamedev/machine_party.png new file mode 100644 index 0000000..19a03b4 Binary files /dev/null and b/public/images/EXPO/gamedev/machine_party.png differ diff --git a/public/images/EXPO/gamedev/manala.png b/public/images/EXPO/gamedev/manala.png new file mode 100644 index 0000000..aab9cd1 Binary files /dev/null and b/public/images/EXPO/gamedev/manala.png differ diff --git a/public/images/EXPO/gamedev/midnight_clinic.png b/public/images/EXPO/gamedev/midnight_clinic.png new file mode 100644 index 0000000..d383fbc Binary files /dev/null and b/public/images/EXPO/gamedev/midnight_clinic.png differ diff --git a/public/images/EXPO/gamedev/midnight_souvenirs.png b/public/images/EXPO/gamedev/midnight_souvenirs.png new file mode 100644 index 0000000..633df63 Binary files /dev/null and b/public/images/EXPO/gamedev/midnight_souvenirs.png differ diff --git a/public/images/EXPO/gamedev/multimatum.png b/public/images/EXPO/gamedev/multimatum.png new file mode 100644 index 0000000..3f0fc1a Binary files /dev/null and b/public/images/EXPO/gamedev/multimatum.png differ diff --git a/public/images/EXPO/gamedev/orms.png b/public/images/EXPO/gamedev/orms.png new file mode 100644 index 0000000..7fc2d5f Binary files /dev/null and b/public/images/EXPO/gamedev/orms.png differ diff --git a/public/images/EXPO/gamedev/osta.png b/public/images/EXPO/gamedev/osta.png new file mode 100644 index 0000000..c37681a Binary files /dev/null and b/public/images/EXPO/gamedev/osta.png differ diff --git a/public/images/EXPO/gamedev/self_storm.svg b/public/images/EXPO/gamedev/self_storm.svg new file mode 100644 index 0000000..71c5b7d --- /dev/null +++ b/public/images/EXPO/gamedev/self_storm.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/images/EXPO/gamedev/toimkonna_simulator.png b/public/images/EXPO/gamedev/toimkonna_simulator.png new file mode 100644 index 0000000..eff88ec Binary files /dev/null and b/public/images/EXPO/gamedev/toimkonna_simulator.png differ diff --git a/public/images/EXPO/gamedev/walk.png b/public/images/EXPO/gamedev/walk.png new file mode 100644 index 0000000..d260680 Binary files /dev/null and b/public/images/EXPO/gamedev/walk.png differ diff --git a/public/images/EXPO/gamedev/war_torn.png b/public/images/EXPO/gamedev/war_torn.png new file mode 100644 index 0000000..094c776 Binary files /dev/null and b/public/images/EXPO/gamedev/war_torn.png differ diff --git a/src/app/[locale]/messiala/page.tsx b/src/app/[locale]/messiala/page.tsx index 56e6641..1960ecf 100644 --- a/src/app/[locale]/messiala/page.tsx +++ b/src/app/[locale]/messiala/page.tsx @@ -77,20 +77,39 @@ function SectionHeading({ children }: { children: React.ReactNode }) { ); } -/** One game card: bordered thumbnail, a linked title, and a subtitle line. */ +/** + * One showcase card: a cyan-bordered logo box above a linked title and a + * studio/team line. Logos render object-contain; screenshots (`cover`) fill the + * box. Teams without a logo yet fall back to their name set inside the box. + */ function GameCard({ image, title, subtitle, url, - cover, + cover = false, }: { - image: string; + image?: string; title: string; subtitle: string; - url: string; - cover: boolean; + url?: string; + cover?: boolean; }) { + const titleEl = url ? ( + + {title} + + ) : ( + + {title} + + ); + return (
- {title} + {image ? ( + {title} + ) : ( + + {title} + + )}
- - {title} - -

+ {titleEl} + {subtitle} -

+
); } @@ -217,7 +240,6 @@ export default async function Expo({ title={dev.title} subtitle={dev.studio} url={dev.url} - cover={false} /> ))} @@ -234,7 +256,7 @@ export default async function Expo({ title={uni.title} subtitle={uni.team} url={uni.url} - cover={true} + cover={!uni.contain} /> ))} diff --git a/src/data/expo.ts b/src/data/expo.ts index 155c8d6..aa83fcc 100644 --- a/src/data/expo.ts +++ b/src/data/expo.ts @@ -4,20 +4,22 @@ // strings rather than in the translation files. Section headings and captions // are translated (see the `expo` block in translations/et.json + en.json). // -// NOTE: only the four cards shown in the design mockup are listed here. More -// logos are available under public/images/EXPO/GameDev logos and -// public/images/EXPO/ylikoolid if this list should grow later. -// Paths use %20 for the space in the "GameDev logos" folder name. +// The developer list is sourced from the TipiLAN 2026 game-dev showcase signup +// sheet. University / TalTech GameCamp teams live in `universities` instead. +// +// Logos were downloaded from the signup sheet's Drive folder into +// public/images/EXPO/gamedev/. `logo` / `image` stay optional (one team has no +// logo yet); cards fall back to a text tile when absent. export interface DeveloperCard { /** Game / product name (proper noun, shown as-is). */ title: string; - /** Studio behind it. TODO: confirm the two "Placeholder Gameworks" entries. */ + /** Studio / team behind it. */ studio: string; - /** Logo image under /public. Rendered object-contain in a bordered box. */ - logo: string; - /** External link for the game title (opens in a new tab). */ - url: string; + /** External link for the game (Steam, itch.io, etc.). Omitted when none yet. */ + url?: string; + /** Logo image under /public. Rendered object-contain. Optional. */ + logo?: string; } export interface UniversityCard { @@ -25,62 +27,150 @@ export interface UniversityCard { title: string; /** Team / course that made it. */ team: string; - /** Landscape thumbnail under /public. Rendered object-cover. */ - image: string; - /** External link for the game title (opens in a new tab). */ - url: string; + /** External link for the game. Omitted when none. */ + url?: string; + /** Thumbnail under /public. Optional. */ + image?: string; + /** Render the image object-contain (a logo) instead of object-cover (a screenshot). */ + contain?: boolean; } +// Studio / commercial teams (order follows the signup sheet). export const developers: DeveloperCard[] = [ { - title: "Broken Alliance", - studio: "Placeholder Gameworks", - logo: "/images/EXPO/GameDev%20logos/broken_alliance.png", - url: "https://placeholder.games/", + title: "White Phosphorus: An Explosive Escape", + studio: "Fire!", }, { - title: "Buckshot Roulette", + title: "ORMS", + studio: "Rhea Games", + url: "https://store.steampowered.com/app/3743150/ORMS/", + logo: "/images/EXPO/gamedev/orms.png", + }, + { + title: "Grandpa's Bee Haven", + studio: "Kickstart Now", + url: "https://store.steampowered.com/app/3209160/Grandpas_Bee_Haven/", + logo: "/images/EXPO/gamedev/grandpas_bee_haven.png", + }, + { + title: "walk", + studio: "bilge", + url: "https://store.steampowered.com/app/4563880/walk/", + logo: "/images/EXPO/gamedev/walk.png", + }, + { + title: "War-Torn", + studio: "Moccer Interactive", + url: "https://kingoftheend.itch.io/war-torn", + logo: "/images/EXPO/gamedev/war_torn.png", + }, + { + title: "Machine Party", studio: "Mike Klubnika", - logo: "/images/EXPO/mklubi.jpg", - url: "https://store.steampowered.com/app/2835570/Buckshot_Roulette/", + url: "https://store.steampowered.com/app/4108000/Machine_Party/", + logo: "/images/EXPO/gamedev/machine_party.png", }, { - title: "CraftCraft Simulator", - studio: "Placeholder Gameworks", - logo: "/images/EXPO/GameDev%20logos/craftcat_sim.png", - url: "https://placeholder.games/", + title: "Manala: Equinox War", + studio: "OÜ Kilbirivi", + url: "https://store.steampowered.com/app/4898080/Manala_Equinox_War/", + logo: "/images/EXPO/gamedev/manala.png", }, { - title: "CYBER DOC ROGUE", + title: "Toimkonna simulator", + studio: "M4rtenn", + url: "https://store.steampowered.com/app/4834280/Toimkonna_simulator/", + logo: "/images/EXPO/gamedev/toimkonna_simulator.png", + }, + { + title: "MULTIMATUM", + studio: "DeepDevelopment Games", + logo: "/images/EXPO/gamedev/multimatum.png", + }, + { + title: "SELF STORM", + studio: "Triple Trigger", + url: "https://taavippp.itch.io/self-storm", + logo: "/images/EXPO/gamedev/self_storm.svg", + }, + { + title: "JazzWitch", + studio: "VuKaan", + url: "https://store.steampowered.com/app/4952960/JazzWitch/", + logo: "/images/EXPO/gamedev/jazzwitch.png", + }, + { + title: "Hearthland", + studio: "Best mäng OÜ", + logo: "/images/EXPO/gamedev/hearthland.png", + }, + { + title: "Bullosseum", + studio: "Pullivennad", + url: "https://bullosseum.richard.work/", + logo: "/images/EXPO/gamedev/bullosseum.png", + }, + { + title: "Hardwired", + studio: "Lostbyte", + url: "https://store.steampowered.com/app/3682210/Hardwired/", + logo: "/images/EXPO/gamedev/hardwired.png", + }, + { + title: "Osta", + studio: "Cup", + url: "https://store.steampowered.com/app/3997240/Osta/", + logo: "/images/EXPO/gamedev/osta.png", + }, + { + title: "Midnight Clinic", studio: "HRA Interactive", - logo: "/images/EXPO/GameDev%20logos/Cyber_Doc_Rogue.png", - url: "https://drive.google.com/drive/folders/1R6_3s92byAeHlKMeBP8f5ZnclUl5Wpj5?usp=sharing", + logo: "/images/EXPO/gamedev/midnight_clinic.png", + }, + { + title: "Midnight Souvenirs", + studio: "Path of Pixels", + url: "https://store.steampowered.com/app/3623230/Midnight_Souvenirs", + logo: "/images/EXPO/gamedev/midnight_souvenirs.png", + }, + { + title: "Estonian Language Learning Games", + studio: "Estonian Language Self Study Club", + logo: "/images/EXPO/gamedev/estonian_language.png", }, ]; +// University / TalTech GameCamp teams. export const universities: UniversityCard[] = [ { title: "Dwarf Escape", team: 'TalTech GameCamp ("Mõmmid")', - image: "/images/EXPO/ylikoolid/dwarf_escape.png", url: "https://ihorsylin.itch.io/dwarf-escape", + image: "/images/EXPO/ylikoolid/dwarf_escape.png", }, { title: "Packet Tracers", team: "TalTech IT-teaduskond", - image: "/images/EXPO/ylikoolid/packet_tracers.png", url: "https://alacrisdevs.itch.io/packet-tracers", + image: "/images/EXPO/ylikoolid/packet_tracers.png", }, { title: "OH CRAP!", team: 'TalTech GameCamp ("Skill Issue")', - image: "/images/EXPO/ylikoolid/oh_crap.png", url: "https://heavybro.itch.io/oh-crap", + image: "/images/EXPO/ylikoolid/oh_crap.png", }, { title: "Void of Hermes", team: 'TalTech GameCamp ("OnlyFun")', - image: "/images/EXPO/ylikoolid/void_of_hermes.png", url: "https://ron88.itch.io/voidofhermes", + image: "/images/EXPO/ylikoolid/void_of_hermes.png", + }, + { + title: "Eelloon", + team: "TalTech", + image: "/images/EXPO/gamedev/eelloon.png", + contain: true, }, ];