PDA

View Full Version : Advice on my next idea please?



Fruzz
17-07-2009, 02:19 PM
Hey guys,

I had a phone interview with Ninja Theory last week. The result was another situation where they said that they like me but I'm not quite good enough yet.

I did, however, get some really great feedback from them. Its probably stuff that a lot of you guys know already but I'm new to this :)

They basically told me I need to have a fun demo (apparently 9 out of 10 of the demos they get are boring) that has a hook (i.e. something new and interesting) and focus on something I enjoy. They suggested maybe something like AI because I've done a bit of pathfinding stuff.

So my idea is thusly:

I want to make a game based on pokemon. What I mean by that is that you have a creature that you battle another players creature with. The difference being that you don't control your creature directly. You instead give commands and the creature works it out from that. I'd like to build something that is fast and fun but is more about strategy than button mashing.

I know enough about AI to know that there are loads of pitfalls in doing something like this. I'm thinking that I won't really be able to make a creature that mimics some sort of sentience within any normal amount of time.

My questions are:

Does this sound like something that would work and be fun? (I guess I'll probably need to make some prototypes to answer that question properly :)

Does anyone know any AI tricks to make a creature like that seem lifelike or possibly a good place to start researching and teaching myself some AI techniques that will help with this idea. I'm gonna have a look at gamedev.net this evening.

Any gameplay mechanic ideas or general advice are welcome.

Its still an idea I'm fleshing out and at this point I'm trying to work out if it'll be fun and whether I can actually finish it :)

DukeOFprunes
17-07-2009, 02:43 PM
How comfortable are you with programming AI? For example - have you tried using a state machine? In my experience this is a surprisingly simple way to get things moving around joyously, doing whatever you tell 'em to do. If you've not tried it yet I'm sure we can get you moving along in no time.

If you're good with that, one rough idea based on what you mentioned before is a "wild pokemon" sim based on the life of a trainerless pokemon where they make decisions based on their vital stats to care for themselves, where the game will play mostly like an ant farm or a screen saver.

You could have a list of attributes like Sims' needs, and have this pokemon automatically explore, fight, eat and drink based on its hunger, aggression etc. To make it fun, you can have the user decide how it prioritises its actions - make it too aggressive and it might spend all its time seeking opponents not prioritise eating high enough, therefore it might starve to death, etc. For a laugh, put its Aggression and Sex Drive on max and watch it have angry sex with everything (snork snork).

Throw some powerups, upgrades etc in the mix and I'm sure you can come up with someting more addictive than My Brute (http://mybrute.com/).

Fruzz
17-07-2009, 03:27 PM
Ok awesome, i was reading some basic stuff on state machines earlier. I'm sure I could work it out.

I really like the wild pokemon idea but I think I'm gonna keep this super simple to start off with because I've had way too many ideas fizzle out because I've aimed too high :)

I like what they've done with My Brute. I was thinking of a 45 degree top down perspective, like age of empires i guess.

I like the combat in My Brute, I was thinking that kind of thing where they make the micro decisions themselves but you guide the overall strategy of your creature/fighter. So maybe you tell it to be defensive or be aggressive. Maybe there could be some objects in the level that your creature would duck behind if the other creature was shooting at it while its in defence mode or something.

The other idea I'd like to add on if I can get this working is a card game side to it. So you select maybe four cards beforehand to use in your battle and they represent special powers or something. Its up to you to pick the right time to use them. Ideally I'd like to get a to and fro between aggression and defence.

So I'd hopefully be able to get it to a point where you were more guiding the ebb and flow of the battle and watching the creatures/fighters duke it out.

I dunno if I'm making any sense at all :)

DukeOFprunes
17-07-2009, 03:40 PM
Coolio.

What'll you be using to make this in, Game Maker?

Fruzz
17-07-2009, 03:57 PM
Yeah, I think I need to teach myself some Game Maker skills and try and do a protoype. I want to do it in c++ eventually, possibly using allegro which i'm a bit familiar with now.

I need to work out some of the core gameplay mechanics first (probably by protoyping with game maker) and decide whether it'll be fun. I can program but I'm not great at the whole making it fun part :)

Once I think I have something worth slaving over in c++ I'll move it over.

The idea is to build up something fun and work on my c++ code design.

DukeOFprunes
17-07-2009, 04:37 PM
Allright. No idea how GM actually works meself (never used it) but for C++ it'll work something like below.

I'll assume you're used to working with a game loop that calls some kind of update function for each object entity.

The state AI overview will the work something like this, in a concise kind of way:

1
We'll say you have a pokemon, so you make a pokemon class. One of its attributes will be State.

Somewhere else, make a bunch of constants to define each AI state the pokemon can be in, like STATE_IDLE, STATE_EATING, STATE_WANDER, etc.

