WebPad: Bring your Own Controller
Going to take a break from my Useless Designer series to talk about a personal project which has me very excited. While judging Dare I came across a good idea which could be brilliant: using a mobile device as the controller in a shared space. The idea was shown by Lucky Ghost using the iPhone and a native iOS app. However, Apple would never let it through the AppStore and not everyone likes Apple. The idea was good but limited, but then a solution hit me there and then and I excitedly shared it with them.
The game hosts a web-service providing HTML5 WebApp with WebSockets transforming any modern mobile device into the controller.
Learning Blender
Leaving Max for Blender
Back in the day... okay that makes me sound old. Seriously though I picked up 3D Studio Max way back when. I remember eagerly awaiting the character studio with 2.5.... and well lets just say I've been using Max a very very long time. I'm familiar with it and happy with it but well it's expensive!
Now I had a University license which expired a while back, but that was not the turning point. No the turning point was working on a mobile phone project and the god awful level editor I wrote. Followed by long discussions of how much our studio was spending on Art software, and how extensible Blender is. This lead a friend and I to conclude with proper tools support Blender could almost be a more effective tool than Maya.
That was about a year ago. Now as you may or may not know I've been working on several side projects and well I hit the point where I was about to reinstall that university copy of Max. When two thoughts hit me... is this license still valid, and what about that Blender idea?
So I sat down with Blender, some tutorials, immense frustration and set about it.
My Yellow Submarine
Finding good tutorials
Well the tutorials varied greatly in quality but the biggest barrier is that Blender's UI is extremely complex and very function focused. Which is very off putting at first, something they acknowledge with their massive UI rework but its still far behind Autodesk products in term of context flow and usability.
The real problem with tutorials is they were either for idiots or pros. Very few were focused at someone with 3D skills (technical skill, my art skills suck) but no knowledge of Blender. Though due to the UI I had to mostly depend on Video tutorials to help me with the crazy UI.
So I made a sad monkey, thanks to these tutorials - Blender 3D Design Course. I could write an entire blog post on the tutorial issue, which I may do.
Crash Crash Crash
Yeah this happened to me often. Way way too often. All I can say was save lots.
I miss X
So I set about music blearing to model a Yellow Submarine, Beetles style. Straight-away I started missing the Max modifier stack and many useful tools. Bridge oh how I miss thee.
Is it working?
So often while modelling I would accidentally create extra faces, verts or just screw up normals. The real problem though was the mistakes were not obvious and many kept coming back to bite me.
I cannot see!
Aaa the Max camera controls how I miss thee. Also with a laptop and blender depending on num keys. I mean like WTF?!? Also it took a while to realise how the right select and the 3d pointer worked. I mean what a mind fuck. After a few hours it starts making sense but it still feels so unnatural.
Keyboard Freaks
Give a programmer the job of UI and you will get lots and lots of key presses, combos and god forbid threads (pressing keys in sequence)! Yeah Blender suffers badly from this. The over-reliance on keyboard controls, and the programmer's desire to get as many features in as possible means they are all squished in there. So yeah be very very careful what you do with your keyboard... and it changes on context. Which makes sense but catches you out.
Seams Wonderful Seams
Yes seams are glorious! Just magically mark them and you help the unwrapping process to NO end. I'm sure with correct mesh construction (mine was sloppy due to being new) and correct usage of seams well it should be a dream.
Windows Frames View Thingies
With enough screen space and a bit of tweaking well the system is gorgeousness itself sauced with complexity and sprinkled with crashes! Love hate realtionships aside, skinning while seeing the effect on the model is very very handy.
Pin It
OOoh I love pinning UV points! So handy with remapping and tweaking. I do miss some of the more advanced Max UV features. It's very different, and the lack of the modifier stack... *sigh*. Also the whole shared vertex or location thing can be a bit infuriating at times.
I then tried to map it to a custom key. Though 4 hours on Google and no luck, not without writing some Python.
Finished Product
It should be stated I have no interest in the render functions, and I'm treating Blender as a content creation tool for games. But yes... success and drugs!
Conclusion
I'm getting familiar with it and I'm glad I'm using a free program which is easy to modify and build upon. Watch this space to see if I continue to rage or coooo over the Blender fight.
Project Humps
This LudumDare I was hit by a blaze of inspiration. I was soooo excited by this project!!! Then the truck of problems ran me over, several times.
Build a 3D Spatial Puzzle based on a secret phrase. The phrase is revealed when the person completes the puzzle.
Then I opened Unity3D and it constantly hit me with minor irritations, though to be fair I've gotten over most of those. The real stumbling block is lots and lots of obscure Math and Niggly technical problems.
Now an interesting problem is exciting and one which you can get your teeth into and gets you excited. One example of this is the generation of the spatial puzzle. Which is awesome procedural content generation.
No I'm talking about stupid little math problems, rotations, parenting and frankly silly stupid problems. Stuff which on paper is stupidly simple. Things like smoothing out camera behaviours, improving physics performances and glitches.
I think I can safely say 90% of the project has been hung up on technical glitches and minor issues. Not sure if I'm going to continue. Taking a breather and thinking about it again.
Prototype - Click to Try
WASD + QE = Camera Controls
Space = Break-up & Rotate Drag Piece
Left Mouse = Select Object
Right Mouse Drag = Drag Object Around
LD19: Discovery
SSHeart: Secrets in the Space of my Heart
So this weekend the theme was Discovery which really inspired me. The plan was simple.
Build a 3D Spatial Puzzle based on a secret phrase. The phrase is revealed when the person completes the puzzle.
The idea is you could share secrets or even send messages to people in a playful fashion. I really like the concept.
Time Lapse
Cambridge Jam
The CB2 Jam was amazing! Really helped and I would have given up much sooner without it. A great atmosphere and a brilliant lot. So plan to make plans for any Jam that is planned at CB2. Also my first real location based jam. That wasn't just with house-mates or at Uni/school.
Also thanks to CB2 to being so accommodating.
Unity3D
I'm forcing myself to use Unity3D at the moment because of work. It's not my preferred package but its very powerful but its annoying to have to learn things on the LD weekend. A key thing you shouldn't be doing.
- Shaders: Still not quite sure what I think of the Unity3D system. I understand why it is the way it is but it takes a bit of getting used to. Though I love I can go to pure HLSL if I want to.
- Event Model: mmm quite nice, like the message system and of course the mouse interaction is nice. Also the gravity on axis configurations is awesome little cheat for quick tricks.
- Debugger: Unity3D really really falls down in this area I feel. Also not greatly impressed with Mono.
The rest were minor niggles but thanks to the Jam I was helped out a lot with those.
Future Plans
I plan to finish this before the new year, make it sparkely and easy to share phrases via the web. Also to greatly improve the random generation.
COP: Game Flow
So basically that's the game flow detailed there. The mission select is of course random.
Tonight development goal is as follows.
Build a blueprint and save it
One Page Designs
I am becoming a bigger fan of vector based one page designs. The 80 page word document which never gets read gets trumped by the A1 wall poster with overview.
Ludum Dare: The October Challenge
So POV declared The October Challenge : Make a game in a month and sell it.
The game is relatively simple and based in the Channels of Power world using some ideas from the MMO I was making. The idea is I will use Google App Engine as a backend and Unity as a front end.
Setting up a Defence
First a player is given a limited budget to setup the corporate defences on a location. They will also need to script and issue orders. They are contractor to be brought in to setup the defences. It is then saved on the server.
Attacking
Then using a limited budget an attacker equips a team and selects a mission from the server. Then using X-Com turn based style combat they must break through the defences.
Reputation and Replays
The moment the defences are breached that replay is saved for the viewing of the defender. Reputation is built up for how many assaults a map can take. Offensive reputation for breaking assaults with minimal failures. This is of course weighted and balanced, and persistent.
Scope
For the challenge I'm keeping it very very feature light. The plan is to sell pre-order copies at the end of the month if I feel the project is going well and then continue development. Much as many other indie games are doing.
In terms of DRM and platform. I'm going to be releasing PC version with possibility for future platforms. The DRM is online-always account based system. So basically the client is DRM free so to speak and can be installed multiple times but your account is persistent and can only be logged in at one machine. The online is needed to play the game.
Feedback welcome!
Podcast Problems
I have an idea on how to relaunch the podcast but I'm having trouble getting audio equipment together. Please bear with me on that count.
Chess and Unity
So the big milestone for the Data Driven Dialogue project is in and frankly it needs some time to sit on the shelf while I gather my thoughts for a fresh assault. So I set about learning Unity, something I've been interested in for a long time as a prototyping tool.
The first thing I will say, and I found this with XNA as well, is 90% of the tutorials, resources ect... are worthless to anyone with any base level knowledge. Throw them out, you just need a quick run though the UI, and some quirks pages. All of 10 mins then just use your gathered experience and the reference docs from there on out.
Now when learning new tech two of my favourite test projects are Pong and Tetris. I immediately dismissed these however as Unity made both very easy with its built in functionality, and I knew I wouldn't learn much because I wouldn't need to solve too many problems. I immediately settled on Chess as a well defined game because as anyone who has worked with high level world based tools knows.
- Using any coordiante system for game logic not directly tied to render space is a pain
- Object and Game logic conflict requiring you to split things up
- State based animations and effects can be a pain
- A simple chess AI is a nice little work-out
So yeah I'm tinkering away with that at the moment. Slowly building more layers of complexity on top of it till I'm satisfied I know Unity well enough for a real project I have in mind.
Oh and if you asked why I'm writing a boring Pong / Tetris / Chess game to learn Unity when I could be making Cool Idea #63? The answer is simple always learn new tech with a pre-defined and tested design. Otherwise you will compromise the design to avoid problems rather than be forced to overcome them. The goal is to learn the tech not to make a super awesome game.
Python Parsing Progress
Okay it doesn't look like much but there is a LOT of back-end going into this. With some good work but tonight I should be able to parse the scene script.
Still haven't solved my combination problem for the Gaussian Probability Sets. I have the question up on Math StackExchange.
So onwards to the generators!
c:\Dev\DDD-Snake>testbed.py
~~ Defined Key {SEVERAL:[ 4 : 8 ]}
~~ Done Cleaning and Building Define List
~~ Done Parsing Location data
Status [Gender] Enum : Male(50%) Female(50%)
Status [Job] Enum : Barman(25%) Miner(25%) Gaurd(25%) Functionary(25%)
Status [Height] NumRange [1.2:2.4]
Status [Nation] Enum : Red(83%) Green(8%) Blue(8%)
Status [HairColour] Enum : Red(16%) Ginger(16%) Strawberry Blond(16%) Blond(16%) Brunette(16%) Black(16%)
Status [HairStyle] Enum : Bald(12%) Shaved(12%) Short(12%) Curly(12%) Shoulder Length(12%) Long(12%) Braided(12%)
Braids(12%)
Modifier Gender[X ]
HairStyle : 20% 20% 20% 20% 20% 0% 0% 0%
Height : 1.9 ~ 0.4
Modifier Gender[ X]
Job : 0% 0% 0% 100%
HairStyle : 0% 0% 16% 16% 16% 16% 16% 16%
Height : 1.7 ~ 0.3
Modifier Job[XXX ]
Gender : 100% 0%
Modifier Job[ X ]
HairStyle : 33% 33% 33% 0% 0% 0% 0% 0%
Modifier Job[ X ]
Nation : 100% 0% 0%
Modifier Nation[X ]
HairColour : 80% 12% 3% 3% 2% 0%
Height : 1.7 ~ 0.2
Mutator "Tall"
Height : 2.1 ~ 0.2
~~ Done Parsing People data
Status [GlassFill] NumRange [0.0:1.0]
Status [DrinkType] Enum : Beer(25%) Wine(25%) Water(25%) Milk(25%)
Status [DieFace] Enum : 1(16%) 2(16%) 3(16%) 4(16%) 5(16%) 6(16%)
TODO :: Parse Prop Template --> ['Dice', ['DieFace']]
TODO :: Parse Prop Template --> ['Drink', ['DrinkType, GlassFill']]
~~ Done Parsing Prop data
______ TODO :: PARSE VERBS _______
VERB Cleaning REQUIRES PROP
VERB Dicing REQUIRES Dice
VERB Drinking REQUIRES Drink
~~ Done Parsing Verb data
Done parsing dictionary.txt
-----------------------------
Imperfect Information
I'm loving Starcraft 2 at the moment, and it got me thinking about my love of imperfect information in games design. I strongly recommend A Game of Thrones (board game) and Frozen Synapse, which also introduce blind simultaneous action which make it even more interesting.
So in a game with Perfect Information such as Chess, you know all information about the current state. Rock-Paper-Scissors is the simplest example of blind action. It's such a stupidly simple game but with practice and knowledge of your opponent you can increase you win chances. Balancing intelligence gathering and predicting other players actions are such deep interactions.
This is also what makes Poker so exciting is the reading of the little tells, something which is only possible face to face. So the meta game becomes part of the game which is so interesting. I notice this more and more watching high level Starcraft games. What I like even more is the option to use in game resources to gather information.
That balance between a blind massive push and a much small precision strike is so invaluable. It's what makes war such an interesting study.
The thing which makes games dull is when they become solvable. Introducing randomness makes the task more difficult by introducing probabilities but chance can counter skill leading to a less interesting game, in some cases. Imperfect information is a much harder solution space to map, and once the meta game interacts we go onto a whole new plane of interactions.
Currently I'm working on my Data Driven Dialogue system which at present is a perfect information system. Though there are planned and roughly sketched modules for dissemination, deception and mutation which I'm squeeing with joy about whenever I run them through my head. It's doubtful that those modules will be done by the end of the month but I plan to make them core components of a game I'm planning.
So next time your playing an imperfect information game, especially with people you know well. Stop and think how much information gathering your doing in-game and how much is on a meta level based on your opponent's psyche.
Data Driven Dialogue Schism
So the data driven dialogue project is moving along and well a simple problem arises.
The more mechanic driven and gamey your game is, Ludology focused, the easier it is to scrape and implement a data driven dialogue system. The more narrative or plot driven the game is, the more special cases you have and thus the data driven solution becomes much more difficult.
The problem is that the narrative focused game are the ones that will most benefit from it. But of course uprooting an established standard is a tricky task to undertake.
The mistake I made is at the start of the project I chose an atypical role-playing module as a reference point. This being my ultimate goal, but its sooo difficult to use as a reference. Where as recently I started using Quake as an example as it just clicks so well.
So yes I could have a post game chat and character development added to Quake but not sure how well that would appeal. I guess prove it first then move onto more difficult examples.







