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:


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 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)


[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...