2
Next, add a few state-setter functions. They can be as simple as assigning the State attribute a new variable, i.e.: [pardon my C++, it's rusty... more than 7 years' worth of rust in fact]
void setStateWander()
{
target_x = [a random x coordinate to wander to]
target_y = [a random y coordinate to wander to]
state = STATE_WANDER
}

void setStateEating()
{
state = STATE_EATING
}
and so on.

3
Make the main update function (this is the function called for your pokemon class with each game loop iteration) do nothing but call a different function for each state:
void update()
{
switch(state)
{
case STATE_EATING:
doStateEating();
break;
case STATE_IDLE:
doStateIdle();
break;
case STATE_WANDER:
doStateWander();
break;
}
}

4
Start writing each doStatexxx() function. These are pretty simple too.

void doStateWander()
{
[Code to move right if target_x is greater than my current x coordinate]
ELSE
[Code to move left if target_x is less than my current x coordinate]
[Repeat the above for the y coordinate here]
//Check if I have reached my destination
If target_x = x and target_y = y
{
setStateIdle();
}
}

You should now be getting the idea. That's pretty much it. There're loads of ways to do this and better ways to program it for sure, it's all up to what you feel is the easiest way for you to follow.

You'll find states are often time-dependant so you could choose to make any state active for a max of a few seconds before switching to a different one.

I hope that helps a bit, if it's not too confusing. Don't want to seem like I'm talking down at you or dumbing it up too much, I just don't know your level of experience so trying to keep it generic.

Fruzz
17-07-2009, 05:59 PM
Awesome, thanks.

Yeah that all makes perfect sense to me. I understand everything you're talking about. I've managed to work out the allegro basics to draw bitmaps and stuff so I might try make some simple protoypes using that logic. Thanks so much.

What do you use to make your games? XNA or something?

DukeOFprunes
17-07-2009, 06:13 PM
What do you use to make your games? XNA or something?

I've fallen utterly in love with BlitzMax (http://blitzmax.com/). Looks like BASIC, feels like sex.

Fruzz
17-07-2009, 07:04 PM
Haahaa fair enough :)

Fengol
18-07-2009, 07:36 AM
You might also get a tonne of ideas by playing Majesty.

It looks like an RTS and you build buildings to build units and upgrades but you can't control the units that come out. Instead you place rewards on particular enemy units or structures you want destroyed and locations you want to map out and your units decide to go there or kill that. They'd eventually attack enemy units and building themselves (especially if provoked by it) but the rewards help focus their efforts.

Each type of your units reacts differently (theives are easily influenced by rewards, rangers like to explore and seek out fog of war, barbarians attack any monsters practically ignoring rewards and sisters like to hang around your base) and even their upgrades they decide which and when to get; it's your job to make them available.

Majesty is quite an old game (around 2000 I think) and Majesty 2 is supposed to be coming out this September.

My suggestion with your pokemon idea rather than the player tweeking priorities of each animal in play, let the player place down buildings or land features which the pokemon can use at their will. If the game started with a certain amount of "player owned" roaming critters, he could earn money when they win battles. With the money he can build structures which heal pokemon faster, train more or allow for evolutions and traps to catch new pokemon. The ultimate structure could be an arena and any battles that take place in it earn more cash or status.

To conclude, don't let the player tweak the AI, but influence it by changing the environment.

Fruzz
18-07-2009, 04:36 PM
Yeah thanks Fengol thats exactly whats been mulling around in my head. I want to make autonomous creatures which would fight each other normally but you are able to think of higher level kind of strategy to win the battle .... I guess the closest thing that comes to mind is your creature in Black and White though I'm aiming much lower than that level of AI :)

I really like the rts ideas you have... i think i'm going to try and make a really polished battle system first though. I want the core mechanics of the one on one combat to be really fun and hopefully something fresh. Once I have that down It'd be cool to look for a bugger scope for the game.

I really like the indirect influence gameplay you're talking about, its those kind of different mechanics I want to try and use. I'm trying to do a bit of brainstorming to think of fun ways to indirectly influence the creature. Things like interesting commands to give it or ways to entice it to do stuff.

Ideally I'd like to have maybe 3 or 4 commands which will cover the whole of combat. Initially I'm thinking maybe attack close combat, attack ranged, defend and flee or possibly 4 different moods to put the creature into. I want to try and influence it on a higher, broader level and then possibly add some collectible card side for super powers or special items etc.

Fruzz
21-07-2009, 12:32 PM
I'm trying to decide what I'm going to use to start coding some of the simple mechanics now.

