Sunday, 25 January 2015

Humen!

So, last year has gone, this year begun. I'm in Kotka, land is white with snow and everything seems ordinary. Unbelievably dull and uncreative environment for such a free spirit as me, don't you agree? Well, for starters, I don't. Last spring I tried to enhance the creativity of this dull-sounding environment by barricading myself in this flat. Results I've hopefully talked long enough already here. Last autumn I tried similar thing by participating in the startup-things. That worked out a bit better. I didn't produce anything concrete in them, but now I understand how my thinking has been flawed. I might be committing one of the deathly sins, but I think I'm scrapping the Lomaproosa, the original unreleased tale of my world of Kanariffa, to be just a (too) long-lived design document. Currently I have a prequel to that tale under development, in english this time, and once I have solid foundations, I'll rewrite the Lomaproosa in english too. It needs a rewrite, not only because of my arguably stupid dream of worldwide audience, but there is the whole middle-section I'd like to burn in eternal fires of oblivion.

Let's return to this world. Barricading myself in with the computer is supposed to be more creative than trying to be a bloody extrovert, isn't it? I mean, last spring I came up with the instant messenger-thingy, whereas last autumn I didn't create anything, as I just said. If we value our actions only by concrete creations, then yes, last spring was infinitely better, but if we value also well-being and have some long term vision, autumn was better. It pains me to say this, for I know what a PITA people can be, but creativity is not something that is found within oneself. Or at least not within me. I actually do require people to be able to think at all. There would be no Kanariffa without me and a few friends abusing caffeine in the middle of the long summer nights. There could be MERPG if I interacted with any designers face-to-face in my daily life (thanks KyAMK for keeping them in the north and us in the south!). Fortunately though I don't, for if such a thing existed, its biggest asset, the story, would be a disappointment.

But past is past, and I must face this newish year bold. Shall I also perish with it boldly? That remains to be seen.

I don't remember if I have announced this here yet. I'm in our local student association's board. I don't have (at least yet) any real responsibility, so pedagogically I'm just trying to infer how these organization thingies are ran. There's also some space to influence things, and I see a WTF in a need of fixing, I wont hesitate to do so. But the best thing I enjoy there? The general feeling of insanity. Days are long, but people seem to enjoy each other. This is nice, for this kind of environment boosts creativity. The organization has existed for thirty years, so there's some culture I need to get familiar with. So, more things to inspire from.

I'm interested if it's only the company of diverse people that has creative results in things I do, or being out of the comfort zone in general. I'm very close to applyin as a tutor. This sounds like the complete opposite of what I like doing, what with a billion familiar and unfamiliar people to interact with, and no absolute, correct answer to solve the whatever problem tutors are trying to solve.

There are serious human-related thingies (not neccessarily problems) that I'm looking forward to pondering on. Now, with clock 1:30am and alarm set up at 8am, I fare thee good night and merry last day of GGJ tomorrow.

Wednesday, 31 December 2014

Poet without a rhyme - Vuosikertomus -14

Apologies for anyone not capable of reading Finnish. This is the annual text that just has to be done in my native language because reasons. I'll resume with the english material in January. Or February. Or at some distant point in future.

Taas on planeetta kiertänyt täydet 2π radiaania auringon ympäri. Numeraalisesti lahjakkaat tietävät mitä tämä tarkoittaa: historiikkia ja ennakointia. Vuosikertomus (2013)ssa selitän kuinka minulla on ihanjustkohta jotain valmista näytettävää MERPGistä. Yllätys! Ei ole! Vieläkään! Eikä tule ennenkuin saan jonkun muunkin inspiroitumaan tästä! Enkä usko että tällaista ihmettä tulee ihan hetkeen tapahtumaan, koska itsekään en ole millään lailla inspiroitunut ennen kuin ymmärrän miten Kanariffan maailma toimii. Tämä taas vaatii uskomattomia määriä proosaa, sen editointia, ja mahdollisesti englanniksikääntöä. Minulla on täydellinen pelimottori karttaviritys, sekä kilo suunnitelmia siitä miten rakentaisin täydellisen, modattavan kaksiulotteisen tarina-/roolihörhöilyn Clojurella. Minulla ei kuitenkaan ole ketään, joka piirtäisi näitä, ja vaikka vanha viisaus sanoo insinööripohjaisten tikku-ukkojenkin olevan parempia kuin ei-minkään... niin ei. Ne eivät toimisi.

Siltä varalta että joku tuttu lukee tätä: puhun CVC-designeista myöhemmin, jos muistan. MERPGillä tarkoitetaan vielä sitä, mitä MERPGillä tarkoitettiin vuosi sitten. Lisäksi, minulla olisi Tässi, mutta hänelläkin on parempaa tekemistä. Tai jotain. En itse asiassa ole täysin varma miksi emme upota Öitä tähän projektiin! Ehkä siksi, kun niitä on nykyään niin vähän, niin on sitä kuuluisaa parempaakin tekemistä. Vanhaksi kasvaminen on tyhmää, koska tulee oikea elämä, jota pitäisi elää.

Mitä olen vuoden -14 aikana saanut aikaiseksi? 2 pientä ja sööttiä peliä: The Geometrician, yksinkertainen match-3 peli Candy Crush Sagan tyyliin. Se on tehty Clojurella, joten se toimii missä vaan mihin saa Javan asennettua, eli käytännössä kaikissa pc-käyttiksissä paitsi Windowsissa. Toinen peli on luovasti nimetty Tetris, joka on tehty C++:lla, ja täten toimii tuskin missään. Se kuitenkin kääntyy kaikilla unixeilla joihin SDL2 ja SDL2_ttf ovat saatavilla, sekä Windowsilla, jos on niin pähkähullu että jaksaa selittää Visual C++lle missä yllämainitut kirjastot sijaitsevat. Visual C++ totuttuun tapaan ei täysin ymmärrä C++11ä, joten kannattaa kääntää windows-branchiä, ei masteria.

