Construct 2 (J)/RPG-Design

Discuss game development design and post your game ideas

Post » Sat Jun 14, 2014 9:12 pm

Hello, currrently I am about to start working on a JRPG using Construct 2. And have noticed there are a lot of plugins for Construct 2.

So was wondering for those of you that have worked on, working on, or finished an RPG-Style game with Construct 2. What type of plugins or methods of making some of the systems have made things easier or more comfortable for you?

I've seen some mentions of using Arrays in Construct 2. Haven't used those in other things I've made on here, but have started to play around some with them testing things out.

I've read that some people have been using the program Tiled for the maps. I also found a Plug-in for the XML/JSON files which Tiled can make which is a Plug-in by @rexrainbow located here.
B
10
S
2
G
1
Posts: 44
Reputation: 817

Post » Mon Jun 16, 2014 3:01 am

Doesn't seem like many want to discuss their processes of easing te making process of a JRPG or RPG with Construct 2.

I started working on the battle system for mine. While there are a lot of discussion about people how they are liking the ARPG style more than turn-based(Zelda-style over FF-Style). Personally I like the FF-Style, but one ting I've done in my current battle system I'm coding for mine is made it toggle-able where players can choose to use ATB bars for their attacks while in battles or can have it Turn-Based through an options menu that they can change back and forth while not in combat to their desire.

For Battle system for multi-controls(Gamepad+Touch+Mouse+Keyboard) functions seem to be nice to use for it. At the moment for my testing of the battle system I'm writing up events for I have a Player 1 fighting a Player 2 both controlled by me with different keyboard keys or clicking on the screen just to test out the damage based off of attack vs def with variance to make the values have a range. Attached is a SS of the multi-controls I've put into it to call for Player 1's attack function at the moment. Currently I have all the actions on a single sprite. The only way atm I've found of recognizing them since both are used on both sides P1 and P2 is by calling them by their UID's. If anyone knows a better method for that(yes I know could probably go with a separate sprite for every action and then call on just that sprite, but there could be a method with C2 I'm not thinking of).
You do not have the required permissions to view the files attached to this post.
B
10
S
2
G
1
Posts: 44
Reputation: 817

Post » Mon Jun 16, 2014 4:38 am

I think I'm further along in my RPG than most (Courier), so I'll give a bit my input. Firstly, my game doesn't have any turn-based battles, so I have nothing to comment there other than do a good job of state management.

The main plugin that has benefited me has been rexrainbow's Z-sorter. The only reason I use it is because you can't pair sprites and tiled backgrounds simultaneously in a family, so the internal C2 method for z-sorting (for each ordered loop, send to front) won't let the player run behind/in front of tiled background objects like fences. I also don't have it sort every tick because it isn't necessary.

The game isn't tile-based, so I can't comment on that stuff, but have reusable resources. Everywhere. I have a bunch of Tiled Backgrounds (and sprites) that I piece together to make everything in the game. This reduces the overall video memory, reduces asset production for you, and has very few disadvantages.

Lighting and shadowing are important. I have a good number of overlay sprites that I use for gradients over objects as well as light halos and other effects. I also have a couple dedicated shadow layers for the cast shadows from objects. These are made of a certain number of primitive shapes, all dark blue, all at 100% opacity. Then just lower the opacity of that layer and the shadows will remain merged and more realistic. I also have shadows cast on the player and world objects by having a second set of shadows set to one of the "source" blend types so it only shows when an object or the player is present.

As for inventory, plan ahead on a creative system that doesn't result in a big, stupid list or something. Perhaps a bunch of boxes or something, but plan this ahead so you can come up with a workable solution (probably in an array) for management of it.

I keep a spreadsheet constantly for myself where I track my reference numbers for every quest, character, item, or object in the game so I can always quickly reference what I need. For quests, I have a cell in my overall array dedicated to each quest. If the value there is 0, the quest is untouched. If it is 1, that quest is active, and if it is 2, that quest is complete. Any other numbers are for multi-step sequenes within that quest. I'm quite happy with this system because it makes tracking things a breeze.

Tween everything! Everything should fade, move, slide, rotate... something! And I'm specifically talking about your UI. This goes a long way in making your game go from looking cheap to looking polished. And it's simple enough to set this stuff up early. Just get in the habit of automatically having something fade in instead of appear, etc.

Interactive music makes a very big difference if you're up to the challenge. If nothing, it solves the problem of endless repetition, but you can really immerse the players in neat, subtle ways that they might not even realize. Plenty of top games do this, but many indies do not. This really applies to a lot of games, but RPGs are well-suited since they are so state and stat-driven.

Spend the extra time getting your 8-direction animations going. People will gripe if you don't, I promise.

For speech, I don't bother with a type-writer effect because it takes more effort and rarely lines up with the player's own reading pace in any way. I opt to fade in each message one at-a-time. I simply set the text that I need, turn the text variable to "on" (which fades in the text), then wait for player input to fade it out again. If it was the end of that message, turn text to off so it stays faded out and fades out the rest of the speech UI. If not, once opacity = 0, change the text to the next block and fade it back in.