I'd like to try and do it in 3D but I want to do it in c++ which rules out XNA unfortunately. I've seen something called Irrlicht (http://irrlicht.sourceforge.net/) which is a free open source c++ games engine. Has anyone used it or know of any better engines out there to use?

Also, how difficult is it to translate my pathfinding code from 2D to 3D. Do you break a 3D level up into squares like you would a 2D level?

dislekcia
21-07-2009, 01:03 PM
I'm trying to decide what I'm going to use to start coding some of the simple mechanics now.

I'd like to try and do it in 3D but I want to do it in c++ which rules out XNA unfortunately. I've seen something called Irrlicht (http://irrlicht.sourceforge.net/) which is a free open source c++ games engine. Has anyone used it or know of any better engines out there to use?

Also, how difficult is it to translate my pathfinding code from 2D to 3D. Do you break a 3D level up into squares like you would a 2D level?

Ok. Seriously.

I'm not trying to shoot you down or anything here, but what have you made so far? You want to try and minimise your learning load every time you do something and maximise your personal reward. So that means that if you're trying to create new gameplay systems for yourself AND figure out a new language AND navigate around a new engine system for the first time AND come to grips with a whole new co-ordinate system and the maths that goes with that, you're going to fail. Hard.

Listen to what the people you've been having all these interviews with have been telling you: Make something. Make it fun. Forget how complex it needs to be or that you should be doing it in C++ or whatever, all that does is make you shoot yourself in the foot before you even start anything. You're really not going about this the right way...

Make something small in Game Maker. Heck, re-make a "simple" game like Tetris. Then, when that takes you 3 times longer than you anticipated (and it will), you can start understanding why you haven't been finishing things... Once you've got that first thing done, create something NEW in GM, your own game design. Keep iterating at it until it's either fun or completely obvious that it won't be fun ever.

Only then, once you've got a game prototype that works nicely and people enjoy that you've had a few rounds of polish on, should you even THINK of moving it over to another language like C++. When you do, all you'll be doing is porting something that works, not trying to re-figure out how to do everything in your game while you're trying to learn a language... Am I make sense?

The long and the short of it is this: Stop speculating and make something, you're paralysing yourself and giving yourself far too much to do. So far I've stayed out of this thread because your game idea simply isn't focused enough: It doesn't sound like you even have repeatable gameplay for it in your head (Every time you imagine someone playing it, you do another round of "Oh, wouldn't it be cool if" and it never ends up following the same rules as the previous round, right?) that's a sign that you need to pare down and simplify. Yes, the type of play you're talking about can be fun. No, you're not talking about a single game yet. Knuckle down, shelve your idea, make something people can play first and THEN pull your idea back out and look at it anew.

FuzzYspo0N
21-07-2009, 02:08 PM
seen something called Irrlicht which is a free open source c++ games engine

you may have seen it but its not a game engine at all. Its a rendering engine, thats all. No good level structure, no good fun stuff that games need. IE : recreating an entire game framework before you can even start on game code.

Now dont get me wrong many of these exist in the community (of which i am personally part of) and are really really a good start for a game. The problem being a) you pickup someone elses bad programming techniques and b) you are STILL at square one (as dis mentions).

The point being that dis is right, and you are stepping off a cliff into a valley of cliffs. "how do i" threads are the most common amongst a community of a "game" engine, and 99% of the questions you see are simply lack of actually having learnt anything from making a game. Make a game first, game maker is awesome for that and when you have a prototype in GM, test it in the community, get feedback, build a solid idea and nail it down. Then , it wont be nearly as hard to recreate.

Fruzz
21-07-2009, 02:11 PM
Ok, right...let me explain it all.

This (http://www.mediafire.com/download.php?jmw0z1mgmtk) is what I've been working on lately. Its in c++ using a library called Allegro. It started as a way for me to teach myself the physics programming for the ball and I thought I could extend it into a fun game.

My intentions were to carry on with that and build something I thought was fun and then get people to play it and tell me what to do to improve it. As it is its just the framework of a working game. I wanted to start implementing some gameplay ideas I've had for it.

After the feedback from Ninja Theory though I thought maybe I should leave it as it is for now and start working on an idea that has some interesting AI which might make my demo stand out amongst all the others. I'm a programmer and my games design understanding and experience is abysmal. So i posted initially to try and get some direction. Things like, should I prototype it in GM first or should I go straight for c++ (which I am sort of comfortable with). How do I go about distilling my ideas down to a few core gameplay mechanics? Also, my intial questions were a general does anyone else actually think this will work?

So what you're saying makes absolute sense to me dislekcia. What I was planning to do next is start making some of these game mechanics floating round in my head and seeing what works and what doesn't. I thought maybe it would make sense to try and move it to 3D because its something I need to learn eventually but I have lost interest in many of my projects because I'd bitten off more than I can chew before. So it makes sense to do the initial experiments in Game Maker. Thats the info I was looking for really.

Any other advice is welcome too :)