Näiden lisäksi rakensin pikaviestimen Clojurella Herokun päälle. Sekä serverin että clientin sorsat ovat githubissa. Systeemin turvallisuus ei välttämättä ole kovin hyvä, muistan lyöneeni päätä seinään kun en löytänyt Clojurelle yhtään fiksua sessionhallintakirjastoa, enkä myös halunnut keksiä omaa. Silti, projektin loppupelissä tappoi Worse is Better-periaate. Tässin kanssa sosialisoidessa skype on riittävän hyvä sen neljä kertaa kvartaalissa kun hän on tietokoneella sosialisointitarkoituksissa, satunnaistuttujen kanssa sosialisoidessa jopa facebookin ällöchat on riittävän hyvä, ja irkkaus ERC:llä on itse asiassa paljon parempi tapa kommunikoida kuin pikaviestittely clojureclientillä. Silti, toiminnallisuudeltaan Windows Live Messenger -09:ää vastaava Clojuretoteutus, joka pitää NREPL-serveriä kustomointia varten auki olisi minulle melko märkä uni, jos viitsisin ratkaista sosiaaliset ongelmat tämän tieltä.

Githubin projektilistalta silmiin sattunee projekti nimeltä melisp. Kesällä murehdin Clojuren JVM-riippuvuuksia, JVM:n alustakohtaisia ongelmia (en mitään nimiä halua mainita, mutta windows) ja Oraclen huonoa käytöstä, ja pohdin että jos joskus aikoisin tehdä jotain oikeasti hienoa lisp-softaa, opiskelisin joko Common Lispin työkalut (jolloin olisin riippuvainen SBCL:n kehittäjäjoukkiosta, mikä sopii minulle) tai tekisin oman Lispin, jonka jännyydet ja ominaisuudet olisivat minulle ilmiselvät. Koska minulla on historiaa virtuaalikoneiden kanssa urpoilusta, oman lispin toteutus tuntui ideoista parhaimmalta. Kesällä jaksoin toteuttaa projektia niin paljon että sain tulostettua shelliin "Hello world!" C:stä. Siihen se sitten jäi, minulla oli työmatkoilla parempaakin tekemistä kuin yrittää saada selkoa stdlibin dokumentaatiosta 1024x600 - kokoiselta näytöltä, koneelta jonka keskusmuistiin mahtuu juuri ja juuri kerneli, X ja Firefox.

Tutustuttani marraskuussa tetriksen myötä Linuxin C-kehitystyökaluihin tarkemmin jaksoin jatkaa tätä projektia. Parseri muistaakseni erottaa listat, atomit ja stringit toisistaan. Se ei kuitenkaan osaa avata listoja syystä, jota en ymmärrä lainkaan.Minun pitäisi repiä C++-luokat pois projektista, jotta pääsen varmuuteen siitä että taistelen loogisen härön kanssa enkä pelkästään typerän oliomallin, ja joko kikkailla C:llä tai korvata koko systeemi joko Common Lispiin tai Clojureen pohjautuvalla virityksellä. Kun saan listatkin auki, opiskelen stackkoneiden toimintaa, rakennan jonkinlaisen prototyypin, säädän kääntäjän tuottamaan puumallitulosteen sijaan oikeaa tavukoodia ja viritän prototyyppistackkoneen ymmärtämään tätä tavukoodia.

Mitä tästä projektista tulee isona? En tiedä, ei välttämättä muuta kuin tietojenkäsittelytieteellinen kokeilu, jonka myötä voin lopultakin väittää olevani aito koodari. Mahdollisesti integroin opengl_thingie - projektissa oppimiani juttuja tähän projektiin, ja aikaansaan jonkinlaisen 3D-työkalun? Jos näkisin tulevaisuuden, ei minun tarvitsisi kirjoittaa näitä vuosittain.

Minkälaisia projekteja ensi vuonna olisi odotettavissa? Minulla on mielessä eräs projekti, joka vaatii sekä Herokua että Android-clienttiä, mutta ennen kuin saan vihreää valoa kirjoittamalleni speksille, en siitä täällä hölötä. Lisäksi minulla on eräs kouluprojekti, joka voisi vaatia tetrispelin porttausta clojurescriptille ja oikeita grafiikoita, mutta hän on yhä odottamassa että viitsisin esitellä häntä projektin päättäville tahoille.

Viime vuonna ennakoin että startuppijuttuihin voisi olla kiva sekaantua. Noh, minähän sekaannuin. Toukokuussa (vai Kesäkuussa? En muista) olisi ollut ensimmäinen Cambridge Venture Camp, jolla KyAMK oli mukana. Mieleni olisi tehnyt sekaantua siihen, mutta kun olin jo Helsingissä palkkatyössä, en ehtinyt. Lokakuussa Kouvostoliittolaiset alkoivat puhua uudesta Venture Campistä, jolle mentäisiin hiomaan liikeideaa ja harjoittelemaan sen esittelyä. Sinnehän minä hain, mutta koska hakemukseni oli järkyttävän myöhässä, oli lähellä ettei tiimimme päässyt sinne. Sinne kuitenkin pääsimme, ja loppujen lopuksi minulla oli taiteellisen MERPGin rinnalla tuottelias MERPG. Lisäksi minulla on muusikko ja ohjelmoijavoimaa jolla toteuttaa tämä tuottava suunnitelma, mutta tiimistä puuttuu visuaalisen tuotannon lahjakkuutta jonkin verran. Tällä hetkellä tiimistä puuttuu myös inspiraatiota, mutta sen löytyminen on riippuvainen lähinnä ajasta.

