Tervetuloa portfoliooni

Nimeni on Teemu Hörkkö ja olen 33,4 vuotias kokenut pelinkehittäjä, ohjelmoija ja teknologian harrastaja, jolla on kokemusta sekä peli- että web-kehityksestä. Osaamiseni on karttunut vahvasti työn ja koulutuksen lisäksi aktiivisesta harrastuneisuudesta.
Valmistuin Kajaanin ammattikorkeakoulusta joulukuussa 2014 tietojenkäsittelyn tradenomiksi, keskittyen peli- ja pelimoottoriohjelmointiin.
Opinnäytetyöni käsitteli komponenttipohjaista objektinhallintaa pelinkehityksessä käyttäen Entity-Component-System mallia, joka on keskeinen osa objektinhallintaa moderneissa pelimoottoreissa. Sen voi lukea Theseuksessa.
Minulla on muutama open-source projekti GitHubissani.
Yhteydenotto
Jos haluat heittää minulle viestin, ota yhteyttä käyttäen sähköpostia.
Ansioluettelo
Ansioluetteloni (CV) löytyy täältä, sekä suomeksi että englanniksi.
Taidot & ohjelmointikokemus
Minulla on laaja kokemus C++-ohjelmoinnista, erityisesti pelikehityksen parissa. Lisäksi hallitsen hyvin modernin web-kehityksen kielet ja teknologiat, muun muassa PHP, Python, SQL, JavaScript, TypeScript ja React-framework.
Alta löydät listan muutamista mainittavimmista kielistä, teknologioista ja ohjelmistoista jotka tiedän tai tunnen — huomioi kuitenkin ettei lista ole välttämättä täysin tyhjentävä.

Yleistä
-
C++
Isoin osa C++-kokemuksestani liittyy pelinkehitykseen, vaikka olenkin nikkaroinut myös sovelluskehityksen parissa. Omissa projekteissani käytän usein SFML-kirjastoa.
-
C#
Minulla on jonkin verran kokemusta C#-pelinkehityksestä käyttäen Unityä ja XNA:ta. Sen lisäksi olen tehnyt muutamia pieniä Windows Form sovelluksia.
-
Lua
Lua kokemukseni on pääasiallisesti peräisin addon kehityksestä World of Warcraft pelille.
-
Python
Python on yksi lempparikielistäni tällä hetkellä — se on hyvin kätevä pienten apusovellusten ja skriptien kehittämiseen, mutta soveltuu mainiosti myös nettisivujen backendiin.
-
Palvelinkonfiguraatio ja -hallinta
Olen useamman vuoden ajan konfiguroinut ja hallinnoinut omaa virtuaalipalvelintani Hetznerillä. Palvelimella on perus LAMP stack Pythonin kanssa ja käytän sitä nettisivujen hostaamiseen sekä joillekin omille projekteilleni. Tämäkin nettisivu on tältä palvelimelta.
Myös Docker-palvelinkonfiguraatio on minulle tuttua. Palvelimellani ajetaan useita Docker-konttiapplikaatioita, esimerkiksi Git-palvelin.
-
Git & SVN
Käytän Gitiä versionhallintaan, mutta myös SVN on minulle tuttu.
Web
-
HTML, CSS & SCSS
-
PHP
Paljon kokemusta vanilla PHP:sta ja Laravel frameworkin kanssa.
-
JavaScript & TypeScript
Minulla on kokemusta vanilla JavaScriptin lisäksi Next.js/Reactista ja TypeScriptistä.
-
SQL
Olen työskennellyt enimmäkseen MySQL/MariaDB ja SQLite tietokantojen kanssa.
Ohjelmistot
-
Sublime Text & VSCode
Molemmat ovat hyvin käteviä tekstieditoreita joita käytän kaikenlaiseen: Lua addoneihin, web-kehitykseen ja satunnaiseen tekstinkäsittelyyn.
-
Visual Studio
Ensisijainen IDE, jota käytän C++-ohjelmointiin.
-
Adobe Photoshop ja After Effects
-
Linux
Suurin osa kokemuksestani on peräisin Ubuntusta ja muista Debianiin pohjautuvista distroista.

