After reading the last peek of the week, I've decided to post a little whacky ideas thread =)
Put some new game/feature ideas that are almost unheard of, but still realistic.
I'll start with one of mine. Watch out, it's a long one =)
Forgive me for the non-straight tables, I didn't manage to use an equal-spaced font in this forum.
***********************************************************
After playing the MMPOG Asheron's Call for 2 years and stopping because it all switched to 'macro' gaming.
Most players barely play asheron's call, they program their bots. This means that a little program will control your player, a program you make yourself. These can get pretty complex, crafting potions, attacking monsters etc... all night long without even the player touching his computer. This gives a lot of players satisfaction, of seeing their own creation doing something useful.
Thats how I got this idea for an hypothetical game:
The game is played through an avatar that owns 'pets', nothing special here. These pets do all the combat and work for you.
The catch is: you program your own pet behavior. I'm not talking about C/prolog text-based programming, because how many players can program in those languages. I'm thinking about a graphical, drag-n-drop programming.
The main pet 'program' is a table with as many slots as you like:
|-----|
| |
|-----|
| |
|-----|
...
In this table, you can drop 'operations', represented by a box with the operation name. Such operation can be 'walk forward', 'pick up', 'use', 'attack' etc...
OK, I put operation 'mvf' in the first slot, my main progam looks like this now:
|-----|
| mvf |
|-----|
| |
|-----|
...
So far, my pet will keep walking untill he hits something, not really smart.
I'm going to add that he has to turn around if he hits something.
For this, I'm going to add a new operation that I will call a 'subroutine'.
A subroutine looks like a pogram, a table with slots for operations with the subroutine name as label:
sub1
|-----|
| |
|-----|
| |
|-----|
...
Here I will put in the part that turns back, using the operations 'turn back' (trnb) and 'move forward' (mvf):
sub1
|-----|
|trnb |
|-----|
| mvf |
|-----|
...
Back to the main program. In here I will put in a detection that the pet has hit something, using the operation 'obstacle' (obst). This operation will check if the pet has hit something and stopped moving, if this is true, it will run a given operation.
The operation 'obstacle' can be called an optional operation, similar to the 'if' control statement in many programming languages:
if 'pet has found an obstacle' then 'do given operation'.
graphicly I will represent that 'given operation' by a slot next to the conditional:
|-----|
| mvf |
|-----|-----|
|obst | |
|-----|-----|
...
The operation that will be put in the slot next to obstacle will be run if the pet hit an obstacle.
If I put in the operation 'turn left', it will turn left if it hits an obstacle.
Remember the subroutine I made a while back? Lets put that subroutine there. Subroutines can be put in slots just like normal operations:
|-----| * sub1
| mvf | * |-----|
|-----|-----| * |trnb |
|obst |sub1 | * |-----|
|-----|-----| * | mvf |
... * |-----|
Lets see what this pet will do by going over the main program:
|-----| * sub1
->| mvf | * |-----|
|-----|-----| * |trnb |
|obst |sub1 | * |-----|
|-----|-----| * | mvf |
... * |-----|
1. Our pet looks at the first slot, this slot has the operation 'move forward'. Our pet starts moving forward.
|-----| * sub1
| mvf | * |-----|
|-----|-----| * |trnb |
->|obst |sub1 | * |-----|
|-----|-----| * | mvf |
... * |-----|
2. Our pet looks at the second slot now, it has the conditional operation obst. Very well, the pet checks if it has hit an obstacle. For the sake of the example, lets say it just did. The conditional is true, so it will run the operation sub1. Sub1 is a subroutine, so our pet will look at the first slot of sub1.
|-----| * sub1
| mvf | * |-----|
|-----|-----| *->|trnb |
|obst |sub1 | * |-----|
|-----|-----| * | mvf |
... * |-----|
3. The first slot of subroutine 'sub1' has the operation 'turn back'. Our pet turns 180° and looks at the second slot. Still reading? :p
|-----| * sub1
| mvf | * |-----|
|-----|-----| * |trnb |
|obst |sub1 | * |-----|
|-----|-----| *->| mvf |
... * |-----|
4. The second slot of sub1 says to move forward, the pet starts walking forward.
Now we 'programmed' our pet to move back if it hit something, a lot better than to get stuck lik last time =)
In the game, you can make the player collect/buy/trade operations to perfect his little creations. Different pets can be given different roles. Combat pets to do melee attacks, one to heal others or shoot at a distance. Also trading pets, to craft and sell items, ... The sky is the limit =)
Actually creating something gives the player enormous satisfaction. The biggest appeal for RPGs is 'creating' and 'building' your character. This takes a larger step.
This may be a little complex, but gamers are easely underestimated. Remember that Nintendo was laughed at when they launched Pokemon in Japan a few years back because the game was far too complex for kids. It grew to one of the best selling game and collectable franchise.
I'm sure there are some academical papers written about graphical programming languages. You can easely make it Turing Complete, since you can put in loops and conditionals. The table can be seen as the program stack in an assembly language. The graphical drag&drop interface and extensive pre-made operations and routines can make the system very accessible.
Congratulations, you read through it all, lol.