Siinä taisi olla tiivistelmä kaikesta, jota olen tänä vuonna ohjelmistomaailmassa työstänyt. Seuraavaksi kuukausiyhteenveto:

Tammikuussa suutuin silloiselle karttaeditorille, ja sen myötä välimme olivat poikki puoli vuotta. Koulu jatkui, pääsin opiskelemaan oikeaa matikkaa ja fysiikkaa, kun lukionkertailu jäi taa. Helmikuussa oli hiihtoloma, jonka vietin helsingissä palkkatyössä. Windowshommia, aloin oikeasti miettiä onko Visual Studio ja mitä Windows-devit käyttävätkään paras, tai edes hyväksyttävä työkalu ohjelmointiin. En vieläkään ole aivan varma tämän ongelman ratkaisusta, mutta tiedän olleeni paljon onnellisempi päästyäni kotiprojekteissa eroon VS:stä ja Windowsista.

Maaliskuussa oli... jotain. Sonata Arctica julkaisi Pariah's Child-kiekon. Myös Delain julkaisi kiekkonsa alkuvuodesta. Within Temptation julkaisi Hydran, mutta sitä on tullut yllättävän vähän kuunneltua. En ole varma onko se vaikea vai tylsä levy. Voi olla että se avautuu vielä minullekin, mutta en lupaa mitään.

Huhtikuussa Tässi pyörähti Japanissa, ja toi sieltä paikallisen tulkinnan Pariah's Childista ja Tokion metrokartan tuliaisiksi. Huhtikuussa oli myös ensimmäiset Insinööriopiskelijapäivät, joille osallistuneet saivat nauttia hehkeästä seurastani. IOP järjestettiin Rovaniemellä, ja voin vannoa sen olleen ensimmäinen ja viimeinen kerta kun kuljen Rovaniemelle jollain muulla kuin yöjunalla. IOP:n rastikierros oli hauska, illallakin saattoi olla jotain ohjelmaa, ja seuraavanakin päivänä tapahtui... jotain. Minulla oli hauskaa, ja kuten kuvasta kuuluu, saattoi alkomahooli virrata. Huhtikuun loppupuolella kävin Virossa, josta löysin jotain kaunista. Kingin Musta Torni on kaunein kirja, jonka olen tähän mennessä lukenut. Ainoa Mustaa Tornia parempi lukukokemus on vain Mustan Tornin luku uudestaan. Ainoa Mustaa Tornia parempi lukukokemus on vain Mustan Tornin luku uudestaan...

Toukokuussa koulu oli loppu. Kuukausi näytti lähinnä tältä. Luin, pyöräilin, luin, ja pyöräilin vähän lisää. Viime kesänä en jaksanut pitää yhtä tarkkaa lukua poljetuista kilometreistä kuin edellisenä, mutta pelkästään toukokuussa tuli tehtyä useampi 40km lenkki.

Toukokuun puolivälissä, muistaakseni 16.5, herätyskelloni oli viritetty soimaan poikkeuksellisen aikaisin. Helsingin päärautatieasemalta lähti Allegro-juna, jonka numeroa en muista enää, klo 6:06 kohti Pietaria. Se oli hieno reissu, kolmen päivän aikana emme muistaakseni paljoa muuhun ehtineet tutustua kuin hermitaasiineremitaasiin, mutta kotiin palasin taas kokemusta rikkaampana. Pidän venäjän kielestä, alkeistasolta katsoen se vaikuttaa paljon loogisemmalta kuin germaaniset kielet... tai ainakin substantiivista näkee välitt&oml;mästi mihin sukuun se kuuluu. Ergo venäjä on loogisempaa kuin ruotsi.

Kesäkuussa oli palkkatöiden vuoro.

Heinäkuussa palkkatyöt jatkuivat, ja innostuin vääntämään karttaeditoria. Lopputulos on Githubissa odottamassa paljon puhuttua inspiraatiota. Heinäkuussa pyörähdin myös AssCreed2:n maisemissa Firenzessä. Tukikohtamme oli viiden päivän ajan Milanossa, ja useimpina päivinä tutkimme ympäristöä, ja eräänä päätimme lähteä junalla vähän kauemmas. Kevyesti arvioiden 18h myöhemmin olimme palanneet Milanoon todella väsyneinä. Se oli hauska reissu, josta olisi kuvia jos jaksaisin kaivaa niitä.

Elokuussa palkkatyöt loppuivat. Kesän suurin menestys oli tulkinnasta riippuen joko ne muutamankymmentä opintopistettä jotka tienasin työskentelemällä, muutama tuhatta euroa jotka tienasin työskentelemällä, tai ne kolmisenkymmentä tuhatta sanaa, jotka aikaansain kantamalla netbookkia aamubussissa mukanani töihin.

Elokuussa, kun kutsu fuksiristeilylle kolahti pärstäkirjaani, mietin että yök, pitäisikö minun viettää laivalla ilta ihmisten kanssa sosialisoiden. Ajateltuani asiaa tarkemmin, tavoitteeni elämässä on löytää parhaat ihmiset, ja tehdä heidän kanssaan jotain aivan parasta. Miten sitten ajattelin löytää nämä parhaat ihmiset, kotona murjottamalla? Niinpä niin, risteilylle tieni kävi, eikä näin jälkikäteen harmita yhtään. Turku on hieno paikka, ja maanteitä sinne kulkeminen Kotkasta on lähes yhtä parasta kuin rautateitä.

Syyskuu oli... jotain. Koulu jatkui, pelasin AssCreed4:n läpi, harrastin matematiikkaa, fysiikkaa, leikin raspilla. Tein kaikenlaista. Leikin ekstroverttia. Lokakuussa Startup-hörhöilin. Startup Workshop Kotka, Startupweekend Vantaa, CVC... monia mahdollisuuksia verkostoitua ja leikkiä ekstroverttia. Huomasin verkostoitumisen olevan jollain perverssillä tavalla oikeastaan aika mukavaa.

