RPG design principles

Hello my fellow developers,

I am string to create RPG game with Corona SDK and would like to some feedback from people more experienced than myself.

First of all, I would not make tile based game but use bitmap style still images as levels. I have been using Tiled which can have image layer and I can add dynamic objects nicely with that.

Question#1: how would you make the “borders” so the area where player could move? Would you use objects in Tiled or something else?
Question#2: some objects are casting shadow, I could make isSensor object to capture when player walks to shadow but how would you create the visual effect on player image?

Question#3: Is there some good practice or tool existing for the RPG style dialogues? Perhaps I would not need to write my own from scratch.

And lastly, anyone having any other considerations or limitations when starting to design RPG game with Corona?

All comments are welcome

Teemu

@Teemu,

(Will attempt to answer your questions in second post, but here are some thoughts on RPGs and game design in general.)

  1.  You’ll probably get this advice from others, but an RPG is a very hard starting point for a first game (which I assume this is for you).  I usually suggest folks start small and work their way up to such a complex endeavor.  However there is something to be said to trying to make something you love.  I truly understand that desire.  Just be prepared for a rocky journey.

  2. You’ve asked your questions in terms of visual and movement mechanics, which concerns me.  In my experience, great RPG designs do not start that way.  Instead, you start by asking yourself these questions:

A. What story do I want to tell?

B. How big is my ‘world’.  If you’re new, a small world is best.  Once you know this, start writing notes and populate your world on paper before you ever start thinking about mechanics.  

After you’ve answered A and B…

C. How do I want to express my RPG/World? What RPGs that you’ve played best connect with you and what you want to produce:

Western RPGs:

  • Wizardry
  • Ultima 1/2
  • Ultima 3/4/5
  • Ultima 6 
  • Wasteland 1
  • Fallout 1/2
  • Wasteland 2
  • Diablo (RTS really)
  • Warcraft 1 & 2 (RTS really)

JRPG (I’m not as familiar with these): 

  • Dragon Quest
  • Final Fantasy 1 … ??
  • Chrono Trigger
  • Kingdom Hearts

Non-RPGs:

  • Linear Story
  • CYOA
  • Other…

Now, you’ve got an idea of your story, you’ve started populating your world, and you’ve identified a game or games you’d like to emulate, then you can start working on your mechanics list.

Draw some mockups (they don’t have to be pretty).  Annotate them (put notes on them explaining the visual elements and what they do, how they interact, etc.)

Now, take one mechanic from your list, which you’ve drawn, annotated, and given deep consideration of…an try to make it.  If you get stuck, bring that mechanic to the community here and share it, along with your notes and pictures.  Then, can help you much better.

@Teemu - Part 2 your questions:

Question#1: how would you make the “borders” so the area where player could move? Would you use objects in Tiled or something else? 

How are you moving your player?  

What kind of inputs are you using to move?  Arrow buttons, touch and drag, touch combined with path finding?  Once you know this, you’ll be better prepared to figure out how to limit that motion.

Ex:

If you used arrows to move the character in the four cardinal directions, and if your ‘world’ has a fixed dimension, simply don’t allow the player’s <x,y> position to exceed those bounds (assuming rectangular world here).

Question#2: some objects are casting shadow, I could make isSensor object to capture when player walks to shadow but how would you create the visual effect on player image?

Not clear what you mean.  You want the player to cast a shadow or your want shadows to ‘shade’ the player when the player is in a darkened area?  The prior is easy, the latter is hard.

To cast a simple shadow, create two layers.  One for shadows and one for shadow casting objects.  Then, render the shadow casters in their layer and shadows in the shadow layer.  Clearly, there is a little more to it that this, but that pretty much sums up how it works.

Question#3: Is there some good practice or tool existing for the RPG style dialogues? Perhaps I would not need to write my own from scratch.

Earlier I said, I was concerned by your questions.  This one really struck me.  There is not such thing as a universal “RPG style dialogue”.  Different games have different dialogue styles.  Give specific examples (by game) and if possible with a screenshot or link to a visual example or a video.  Then we can answer this.  However, my guess is, “No, there is no ready made system written for Corona to make dialogues.  However, there may be solutions that cover part of what you need, or you can roll-your-own.”

Question #4: Limitations?  - Kinda vague.  The limits depend on your goals.  Provide a terse list of all or as many of the specific features you think you need and I’m sure we can answer back with:

  • Possible/Not Possible
  • Easy 
  • Hard
  • Don’t know