Konsoliohjelmointi
-
Nintendo Switch®
Työskentelin Frozenbytella yrityksen pelimoottorin alustaporttauksen alkuvaiheessa, vastaten useista perustason tehtävistä, kuten alustan konfiguroinnista, tiedostonhallinnasta ja ohjain-tuesta, sekä HD Rumble -integraatiosta. Lisäksi kehitin alemman tason netgame rajapinnan toteutuksen, jota käytettiin sekä online- että paikalliseen langattomaan moninpeliin.
Kyseessä oli merkittävä projekti, joka laajensi osaamistani matalan tason alustakehityksessä ja verkkojärjestelmien toteutuksessa.
-
Microsoft Xbox One®
Kokemukseni tällä alustalla keskittyy pääasiassa verkkokehitykseen, mukaan lukien suojattujen socket-pohjaisten yhteyksien toteuttaminen sekä online-moninpelin matchmaking-toiminnallisuuden käyttöön saatto. Lisäksi osallistuin moottoritason toiminnallisuuksien kehittämiseen, kuten alustan laitteistokiihdytetyn MP4-videotoiston integrointiin.
-
Sony PlayStation 4®
Tällä alustalla erikoistuin user presence -instrumentaatioon sekä erilaisiin trophy-järjestelmän toiminnallisuuksiin osana Trine 4 -projektia, tukien kokonaisvaltaista pelikokemusta ja alustan integrointia.
Sertifikaatit
-
Digitaalisen markkinoinnin perusteet
Myöntäjä: Google Digital Academy (Skillshop)
-
Hakukoneoptimointi
Myöntäjä: HubSpot Academy