Marraskuussa olin enemmän verkostoitumassa kuin koulussa. Silloin kun olin koulussa, keskityin enemmän Tetrikseen kuin siihen mitä tunnilla tehtiin. Se sitten näkyi Joulukuun tenttiarvosanoissa.

Marraskuussa osallistuin Kotkan Insinööriopiskelijat KoiO Ry:n kokoukseen ilmaisen pullan toivossa, ja päädyin seuraavan vuoden hallitukseen. Miksi? Verkostoitumisen toivossa, tietysti! Se on uusi lempisanani. Toinen on ekstrovertti. Jos hoen niitä tarpeeksi, saatan ymmärtääkin niistä jotain ennen ensi vuoden loppua.

Mitä odottaa ensi vuodelta? Tuttuun tapaan ensireaktioni tähän kysymykseen on "emmietiiä", mutta toisin kuin vuosi sitten, tällä kertaa minulla on pieni, haalea aavistus. Verkostoitumista, ihmisiä, ekstrovertismia (jos se on sana). Ehkä saan jopa jotain oikeaa valmiiksi. Tulevaisuus on jännä. Tule tutkimaan sitä kanssani?

La oscuridad va romperme
No puedes salvarme
Será mi perdición
Siento un dolor abrazarme
La vida me destruye
No tengo salvación

Tuesday, 23 December 2014

I made a tetris!

I made a tetris. You can download it from the Github, if you can make sense of the Releases - list. I might have to hack a real release-distribution channel at some point, but for a leisure project such as this, github has to suffice. It's still better than distributing links to my Dropbox's Public-folder.

There are binaries for Windows and Mac. Because practically nobody at school is going to grade this as .rpm, .dpkg, or whatever-the-arch-pacman-uses, I don't care to learn to wrap such packages for Linux. I made a Mac package, because I was somewhat interested in how .dmgs are made, had my laptop with me, and a free slot of time to kill. Windows package I made because if someone is going to try my game, for example in school, it is most likely tried on a Windows machine.

If on linux, what you have to do would be the following on my arch-box:

git clone https://github.com/feuery/tetris.git
pacman -S scons SDL2 SDL2_ttf
cd tetris
scons
cd ./bin
*Copy a font of your choosing to this dir, with name 'DejaVuSans-bold.ttf'*
./tetris

On you basic Fedora- or Ubuntu-boxen the dev-sdl-packages and regular sdl-packages are different packages.

Merry christmas!

Tuesday, 11 November 2014

Gamedesign from Pyhtää

I seem to be a proud owner of an iPad2 - device. I had one of these in the spring, and I didn't like it then. However, that device was school's, not mine, so I didn't dare to abuse it in the ways I'm known to abuse my computing devices usually. I'll do some iOS games-market research with this thing, and explore if I'm able to combine it, its physical keyboard and one of my raspberry pis into an ultimate computing experience. The keyboard feels bloody awful, but unlike last time, it's physical.

But, iPad's not what I'm here to talk about today. Last week I spent in the Pyhtää, trying to shape the MERPG into a profitable form. Boy how it formed: the current idea in my head is to ditch the old manuscript from the http://merpg.webs.com completely, maybe recycle a few of the character designs. I'd still keep the story of Rajol, the one of the two discrete stories I've written into the world of Kanariffa I actually like, unpublished to the masses until I decide it's ready, and the fancier Clojure-techdesigns for a more artsy game in the future, and make this game-designed-for-CambridgeVC to have it's own story, own world, and a set of monsters one can team with to uncover the story.

Why? Because I fear if I go to Cambridge to pitch an interactive movie/technical wankery I've designed the game to be, I'll be laughed out of the island.

But this new game, which is called in-team 'Pröng', but due obvious reasons, is from now on called 'The Game' in-blog. Until someone comes up with a better one, of course. It's very limited visual designs still apply: the style of the graphics is still 2D-highly saturated-pixel or vector -art. How do the mechanics of this game work?

Single player

You begin by customizing your character's sprite, name and base-type. I think it's best to win the secondary type through lottery, but I can imagine implementing the secondary types through Dragon Ageish specialization system. You meet some new team member or NPC that knows this specialization, you ask if they can teach it to you too, and presto, you've become a grass-assassin or something as insane.

Anyway, you start your game, with one or two friends following you. You run around the world, finding and doing quests, uncovering the story. The world is open as in Pokemon, and the difference between in-fight and out-fight is not as huge as in Pokemon. In neutral territory, sometimes based on randomness, sometimes because the maker has decided to put a trigger there, you're attacked by Dragon Ageish wave(s) of enemy. The fighting system is also inspired by DA. You ran around freely in pixel-space (instead of 20px*20px tile-space), use moves (that autolock to the nearest target if you don't pick a target with mouse/touch) and can pause the game as conveniently as in DA. I guess if it will seem better, implementing a Pokemon MDish turn- and tile-based system is a possibility, as the reasons I originally ditched that idea for are unbelievably underspecified.

As I said, the world is open like in Pokemon. There are also closed, randomly generated dungeons, from where you try to find your way through with as little casualties as possible. I'll try to come up with a good generation algorithm, but as I haven't done this kind of a thing ever, I'm open to suggestions of material to learn the theory from.

Not only can you fight NPCs, you can discuss with them, answer their questions in different ways (because, you know, RPG, even though I don't have time to write a true multithreaded story in the week before the Kotka's Warming Game jam), bring items to and from them. They can be led through the random-dungeons, you can fetch items from these dungeons for them, save their friends... there are a million possibilities I'm too tired to come up with currently.