Hi,

Wow, really appreciate your feedback and answers. Apologies for not being more accurate and given some more detailed examples to pinpoint my questions.

RPG, RTS is indeed one of my many dreams to build. I have developed to my own joy, many kind of games in the past so I am not starting from zero. However, Corona and Lua are new to me. I have not spend past two months studying those and adopting my mindset that Lua is not brutally strict as C-based languages are. Took me some time to accept this. Now it feels pretty okay already and I don’t wake up screaming anymore that often :wink:

Yes, one should not start from technical stuff when desining game. Neither do we. I am one part of a team who will embark on this mission but as I am one of the developers and techies, I can’t keep myself from testing different smaller concepts.

We aim for big but start small.

Why I am asking questions 3 and 4 (which number I forgot ) is that nowadays there is huge amount of ready APIs and working modules available when it does not really make sense to do everything from scratch. For example, I found myself enjoying Tiled and Dusk. However Dusk could have more documentation but one can allways ask or check the code itself. Lime was not that nice but Dusk seems to work well… (Lime might not be developed anymore or …)

More on the Q3, I was looking for more like underlying technology like basic architectural concepts. Using files, JSON, SQLite anything. Graphical representation was not my intention at this point. I was after some guidelines on how dialog contents should be saved and if there was Tiled-kind-of-a tool for  creating player-NPC dialogues. Maybe there isn’t.

I was thinking of storing all these in SQLite as I have pretty strong Database competence from my real work.

Q4 was stupid all together. It was just kind of a throw if there was know issues like support for full isometric graphics etc. Maybe I return to these once I have real challenges.

okay, moving to Q2

This was again one of my many sandbox tests with Tiled, Dusk and Corona. I was after the latter actually. I did one fairly simple solution just to fool around by adding objects on Tiled to “shadow-areas” which were create as isSensor physics objects. Then I captured this in Collision event and tried with different visual effects on the player image. Nothing really works as you can imagine. There will be points when player is partly of the shadow and then it looks crappy…

on to Q1, again poorly presented question. Lessons learnt for future, one thing at the time and with example and more accurately descriped.

In this particular case which I had in mind, I am moving character with “standard” thumb joystick. How I did it in my sandbox test was that I created static objects in Tiled which where blocking players movements. Player image then also had body but only “ellipse” shapey around his feet. This allowed him to partly overlap near house walls etc. Worked pretty well and it would give level designer pretty nice control at Tiled side.

Does that sound absolutely crazy concept?

I hope this clarified even tiny bit my intentions and fuzzy logic behind the questions

Cheers

-T-

@Teemu,

(Will attempt to answer your questions in second post, but here are some thoughts on RPGs and game design in general.)

  1.  You’ll probably get this advice from others, but an RPG is a very hard starting point for a first game (which I assume this is for you).  I usually suggest folks start small and work their way up to such a complex endeavor.  However there is something to be said to trying to make something you love.  I truly understand that desire.  Just be prepared for a rocky journey.

  2. You’ve asked your questions in terms of visual and movement mechanics, which concerns me.  In my experience, great RPG designs do not start that way.  Instead, you start by asking yourself these questions:

A. What story do I want to tell?

B. How big is my ‘world’.  If you’re new, a small world is best.  Once you know this, start writing notes and populate your world on paper before you ever start thinking about mechanics.  

After you’ve answered A and B…

C. How do I want to express my RPG/World? What RPGs that you’ve played best connect with you and what you want to produce:

Western RPGs:

  • Wizardry
  • Ultima 1/2
  • Ultima 3/4/5
  • Ultima 6 
  • Wasteland 1
  • Fallout 1/2
  • Wasteland 2
  • Diablo (RTS really)
  • Warcraft 1 & 2 (RTS really)

JRPG (I’m not as familiar with these): 

  • Dragon Quest
  • Final Fantasy 1 … ??
  • Chrono Trigger
  • Kingdom Hearts

Non-RPGs:

  • Linear Story
  • CYOA
  • Other…

Now, you’ve got an idea of your story, you’ve started populating your world, and you’ve identified a game or games you’d like to emulate, then you can start working on your mechanics list.

Draw some mockups (they don’t have to be pretty).  Annotate them (put notes on them explaining the visual elements and what they do, how they interact, etc.)

Now, take one mechanic from your list, which you’ve drawn, annotated, and given deep consideration of…an try to make it.  If you get stuck, bring that mechanic to the community here and share it, along with your notes and pictures.  Then, can help you much better.