dislekcia
21-07-2009, 03:09 PM
Awesome :) Glad I didn't scare you off... Was rather worried that I came over too harsh.


How do I go about distilling my ideas down to a few core gameplay mechanics? Also, my intial questions were a general does anyone else actually think this will work?

The best way to learn this is to take an existing game and recreate it. You learn two things this way: Firstly, how the code parts of a game come together to create gameplay; And secondly, you learn what the really important parts of that particular game really are, which then helps you when you're desiging your own games.

Also, when you're thought-experimenting on your games, try to keep your rules constant when you play the game in your head. That will help you isolate fun mechanics instead of continually having ideas that feel and seem like they'd be awesome :)

Fruzz
22-07-2009, 10:05 AM
Nah, I took it more as passion and only slightly as being told off Dis :)

Thanks for the info on Irrlicht and the words of wisdom Fuzzyspoon.

This has really been helpful. I'm teaching myself Game Maker. I'm thinking about something I could remake to learn more about fun gameplay mechanics and I'm going to start implementing some of my ideas in Game Maker so that people can try them out and I can start learning how to make something fun.

I'm coming from a programming background so this advice is priceless to me.

Thanks :)

AndrewJ
19-08-2009, 03:30 PM
How's it going with this G@m3R_G33K?

Fruzz
19-08-2009, 04:09 PM
Heheh, how nice of you to ask :)

My basic idea is a quick dungeon crawl. So you can go through a dungeon in 10 to 15 minutes. The combat being influenced indirectly by the player. The core idea being fun instant loot gratification :)

So what I've thought of is that combat is all based on confidence. Depending on their confidence level your character will be in one of three stances, Aggressive, defensive or evade and counter.

The aggressive stance gives a boost to your attack and subtracts from your defense, Defensive gives a defense boost and an attack subtraction and evade and counter allows you to negate an attack and deal half damage. (I'm still thinking though evade and counter)

I want to use a system similar to the warhammer tabletop game where you get a score to hit and then a score to damage which can be negated by armour etc. This means that you can have consecutive hits without necessarily doing damage.

Confidence goes up with more consecutive hits you score on an enemy and goes down with consecutive hits taken from an enemy.

Your confidence will be affected indirectly by increasing your chance to hit or by increasing your defence. Increase your chance to hit increases your consecutive hits and therefore your confidence. Increasing your defence allows you to take more consecutive hits without taking much damage therefore dropping your confidence. (There are problems with this mechanic i need to work out still)

The trick is that you can choose abilities before you enter a dungeon which apply to specific stances. So maybe you have a deadly attack that can only be executed while in the defensive stance, a desperate attack possibly, then the strategy will be to get into the defensive stance without taking too much damage and allow your character to use that attack. You won't press a button to carry out the attack directly.

The mechanics are still quite convoluted and full of holes and I'm still trying to refine it all. Ultimately I'd like to have easy to pick up combat but something that can develop a decent amount of depth.

I've built a very simple combat prototype system in Game Maker. I based the attacking or defending stance on your health level but i like the confidence level better. I've also made a 4 square dungeon where you click on the block to open that room and I have a crude random loot system up and running. Its basically using a random number to work out what level of loot you get for beating the enemy in that room.

If I can keep myself inspired I'm hoping to get something crude up and running in a few weeks :)

Nandrew
20-08-2009, 04:32 PM
Nice idea, and if you're having problems with the mechanics being satisfactory, don't forget to play loads of dungeon crawlers and study them to get to the core of what makes them enjoyable. Even if your system is different (and, invariably, every new game will have its own "something special"), there's no reason why you can't nod to previous creations to strengthen your system.

That, and it's the best way to play videogames while labelling it as "research". \:D/

Fruzz
20-08-2009, 04:51 PM
Heheheheh, I like it. I'm playing games...but its research :D

Thanks for the advice, its a great idea because I'm getting a bit muddled with the actual combat mechanics. I'm having trouble trying to get something that has fun mechanics but is also somewhat plausible. Things like I have a problem believing a figher would knowingly bring there own confidence down to go into the defence stance. I've thought through some of the mechanics again and might overhaul it a bit. I'm gonna try make something very simple first and see if its any fun :)

SkinkLizzard
21-08-2009, 05:45 PM
you could change the confidence meter to a combat meter, fixes that fighter scenario.
change fighters meter to increase with every blow he takes eventually pushing him into
berserk/rage/revenge mode, conversely you can have a defender class whose combat meter builds up with say every successful block until Iron wall/Impassable/invulnerable mode...
similar to the ex and revenge meters in 2d fighters (street fighter 4)

Fruzz
22-08-2009, 09:14 AM
Oh nice! Thanks SkinLizzard, thats awesome advice.