I like the idea of generating monsters teammates randomly, but in Pyhtää I was told that evolution of the teammates is a crucial element in this kind of game. I agree, but it makes the random-generation a bit harder. An idea I've played in my head is to have every monster share the generic baby-teenager-grownup - evolution stages, and do some magic to customize the pre-rendered animations according to a die.

Training teammates can be done outside the storymode too. There will be a random quest generator in the game, a sort of like the pelipper post office in Pokemon MD.

You can save the game any time you want in single player mode. If in a fight, just pause the game and save. You will resume from the exactly same circumstances.

Multiplayer

You can trade teammates with your friends, you can fight in a PvP setting against them, there's possibly some sort of chat for those in the game just for the sociality. You can play multiplayer quests co-operatively with your friends too. I don't know wheter these quests form a parallel storyline or are just a series of randomly generated quests.

Differentiation

The game differentiates from the Pokemon games through much better storyline, and at least from the older games, through a better multiplayer. I haven't extensively researched the Wifi-properties of the games >=Diamond. The real time combat is also a differences, but it will probably be disliked by as many pokemon-addicts as liked. One plus for us is that if you haven't yet bought a 3DS and X/Y, and are considering between that and our game, there's a high chance you'd rather buy ours because you don't need another device for it. Statistically speaking, you probably already have one of the following: PC/Mac/iOS/Android/Windows Phone.

How does it differentiate from the Pokemon MD? The combat system isn't turn based, and most of the flaws in the original MDs (friend abandons you after finishing the story, random generated quests are boring, story progresses way too randomly) will be averted. The evolution system is better also, but that doesn't mean it's a good system in our game. It just means evolution is mostly fucked in all MD-games.

How does it diff from the DA games? I dunno, 2D-graphics, happy-happy graphics, a bigger team, more diverse (pokemonish) type/class system... to name a few.

These are the most obvious differences, but why would someone pay for this game? I have no idea! The singleplayer will be free-to-play, because I've been told that's better than selling it for 8€ in app stores. It's possible that I'll publish both ad-crippled, free version, and 8€ ad-free version. I've also toyed with the idea of having a subscription fee to the multiplayer, because running heroku servers isn't exactly free, and it'd be a bit more expensive for those playing the otherwise free game.

Does this sound cool? Am I speaking crazytalk?

Sunday, 2 November 2014

Building MERPG and a Startup