There are probably a ton more things I could talk about, but those are some non-standard things that have made a big difference in my RPG development.
B
103
S
38
G
19
Posts: 962
Reputation: 17,986

Post » Mon Jun 16, 2014 6:42 am

Hi there @daehawk ! I'm working on a small RPG prototype at the moment. There isn't much to tell specifically about how to organize code: I'd just say you'll want to separate every single system from one another (handle the animation states somewhere, manage the flow of the battle elsewhere...). If your blocks of code become interdependent, you might soon get stuck.

There are two solid plugins I use at the moment: LiteTween from lunarray and JSON from Yann. The latter tool permits you to manage data from JSON, and I use it for pretty much anything that I'd like to edit from outside of C2 (like the items of the game, key values...). This is particularly interesting because you can update those JSON files later on the html5 build without having to reupload everything.

The only interesting thing I can say from my work is that after having done that little proto, I'm going to make other simple games that explore some simpler aspects of those systems and build some kind of inner engine/framework: because making a solid rpg-esque system that scales well and remains manageable seems to require a least quite a bit of C2 experience.

Good luck going forward, and good luck @C-7 on greenlight =) !
Nathan
B
77
S
22
G
4
Posts: 311
Reputation: 12,634

Post » Mon Jun 16, 2014 7:00 am

Thanks for the reply @C-7 . Yeah I had seen your Courier game a week or so ago. Very good concept and game you have going with it. Interesting puzzles and challenges throughout delivering the mail for the character. I'll check out the Z-Sorter plugin as well. rexrainbow seems to be the one to go to for plugins lol.

Inventory+Banking system is one of the next ones I'll be working on for mine. Still working on the combat system atm since have different styles of attacks that people can do. I know some people in the "what do you hate" thread have said they don't like QTE, some say they don't mind it as long as it's not unnecessary/a ton of them. I was planning for combat that a QTE pops onto the screen when the player activates their special. If they do the QTE correctly the attack does it's full damage, if they fail then it does a reduced amount. But I won't have the QTE Random rather similar to that of Sabin from FF6's Blitz. Where each one is set so you will know the way to do it, but have multiple ones that people can either unlock or acquire.

Yeah the speech boxes are one of the things that are sometimes hard to pull off in the exact style that you want. Especially while playing a game I normally set the text speed to the highest just because otherwise you're playing the waiting game waiting on the next part of the text for the story to appear. Voice acting for them could be interesting, but the usage of processes and loading if the game is web-based could be an issue though. Considering with my Mario Pacman game I had made for a friend I left out some of the m4a music files from it for anything other than an sfx, because the file size of the load was so large with m4a. With 2 bg-music m4a's the load changed from 3mb to 24mb.

Thanks for the information on tricks that have assisted you in your process of creating your game. Also non-standard things help a lot for development finding out a new trick to do something in a slightly different way with optimization.

-----------------

Hey @Valerien thanks for the reply. That is good advice to make each system separate, something that some people might not think of for designing the event sheets. It's kinda what I was planning on doing is to make each of the side systems(Battle, Inventory, Crafting, etc) in it's own Event Sheet then use Include sheets to put them into the Main one that has some global parameters for the game perhaps. My current Main event sheet only has the Battle Include and re-activating the mouse from where my loading screen on start hides it. So haven't decided fully what all will need to be inside the Main event sheet other than the includes. Will probably see what needs to go there after I get all the subsystems in place.

I'll check out those two plugins you mentioned. LiteTween goes with something that C-7 had mentioned as well so might be one definitely to check out by people.
B
10
S
2
G
1
Posts: 44
Reputation: 817

Post » Wed Jun 18, 2014 9:35 pm

I made a current test of my the battle system I've set up so far. Haven't worked on Animations the sprites are all from http://opengameart.org/.

It's not completely faultless and I'm sure there are some more optimization in the events I could do. I actually did a recent optimizing for the events which reduced a lot of the repeated ones last night.

I haven't set up:
~Character animations on attacks
~Blocking effects for that feature so that's set to disabled atm even though the icon I still have it to light up
~Status Effects(Poison, Sleep, Paralysis) will be with weapon effects and alternate spells
~Special Attack QTE
~Items Menu(Healing items, Mana Potions)
~Spell Choices for alternate spells
~Combat Bonuses
~AI

At the moment it's set up where both sides are controlled by the viewer in order for me to test certain different features of the attacking. Controls are listed on the screen cept for the Gamepad Controls.
For Gamepad: A = Attack, B = Magic, Y = Special
You can also just click/touch each icon or use Keyboard controls.
Icons are: Sword = Attack, Shield = Block(Not enabled), Ankh in Circle(Magic), Skull(Special)

Battle System Basics Test
B
10
S
2
G
1
Posts: 44
Reputation: 817

Post » Sun Jun 22, 2014 9:27 pm

salam (peace)...

I didn't yet started thinking on how to make RPG with Construct2 but I'm interested (I have RPG idea but the story isn't complete and it needs a team & I'm SOLO worker)