@Teemu - Part 2 your questions:

Question#1: how would you make the “borders” so the area where player could move? Would you use objects in Tiled or something else? 

How are you moving your player?  

What kind of inputs are you using to move?  Arrow buttons, touch and drag, touch combined with path finding?  Once you know this, you’ll be better prepared to figure out how to limit that motion.

Ex:

If you used arrows to move the character in the four cardinal directions, and if your ‘world’ has a fixed dimension, simply don’t allow the player’s <x,y> position to exceed those bounds (assuming rectangular world here).

Question#2: some objects are casting shadow, I could make isSensor object to capture when player walks to shadow but how would you create the visual effect on player image?

Not clear what you mean.  You want the player to cast a shadow or your want shadows to ‘shade’ the player when the player is in a darkened area?  The prior is easy, the latter is hard.

To cast a simple shadow, create two layers.  One for shadows and one for shadow casting objects.  Then, render the shadow casters in their layer and shadows in the shadow layer.  Clearly, there is a little more to it that this, but that pretty much sums up how it works.

Question#3: Is there some good practice or tool existing for the RPG style dialogues? Perhaps I would not need to write my own from scratch.

Earlier I said, I was concerned by your questions.  This one really struck me.  There is not such thing as a universal “RPG style dialogue”.  Different games have different dialogue styles.  Give specific examples (by game) and if possible with a screenshot or link to a visual example or a video.  Then we can answer this.  However, my guess is, “No, there is no ready made system written for Corona to make dialogues.  However, there may be solutions that cover part of what you need, or you can roll-your-own.”

Question #4: Limitations?  - Kinda vague.  The limits depend on your goals.  Provide a terse list of all or as many of the specific features you think you need and I’m sure we can answer back with:

  • Possible/Not Possible
  • Easy 
  • Hard
  • Don’t know

Hi,

Wow, really appreciate your feedback and answers. Apologies for not being more accurate and given some more detailed examples to pinpoint my questions.

RPG, RTS is indeed one of my many dreams to build. I have developed to my own joy, many kind of games in the past so I am not starting from zero. However, Corona and Lua are new to me. I have not spend past two months studying those and adopting my mindset that Lua is not brutally strict as C-based languages are. Took me some time to accept this. Now it feels pretty okay already and I don’t wake up screaming anymore that often :wink:

Yes, one should not start from technical stuff when desining game. Neither do we. I am one part of a team who will embark on this mission but as I am one of the developers and techies, I can’t keep myself from testing different smaller concepts.

We aim for big but start small.

Why I am asking questions 3 and 4 (which number I forgot ) is that nowadays there is huge amount of ready APIs and working modules available when it does not really make sense to do everything from scratch. For example, I found myself enjoying Tiled and Dusk. However Dusk could have more documentation but one can allways ask or check the code itself. Lime was not that nice but Dusk seems to work well… (Lime might not be developed anymore or …)

More on the Q3, I was looking for more like underlying technology like basic architectural concepts. Using files, JSON, SQLite anything. Graphical representation was not my intention at this point. I was after some guidelines on how dialog contents should be saved and if there was Tiled-kind-of-a tool for  creating player-NPC dialogues. Maybe there isn’t.

I was thinking of storing all these in SQLite as I have pretty strong Database competence from my real work.

Q4 was stupid all together. It was just kind of a throw if there was know issues like support for full isometric graphics etc. Maybe I return to these once I have real challenges.

okay, moving to Q2

This was again one of my many sandbox tests with Tiled, Dusk and Corona. I was after the latter actually. I did one fairly simple solution just to fool around by adding objects on Tiled to “shadow-areas” which were create as isSensor physics objects. Then I captured this in Collision event and tried with different visual effects on the player image. Nothing really works as you can imagine. There will be points when player is partly of the shadow and then it looks crappy…

on to Q1, again poorly presented question. Lessons learnt for future, one thing at the time and with example and more accurately descriped.

In this particular case which I had in mind, I am moving character with “standard” thumb joystick. How I did it in my sandbox test was that I created static objects in Tiled which where blocking players movements. Player image then also had body but only “ellipse” shapey around his feet. This allowed him to partly overlap near house walls etc. Worked pretty well and it would give level designer pretty nice control at Tiled side.

Does that sound absolutely crazy concept?

I hope this clarified even tiny bit my intentions and fuzzy logic behind the questions

Cheers

-T-