So, I've upgraded my Mac to the Yosemite, changed the Emacs from the emacsforosx-build to the brew's build with Cocoa bindings, broken the cider-eldoc - connection, fixed a couple of bugs on the MERPG's map editor, written the map-save-procedure halfway... and lived through the soft landing of the Cambridge Venture Camp. The last one was especially crazy: by the end of the two-day event I got to actually think about where I'm supposed to make the money from with this game, how am I going to differentiate from all the other pokemon-lookalikes (a phrase I've begun to use with this game, which is fitting considering the idea began as a clone of the Pokemon MD: Blue Rescue Team), and then I had to actually communicate pitch these things successfully. In bloody english.

Next week I'll spend in Pyhtää, a small city near Kotka. Unless I seriously misremember, we're mostly honing the pitches and theorizing about the business model.The evenings will be free to hack the MVP, for I think there's not much else to do in that city. MVP will probably need another blogpost as soon as I've got a base understanding of what kind of tech we'll be building it upon. As I'm not the lone engineer, using Clojure will be a PITA as I can't be arsed to spend half a day to teach my fellow teammates the language and relevant APIs and a year to teach (why this is better) than(this, abomination, of, a, syntax);

Startup world is an interesting mini-economy. The major groups are the devs, the designers and the business guys. Of course any of these can be broken into minor groups, such as back-end-, front-end-, FP-, OO-, and such developers; marketeers, sales(wo)men, and all the subsets of X designers. It's a perfect symbiosis. Most of the designers are absolutely brilliant with the visual aspects of the job, but once one has to bake functionality to the beautiful sketches, they are... well, not useless, but somewhat out of their area of expertiese. Especially salesguys seem to understand customers and what they need, but for the sake of not drowning in techical debt, they must not be left alone near a computer with Microsoft Office. Devs are incapable of interacting with an ordinary human being, be it a customer or a coworker, and for the sake of everyone's eyes they must not be left alone near a photoshop.

This Cambridge-thing will either kill me or make me a more sales-y engineer. When I say sales-y, I am applouding salesguys' ability to make themself a friend of the customer, convince them of the value of their product and usually perform the transaction too. I dread opening my mouth, I don't like it if I have to make sounds approaching human speech, and... blahblahblah. Look at me trying to make the venture camp to kill me. There are other people, yes. Other people are scary, very yes. Speaking to them will make or melt a man, and as the team is still in a fragile state where I'm not entirely certain if the others are as fanatically dedicated to this project as I am, I cannot leave the pitching entirely for others to do.

I do my best thinking with my fingers, so let me transcribe my last-friday 1,5 minute pitch I spent about twice that time writing:

Hello! We're making an epic game!

The genre of this game is RPG. It'll be a Pokemon-lookalike with a hooking token economy and a complex story.

The trading of tokens will hoke the players for generations to come.

Euros will come from paid app, and in the free app from the in-app purchases and one-time price to get to the global multiplayer center.

I have understood that in finland game shops cooperate rather than compete, and market size analyzis is a bit unnecessary, because unlike in regular world, the customer isn't lost to us if they buy another pokemon-lookalike [1]. If they buy such a game, they are in fact in our target group, and more prone to buy ours.

We're the most epic team ever, 2 awesome engineers from Kotka and an artist from Kouvola. [2]

We're asking for monetary investment, as one does have to eat every now and then even when developing epic games.

Thank you dear people. Do you have any questions?

That's the essence of the draft I wrote to support me on the stage. In other words, that's what I tried to say. What's good in it? I was told the abuse of adjectives like 'epic', 'hooking' and such made me sound enthustiac. What's bad in it? For example, I failed to articulate my enthustiasm for the game's story, the only part that's received enough love. Back in the first weekend of September, I was visiting some sort of game-startup-gathering in Kouvola. There I saw this game, called Avenging Angel, 3D-fpsrpgwhatever that takes place in a futuristic steampunk world. I can't recall exact details of its pitch, but I remember on being sold on the idea of the Dark Amber making a game based on this universe Mr. Brandt has created over a 20 year period.

That reminds me of the way I've progressed with the MERPG. While trying to find an artist to share this vision of mine with, I've done a few sketches of the game engine (and a few gazillion sketches of the tilemap editor, and now at last the second clojure-based revision seems to fit in the sweet spot of enough flexibility, effectiveness and a niceness to develop) and built the world by writing loads of prose. I've got around 70 000 words now, and most of it should be useable in the game. The only problem is that while the original manuscript, one designed for the game, and the later prose, designed to expand the game's world, use the same characters in the same world, they are not exactly compatible.

Anyway, another negative on this pitch is the paragraph of finnish game industry cooperating rather than competing. I'm repeating the footnotes, but I have no idea if this is actually how it works. I just heard someone say this in an IGDA Kotka meeting back in May. I dislike saying aloud stuff that has a possibility of being false even more than I dislike saying anything aloud. I don't understand how to analyze the market in the software level of the gaming world, and I'll most probably need to minor in economics in school or find someone who has before anything on this insane scheme has a chance to generate revenue.

And the last & the worst problem: I was asked how I'm planning to differentiate from all the other pokemon clones/lookalikes. I almost made a clown of myself by asking what I'm supposed to differentiate from, but saved myself by mumbling about how to differentiate from the real pokemon games ("Story is a lot more complex[3] than in pokemons, the tokens aren't monsters but the same kind of characters as your original team, blahblahblah"). The truth however is that I played Pokemon MD: Blue Rescue Team back in -11 or -10, wondered what the heck for there was no more such wonderful experiences to play with, and ran off to design and implement MERPG on top of this idea INSTEAD of actually researching the market. That's why it took me a year to understand that the MD-series had gotten a new title already back in -09.

As far as I know, there are no pokemon clones (at least like the one I've spent years designing)(aside from the actual sequels I've missed). Am I wrong or am I seriously wrong?

See you again sometime; now I'm off to bed and to Pyhtää in the morning


Footnotes

  1. I'd love if someone could affirm or refute this paragraph. I have no hard data on the subject.
  2. Outside the academic season, we could possibly have Tässi with us also. He's not bad with photoshop/paint.net, he has drawn everything currently on http://merpg.webs.com, and thus has the best idea of the style I'm after in this game. He also does brialliant job interpreting my thoughts to the regular people and vice versa, and isn't as hopelessly horrible in presenting in english as I am.
  3. Words "complex story" bring shivers of pure joy to anyone that's played Witchers or almost any other RPG on PC, but to the audience of last friday's pitch these words brought negative connotations. Interesting.

Tuesday, 7 October 2014

MERPG's specification as of October '14

I seem to have a malfunctioning Razer keyboard reading keypresses twice, like thiis. Just to let you know I haven't lost my ability to write mostly OK english

Bloody hell, yesterday I was complaining about not having time to complain of the stagnation of the 2D-MERPG, and know I seem to have a team of few designers determined to hone the sharp edges of the spec away and to implement it in or after the Cambridge Venture Camp. I'm not entirely certain anymore what's happening, but the finishing words of the last text are more true than ever in their small lives: these future weeks will be interesting.

But! If we are going to hone the sharp edges of the spec, I have to write one beforehand. There is a spec-of-a-sort in the game's website, but it's in finnish, it's huge (although it has to be, for it contains most of the game's story. Story is however inessential in a pitchable spec), and it's old. Please let me fix the situation here:

MERPG

The title is a working-title, I'm open to better titles, but nobody has yet come up with one. The game is played in 2D, camera looking down on the world in the same angle as the on in Pokemon games. Like in the hotlinked Pokemon Blue Rescue Team or PC-title Dragon Age, the team consists of multiple of playable characters. In the manuscript this multiple is defined to be 3, but there's no reason for the team's count of characcters to be an even number like 4, with the last slot being filled with visiting characters. The game could contain some kind of waystation system, where the game could replenish their HP & PP, buy & sell items and wiggle the members of the party.

Anyway, the main idea of the game is to be an interactive movie get the player to explore the epic storyline. Seriously, I've never been fond of John Carmack's quote [1] about stories in games. Gameplay can be shit, which I could almost say it is in Witcher 1, but the writing can redeem the game. Other way around it doesn't work, in every other finnish mobile game (for example Angry Birds & Clash of clans) the gameplay works rather nice, but I lost interest in them in a day. Why? Because I can't be attached to only pawing the touch screen without a story. I either need a complex system to paw, like Age of Empires on the PC, or a bloody story that makes me feel like reading something in between a comic and a book.

Battle and stuff

But back to the game. Player can control any character of the party. Swapping the controlled one is done like in Dragon Age: just click their face on the HUD-area. Battling is done in real time too, like in DA and unlike in Pokemon Blue Rescue Team. Characters have moves, but I'm not sure whether to allow using them infinite times per battle, implement a stamina pool that's drawn by all the moves, or to give every move a discrete set of PP. Moves have either a target, and if one can draw a straight line from the caster to that target (and that line can be limited to be infinitely small in case of non-ranged attacks) without overlapping anything else the move hasn't missed, or they have a target coordinates on the map and area-of-effect, and everyone within this area is cast some damage.