hmmm... about this :
daehawk wrote:The only way atm I've found of recognizing them since both are used on both sides P1 and P2 is by calling them by their UID's. If anyone knows a better method for that(yes I know could probably go with a separate sprite for every action and then call on just that sprite, but there could be a method with C2 I'm not thinking of).


I don't think making P1 & P2 on the same sprite a good idea ,have you tried or thought of families?
you still have to use UID to target them though..


OR NOT-
I once made a game (a test game actually) that creates and destroy the same sprite over & over again, since getting it's UID in real time is pain I use Instance Variable to get it. yeah it's the same way UID works but you can target more than one Instance if you made them with the same variable value.
B
10
S
1
G
1
Posts: 22
Reputation: 848

Post » Mon Jun 23, 2014 4:11 am

ahmadmanga wrote:salam (peace)...

I didn't yet started thinking on how to make RPG with Construct2 but I'm interested (I have RPG idea but the story isn't complete and it needs a team & I'm SOLO worker)

hmmm... about this :
daehawk wrote:The only way atm I've found of recognizing them since both are used on both sides P1 and P2 is by calling them by their UID's. If anyone knows a better method for that(yes I know could probably go with a separate sprite for every action and then call on just that sprite, but there could be a method with C2 I'm not thinking of).


I don't think making P1 & P2 on the same sprite a good idea ,have you tried or thought of families?
you still have to use UID to target them though..

OR NOT-
I once made a game (a test game actually) that creates and destroy the same sprite over & over again, since getting it's UID in real time is pain I use Instance Variable to get it. yeah it's the same way UID works but you can target more than one Instance if you made them with the same variable value.


Greetings Ahmadmanga,

The character sprites there atm are just place holders for that quote was about the Battle Icons above their heads in combat. Yeah I've used families in a few things in my Mario Pacman game and in this game atm I have Families set up for the Display bars on the stats, the text for the stats, and I have the Battle Icons in a family alone atm that I use to call upon them that way to set their Opacity based on ATB/Turn, Mana, and Special.

Like here I'll post some SS's of my current system set up:
BattleScreen.jpg

SkillSelect.jpg

BattleActionFamily.jpg


The Battle Screen will have set type of icons that will appear above players heads. This is just the layout using atm to test it. For now have 1 player on each side, later will have more and will change a few more things with that layout and such. But mostly trying to set up the inner workings first. The Battle Icons I was talking about are the ones in the top image where their opacity are dimming or lighting up upon certain conditions. But since instead of using multiple sprites for each I have 1 Sprite called "Action" then within that I have the animations "Attack" "Block" "Cast" "Special". Then I placed 4 of each of those on each side of the field and changed it's Initial Animation setting it up to where it's the one I want to be displayed. But to recognize if it's the one on the Left side or Right side of the same Sprite Animation is being clicked I used it's UID. But yeah that's what the quote you posted was talking about.

I've added some more sound stuff and animations to the Battles in my newest update to it that I haven't uploaded. Haven't worked out a solution to something I'm having a slight issue with the animation. I am using one work around solution atm, know of one more that could do it but it's not one I want to do which is just put it's collusion on the attack itself. Since eventually going to have more than just one on each side would rather the collusion call upon a single function. Work around I'm using right now is a wait command on the trigger to wait a second before calling the function and the function is called when the object is passing over the object it's supposed to collide with that then triggers it to go off where I wanted it to and then set off the explosion. But that's probably just a messy work around and might not work on a different angle shot. So yeah, just things working on playing with, seeing what I can do with it to work it with C2 the way I want it to lol.

Edit: Went ahead and uploaded the current with the audio and animation of casting. Can be found here. Working on Special and Attack animation and sound atm for testing.
You do not have the required permissions to view the files attached to this post.
B
10
S
2
G
1
Posts: 44
Reputation: 817

Post » Mon Jun 23, 2014 6:40 am

@daehawk : You rather want to use a for each loop at the start of your layout and for each character, create a variable id = Self.UID;
Then, every time you want to call a character you have filtered, you just have to call objectName.id

@ahmadmanga : it's good to have characters inside a family to give them the same instance variables etc. easily. You can also manually assign them a tag to easily filter them in the code (if character.type == "playable", -> do some specific actions...). But UIDs are key to avoid code duplication and scale up your engine: using trigger events (on animation finished), you can filter one instance and send its UID to a function. The function picks the object by UID and does all kinds of stuff to it!

Good luck guys,
Nathan
B
77
S
22
G
4
Posts: 311
Reputation: 12,634

Post » Mon Jun 23, 2014 10:42 am

Valerien wrote:@daehawk : You rather want to use a for each loop at the start of your layout and for each character, create a variable id = Self.UID;
Then, every time you want to call a character you have filtered, you just have to call objectName.id


@Valerien : Thanks for the feedback and this is actually a good idea and method. Also has properties for some other things that I am now changing the way their events are set up for. As well as gave me some ideas on how to change some other things I was working on setting up. Thanks.
B
10
S
2
G
1
Posts: 44
Reputation: 817

Next

Return to Game Development, Design & Ideas

Who is online

Users browsing this forum: No registered users and 1 guest