Lisää taustoista
Jo ennen kuin ikääni mitattiin kahdella numerolla tiesin haluavani alkaa pelinkehittäjäksi ja ohjelmointi on ollut harrastukseni siitä asti. Ensimmäinen kieli jota käytin oli QuickBasic — ja hauska kuvitettu opaskirja kädessä yritin luoda useita tekstipelejä ja muita harjoitusprojekteja.
Myöhemmin törmäsin CoolBasiciin, joka oli varta vasten rakennettu Windows-pelintekoa varten. Basic-maailmassa seikkailuni ohella tapasin myös HTML ja PHP kielet ja tein ensimmäiset nettisivuni.
Vapaa-ajallani satunnaisen ohjelmointiprojektin lisäksi pelaan videopelejä, luen mangaa, kuuntelen musiikkia ja joskus soitan pianoa tai sävellän musiikkia.
Lempipelini ovat suurelta osin rooli- ja seikkailupelejä — The Legend of Zelda Tears of the Kingdom, The Elder Scrolls sarja (Morrowind on paras) ja Elden Ring. Olen myös pelannut MMORPG:tä paljon, erityisesti World of Warcraftia ja Guild Wars 2:sta, vaikkakin en niitä enää nykyään pelaa yhtä paljon.
Muutes, tykkään myös pinguista
Pelit
Tässä osassa löydät pelit joiden parissa olen työskennellyt ohjelmoijana. Ne ovat järjestetty uusimmasta vanhimpaan.
Frozenbyte
Alla olevat ovat pelejä, joiden parissa työskentelin Frozenbyten palveluksessa.
Trine 5
Windows, Xbox Series S/X, PS5, Switch
Trine 5: A Clockwork Conspiracy will take Amadeus the Wizard, Zoya the Thief, and Pontius the Knight on their most action-packed journey yet!
With their reputations tarnished, loved ones in danger, and their own magical powers at stake, the Heroes of Trine must reunite to push back a fearsome Clockwork army and bring peace and justice to the land!
Trine 5 jatkoi matkaani gameplay-ohjelmoinnin maailmassa. Kuten Trine 4:ssä (lisää alempana) työskentelin pääasiassa yleisen gameplay-ohjelmoinnin parissa ilman että olisin erikoistunut mihinkään yhteen asiaan. Asioita joita toteutin ovat mm. erilaiset gameplay elementit, nettipeli-komponentit ja monia muita pieniä juttuja ja bugikorjauksia.
Steam Traileri YouTubessa Lue lisää
Trine 5 on Frozenbyte Oy:n tuotemerkki tai rekisteröity tuotemerkki. Taide ja logo copyright © Frozenbyte Oy 2023.
Starbase
WindowsStarbase is a space MMO, with a hybrid of voxel and vertex-based technologies, fully destructible environment and an infinitely expanding universe. The gameplay in Starbase is focused on building and designing spaceships and stations, exploration, resource gathering, crafting, trading, and combat. The multitude of fine-detailed simulations in the game allow the players the ultimate freedom to conquer space and unleash their creativity.
MMO-pelinä Starbase oli jotain sellaista mitä en vielä ollut koskaan ennen nähnyt ohjelmoijana. Peli käyttää rajulla kädellä muokattua versiota Frozenbyten pelimoottorista, jättäen raskaan entity-component järjestelmän syrjään ja virtaviivaistaen sen massiiviselle online pelille sopivammaksi.
Liityin projektiin itse muutamia kuukausia ennen Early Access julkaisua ja työskentelin pääasiassa uusien avaruusaluseditorin työkalujen parissa, lisäten mm. maalaus- ja dekaalityökalut. Sen lisäksi nikkaroin niihin liittyvien GUI-komponenttien kanssa sekä loin materiaalihintaikkunan, jonka myös porttasin pelin sisäisille ruuduille.
Steam Traileri YouTubessa Lue lisää
Starbase on Frozenbyte Oy:n tuotemerkki tai rekisteröity tuotemerkki. Taide ja logo copyright © Frozenbyte Oy 2021.
Trine 4
Windows, Xbox One, PS4, Switch
The three heroes of the best-selling adventure series are back, sent on a quest to retrieve the troubled young Prince Selius. Amadeus the Wizard, Pontius the Knight, and Zoya the Thief are joined together once again on a thrilling quest through fantastical fairytale landscapes teeming with danger.
Prince Selius suffers from intensely dark dreams and, due to his magical talents, monstrous nightmares are able to slip into reality and wreak havoc on the waking world. Amadeus, Pontius, and Zoya must find the afflicted prince and resolve the desperate situation before the world is engulfed by the Nightmare Prince’s shadows.
Trine 4 oli ensimmäinen matkani gameplay-ohjelmoinnin maailmaan Frozenbytellä. Sen sijaan, että keskittyisin alemman tason pikkujuttuihin, halusin saada mahdollisuuden tuoda näytölle jotain näkyvämpää kuin vain verkkoyhteyden virheikkunoita (katso Nine Parchments alla).
Työskentelin melko yleisesti ilman erikoistumista mihinkään tiettyyn juttuun. Toteutin mm. gameplay-efektitukia, triggereitä, pulmien viimeistelyä ja fysiikkakomponentteja kuten liikekomponentteja, ns. hihnapyöräjärjestelmiä ja paljon muuta.
Steam Traileri YouTubessa Lue lisää
Trine 4 on Frozenbyte Oy:n tuotemerkki tai rekisteröity tuotemerkki. Taide ja logo copyright © Frozenbyte Oy 2019.
Nine Parchments
Windows, Xbox One, PS4, SwitchNine Parchments is a co-operative blast'em up game of magic mayhem. Runaway apprentice wizards seize the opportunity to complete their spellbooks by going after the lost Nine Parchments. As the would-be wizards rapidly acquire powerful new spells without learning proper safety measures, it's natural their hasty progress results in plenty of deadly accidents...
Nine Parchments oli toinen julkaistu peli aikanani Frozenbytellä ja verrainnollisesti isompi projekti kuin ensimmäinen projekti.
Työni tämän projektin parissa oli pääasiallisesti pelimoottorin kanssa nikkarointia ja toteutin vaadittavia alemman tason rajapinnan verkko-ohjelmointikomponentteja online moninpeliin sekä Microsoft Xbox One ja Nintendo Switch alustoille. Nintendo Switchillä lisäsin tuen yksittäisille JoyCon-ohjaimille ja toteutin pelikontrolleja.
Steam Traileri YouTubessa Lue lisää
Nine Parchments on Frozenbyte Oy:n tuotemerkki tai rekisteröity tuotemerkki. Taide ja logo copyright © Frozenbyte Oy 2017.
Has-Been Heroes
Windows, Xbox One, PS4, SwitchEmbark on an epic journey with the Has-Been Heroes, a group of legendary champions once celebrated throughout the kingdom – almost forgotten until the King has one more quest, the most epic of them all: TO TAKE THE TWIN PRINCESSES TO SCHOOL!
Has-Been Heroes projektin parissa työskentelin alemman tason pelimoottorijuttujen kanssa. Erityisesti Nintendo Switch konsoliporttauksen alkuunsaatto oli keskeisessä osassa työtäni.
Frozenbyte käyttää talon sisäistä omaa C++-pelimoottoriaan. Koska tämä oli ensimmäinen projektini yrityksen palveluksessa käytin aikaa myös pelimoottorin ja editorin käytön oppimiseen.
Steam Traileri YouTubessa Lue lisää
Has-Been Heroes on Frozenbyte Oy:n tuotemerkki tai rekisteröity tuotemerkki. Taide ja logo copyright © Frozenbyte Oy 2017.
Omat projektini
Nämä pelit ovat omia projektejani eivätkä liity työhöni Frozenbytellä. Osassa projekteja tein muutakin kuin vain ohjelmointia, mutta siitä tarkemmin jokaisen kuvauksessa. Videoita, kuvankaappauksia ja latauslinkkejä löydät Bluefox Games verkkosivuilta
Scyori
WindowsIs being evil hard work? Scyori does it for a living and now you can have a go at it too. There is a space station in the fringes of space that for some reason needs to be blown to pieces along with everyone on it. To make that a reality you have plasma guns and stuff.
Pyxenos pelin seuraaja, jossa samoja mekaniikkoja ja samanlainen graafinen tyyli. Ajan rajallisuuden vuoksi projekti ei aivan täyttänyt aikomuksiani useista pomo-taisteluista ja haastavasta vaikeusasteesta. Projekti on enemmänkin ns. proof of concept.
Tein pelin yksin. Loin sitä varten uuden pelimoottorin käyttäen C++:aa ja SFML ja Box2D kirjastoja, tarkoituksenani parantaa pelimoottorin käytettävyyttä aikaisemmista projekteista saatuun kokemukseen perustuen. Tein myös pelin grafiikat ja musiikin. Peli osallistui Assembly Summer 2013 gamedev compoon, jossa se sijoittu 10. sijalle.
Pyxenos
WindowsBrace yourself for a striking adventure. You, Pyxenos, must defend some place for no reason whatsoever now and for ever. Can you do it? Will the overwhelming numbers of your enemies vanquish you or shall you triumph on this day of glory? Only you can find out!
Teimme tämän pelin C++-kielellä käyttämällä jo suurimmilta osin toimivaa pelimoottoria edellisestä projektista. Tavoitteenamme oli luoda haastava ja siistin näköinen arena shooter peli ja osallistua sillä Assembly Summer 2012 gamedev compoon. Peli sijoittui 5. sijalle. Loin peliin myös grafiikat ja musiikin.
Blogic
WindowsBlogic is an arcade puzzle game where your goal is to destroy blocks by dropping them from up top to combine them into groups of four or more. Arcade-mode gives you limited time to destroy a certain amount of blocks while Puzzle-mode has unlimited time but a limited amount of moves.
Tämä projekti oli osa koulukurssia ja oli meidän ensimmäinen isompi C++ projekti. Rakensimme yksinkertaisen pelimoottorin tätä peliä varten käyttäen C++:aa ja SFML kirjastoa.
Projektin aikana kohtasimme useita sellaisia haasteita, joita C++ pelinkehitys tuo mukanaan ja meillä oli ongelmia muistivuotojen ja segfaulttien kanssa, mutta otimme niistä opin. Loin tätä peliä varten myös kenttäeditorin, jotta toinen tiiminjäsen voisi suunnitella pelin kenttiä ja pulmia.
Websivut
Muita websivuja
Loin nämä websivustot joko itselleni tai freelancetyönä. Ne ovat järjestetty uusimmasta vanhimpaan.
Kehitin tämän fanisivuston eräälle mobiilipelille, tarjoten peliin liittyviä kaavioita ja tilastotietoa, joiden avulla pelaajat voivat tehdä parempia päätöksiä ja parantaa pelikokemustaan. Vaikka peli on sittemmin lopetettu eikä sivustoa enää päivitetä, projekti osoitti vahvaa osaamista datan esittämisessä ja järjestelmän rakenteessa.
Projektissa toteutin ainutlaatuisen backend-strategian Pythonilla. Sen sijaan, että sivusto olisi renderöity dynaamisesti, sisältö prosessoitiin ja renderöitiin päivittäin Jinja2-templaatteja käyttäen, ja syntyneet staattiset sivut toimitettiin AngularJS-pohjaisen single page web-applikaation kautta. Tämä lähestymistapa optimoi suorituskyvyn ja varmisti luotettavan sekä yhdenmukaisen sisällön toimituksen.
Kehitin Suomen adventtikirkolle tämän kattavan raamattuopintosivuston, joka mahdollistaa käyttäjien rekisteröitymisen kursseille sekä kokeisiin osallistumisen.
Alustaan sisältyy täysimittainen hallintapaneeli kurssien luomiseen sekä sisällönhallintatyökalut lisäsivujen ja tiedostojen hallintaan. Ratkaisu toteutettiin Laravel-taustajärjestelmällä ja AngularJS-pohjaisella hallintaliittymällä, mikä takasi vankan ja skaalautuvan järjestelmän sekä käyttäjille että ylläpitäjille.
Netpal

Netpal Oy palkkasi minut kehittämään paikallisen videoiden jakamisalustan Parkanon kaupungille. Alusta tarjosi keskitetyn portaalin yhteisötapahtumien ja muiden paikallisten tapahtumien videoille ja käyttäjät pystyivät myös lataamaan omia sisältöjään.
Alustan kehittämisen lisäksi osallistuin Netpalin graafisiin ja videoeditointiprojekteihin, tukien yrityksen multimediahankkeita.
Musiikki
Toisinaan saan inspiraation säveltää musiikkia tietokoneellani, käyttäen FL Studiota DAWinani.
Tsekkaa myös musiikkini SoundCloudistani ja vanhempaa kamaa löytyy myös Mikseri.netistä.
Musiikkiholvistani löydät kaikista ajantasaisimman arkiston uudesta musiikistani, käy katsomassa osoitteessa vault.sonaza.fi (englanniksi).
Pianosävellykset
Ylläolevan musiikin lisäksi minulla on muutamia alkuperäissävellyksiä pianolle, joiden nuotit voit löytää alta PDF muodossa.