Battling can be paused, and while done so, it's possible to give commands to AI-controlled characters. When unpaused, they fulfil their commands and continue thinking for themselves afterwards. So, to summarise: the battling system is Dragon Ageish, but in 2D, with stamina pool possibly replaced by Pokemon's PP-system or a big void. The moves and the type-system will draw inspiration from Pokemon rather than DA, but it seems only fair for this project began as a Blue Rescue Team inspired clone. Moves have to be detailed soon, but the type-system should probably be a straight clone from the Pokemon games, with the same type-weakness matrix.

One can use the mouse to choose targets, just as in DA. If one doesn't want to, the game autolocks on the nearest interactable NPC.

However, why is the fighting done in real time? Unless I'm seriously misrecalling, the moving- and fighting system of the Pokemon Mystery Dungeons was turn-based. Why not do it that way? Because moving in this game is continuous (to a pixel level at least). MD did have these N squarepixels sized tiles that could be inhabited by only one character at a time, which made turn-basedness sane by providing a clear limit on how much one could do in a turn, but with the continuous movement there's no such limit anymore. That's why.

Maps

Maps are built of square tiles, and are thoroughly specsed in the blog and the github. If a lower-than-here level question of them arises, I will gladly answer. The largest maps are supposed to fill a 1920x1080 screen on the editor (=> decrease a little of both dimensions for the sidebar and the tileset-view), and maps make up a graph. In current implementation one can define functions to be called when the player moves out of the map in any cardinal direction, but I have to change it to be possible to set triggers to any tile, or otherwise we can't implement enterable houses. And if I haven't said it clearly, these functions called in triggers are free to reset character coordinates and change the current map.

I think routes are static maps inhabited by enemies. I don't know if they should form waves like in DA or just pop out of thin air alone, in pairs, triplets or quartets. If it serves the storyline, I could possibly implement a dungeon generator, but that'd need some time on pure experimentation and learning the theory. Cities are inhabited by friendly NPC:s, selling & buying stuff, managing your quests. It is possible to meet friendly NPC:s outside cities, but vice versa (unfriendly NPCs inside cities) is not.

Dialogue and sounds

Discussions are done in a dialog box in a way shown in the Pokemon MDs. That means player's own character speaks too, unlike in other Nintendo games I've played (the not-spinoff pokemons of NDS & Gameboy and Zelda Twilight Princess). There's no voice acting, because this is a low-budget game, and even if someone invests on us with a large bag of pure gold, there still won't be, as this game is supposed to feel like a garage production. An epic soundtrack, (think of something like 8-bit Nightwish), would be a must at some point but not until we have a playable prototype

Token economy

Reading this is recommended, although even I haven't yet read it to the end, as I haven't played the Borderlands. Mr. Yegge speaks of an important thing in it: people love collecting stuff. This, I think, is what made the Pokemon games as popular and timeless as they are. The newer revisions of them are still the same game: people (me included) are buying them just for the sake of new things to collect, and honed collect experience. This is so powerful force that it invalidates most of my rant against the Carmack's quote. Story may be shit, gameplay might also be (which it isn't in the pokemon), but if people get addicted to collecting (where collecting includes the improving-through-training in Pokemon), the game is saved!

So, it would be foolish to overlook the token economy on a game pokemon clone such as this one. Unfortunately I have done so for years spent developing and not-developing this. I have however a theory, that we could improve on the MD's concept of collecting playable characters. Making them both more diverse and differentiated than pokemons in the aforementioned. We could let the player customise their outlook, and of course we could make all the characters have DAish experience system. Instead of XP granting levels, which grant predefined amounts of stats, we could grant the player predefined amount of stat-points to distribute among the stats the way they see fit.

Of course a good token economy requires a way to show off the collection. A character trading system as in original Pokemon, a send-character-to-help system as in MD, and of course the voluntary public profiles in the internet. The profileservice could also used to distribute mods and backup saves.

The rest

I dream of multiple platforms, and a striving modding community, but they aren't essential in a pitch and for the prototype.

Have I forgotten anything essential (for the pitch, I mean)


Footnotes

[1] Story in a game is like a story in a porn movie. It's expected to be there, but it's not that important. (http://en.wikiquote.org/wiki/John_D._Carmack)

I get that this is supposed to apply to FPS-games like stuff by Id, not wnb-RPGs, but it's still a wonderful inspiration on a rant of the current game scene.

Monday, 6 October 2014

Startup Workshop Kotka

Disclaimer: most of this text is highly dramatized, and in case you wish to skip my social angst, proceed here

Another general update for your delight, as I've not had time to experiment with anything technical enough to warrant a post in long time. I have lately noticed that not saying no is a terrific way to get time wasted on stuff that's not programming. I've always been a little wary of leaving home, possibly because back in Espoo reaching anything worth leaving the home took always few hours. Here in Kotka everything is in 10km radius of everything, so it's half an hour at worst with the bicycle to go anywhere. In the beginning I still didn't care to attend to events, though. Why? Because old habits die hard, because I don't like people whose name I barely remember, because I'm a socially awkward nerd.

At some point after the last spring I killed those old habits violently. At the end of the summer, when the first invites to student events (such as the freshman cruise, although I'm no freshman anymore) started popping up, I remember thinking that eugh, there would be, like, people, who I was supposed to socialize with. And as if I had time, for I had like a zillion projects underway. From there I realized that if I'm to succeed on this quest of mine to find the most awesome people and to do something terrific with them, I should at some point learn this little thing called social skills. Where could I learn of them? Was there a book that documented the essentials of interacting with people?

Oh no, these things have to be learned through the most efficient and painful way of trial and error. I clicked the Join button on the Facebook, and after returning from the dark castle of Helsinki, bought the ticket. Before that cruise there were a few other events I'd have a year ago responded to with "Have fun, guys; I'll be at home enjoying a good project". Not anymore, I followed Swizec's example of not saying no, and actually attending to as many social events as possible. I'm tired of having to listen to only my stupid thoughts, so I have a terrific reason to figure out this social stuff as well as I possibly am able to. Also, if we assume the social interactions can be modelled as a system, we accept that it can be hacked, and that I like. Humans scratch the same itch in me the Lisp does. They are similar, dirty and ugly in a way, but also beautiful.

And the result is similar to Swizec's: I have barely time to lament how stagnated the 2D-MERPG has become once again. According to Github there's been almost a month from the last public commit. If the memory servers, the map editor is in a stage where it either idles at 80% cpu, or updates the screen whenever it sees fit (not when the user sees fit). Aside from that bug, it's waiting for me to recruit Tässi or someone from Kouvola to create a bit infrastructure-tiles, so that I could at the fucking last try the bloody prototype of a map editor in a real world use. After trying how painful it's to create a small world (think of a clone of the Pallet Town, Viridian City and stuff in-between them from the original Pokemon games) and having a thoughtful discussion probably alone of whether to serialize the whole world into a single image blob or allow loading discrete assets when it makes sense, I can implement the serialization and start building the bloody game. Of course I need someone to animate the characters alongside, but if I get someone to do the tiles, proceeding to animations shouldn't be a problem.

But, as I was saying, I have absolutely no time for recreational projects such as this. Alongside all the social activities I have to develop the 3-5 school projects (I'm still not sure if the last two will become real projects) I've found myself in (the idea of not saying no applies to school-stuff too - I want to be an almighty overachiever, and will probably be the lad who fails to deliver on time), and then I have to attend to the regular courses too. The math exam on monday (today \o/ this texr was supposed to be published 2 days ago) overlaps with a meeting with the customer and on the next weekend I'll most possibly be attending to an event I'll be speaking of soon enough, and the week after that I have a physics exam, for which I probably don't have time to prepare. After that week I'll have the season break from the school, but no rest for the wicked: the number of these projects should be decremented a little, it's awesome time for socializing, I have some meetings then, and I wouldn't mind being able to visit my family (and the terrific pair of saunas they have) in Espoo.

Can this situation be untangled sanely? Of course not! Let me introduce you to:

Startup Workshop (Kotka)

Okay, let me begin with a meta-note: had I written my thoughts up to a medium better than the Twitter, writing this text would be hundred times easier.

I began the friday by going to school at 8am. I spent two hours on not-modelling a topper hat for Rajol I decided I was to do. At ten I relocated myself to an auditorium, where this weird workshop was announced to be held. I had no idea what to expect of it, but as a fan of Paul Graham's writings and having previously written about the possibility of starting a startup, I could not miss it. It mostly consisted of talks meant to both inspire and teach, after which we formed groups around our best businessideas and implemented these ideas. First of all, the talks were bloody amazing! Finnish talkers (or at least those I've seen, mostly teachers and other school-staff) tend to overlook the fact that their talks are supposed to inspire, not only present the facts. Secondly, I'm amazed at how lame the ideas were. The idea of the group I joined wasn't so bad, it was practical and after a little optimization (some of which might appear in this blog) it could even generate revenue. Engineerically they were almost boring though. Simple CRUDding, a few that were mostly implemented by getting the API keys to the google maps, and a one I evaded just because I dislike ideas ridiculed by xkcd.

It occurred to me there that a startup is just a special case of software (or vice versa, I haven't thought this through yet). The design phases of the best startups and software are almost the same, the KISS-principle applies to both, and the user experience is an area one always has to keep in mind with both. Startup might aquire users and customers more easily than plain free software, but in my context, startups get professional people to handle the marketing, whereas I usually just push the binaries into the cloud, and if I'm very diligent, I put up some sort of notice on the blog too.

I yet again valitated that my skills of presentation are horrible. If I'm the lone presenter, and I've had some time to actually think of what I'm going to say, I think I can make a presentation that won't make the audience seek delight by gauging their eyes out, but when there's more than me on the stage, I'd rather hide in the corner of a round room and hope nobody realizes I do exist than open my mouth. I don't know (well enough to write of it here) why that is. I seem to be able to weave a long conversation with everybody who speaks finnish or english, I think writing these texts in english has somewhat helped in that department, but once there's enough people on the discussion (and when the discussion is called a presentation, we're way beyond that point), the kernel of the part of my brain that controls my mouth just panicks.

The worst problem in the startupcontext is that my knowledge of domains normal people are ready to pay for solutions in sucks. Yesterday I could follow the team's design process because I have been burned by the problem we're solving (or at least a variation of it) and because the website I'll probably develop at some point is a rather simple CRUD-app, but had I ended up in a team with a fancier idea, I could've lost the tracks fast. That's also why I've been incapable of developing single-handedly an interesting startup: I'm only solving my own problems, because I seem to be not even bothering to explore domains of other people.

But I had fun this weekend, thank you everybody who participated. The startup-path seems thrice nicer than going to hack decade old .NET and Java-systems in enterprise setting after graduation, so how will I continue in this path? Well... next weekend I think, don't care enough to open the browser to check, there will be an event called Startup Weekend in Vantaa, and I'll try to get this weekend's team to travel there too. This event will probably decrease my physics grade by two at least for the next weekend is sorta, kinda last moment to prepare for the exam week after that, but the talkers advertised it so well I'd be stupid not to go. And then there is the Cambridge Venture Camp. I'm sure one can expect certain awesomeness from there too. I don't know wheter to pull Tässi with me there, or if I go with the yesterday's team, but this will sort itself out one way or another.

Because I've been sitting on this text for 2 days know, this has sorted itself so that Tässi isn't coming, because he has actual schoolwork to work through. I'll find another artist before or in the event. Before that I'll write some new specs of the game here, and maybe tell of the 3D-version of the game I'll probably do on Unity once I've done enough models. These coming weeks will be interesting...