• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

GAF Indie Game Development Thread 2: High Res Work for Low Res Pay

Status
Not open for further replies.
What do you guys think about experience point rewards in strategy RPGs like Shining Force and Fire Emblem? Most games award EXP to the actor, with bonus EXP when the actor destroys its target. I like this but it does have the problem of "winner keeps winning" such that strong offensive characters snowball ahead. Awarding an even split to the entire party keeps things in balance but also takes EXP control away from the player. Any good alternatives? Otherwise I'm leaning towards the latter.

IIRC, the FF:T games award a fixed party EXP per battle which scales down based on how overlevelled your party is, and each action taken by each unit awards 'bonus' exp and units are on an exponential curve, so a newbie will level quickly compared to vets.

also IIRC, the Disgaea games award exp on the killing blow, regardless of how much prior damage was done, so letting a newbie get the killing blow will net them all of the exp gain and let you level them quickly.
It also has a combo system, where getting a combo kill will award half the regular exp to every character that participates in a combo - regardless of how much damage they actually did during the combo chain - so any more than 2 units in a combo results in a net 'profit' of EXP.
 

V_Arnold

Member
What do you guys think about experience point rewards in strategy RPGs like Shining Force and Fire Emblem? Most games award EXP to the actor, with bonus EXP when the actor destroys its target. I like this but it does have the problem of "winner keeps winning" such that strong offensive characters snowball ahead. Awarding an even split to the entire party keeps things in balance but also takes EXP control away from the player. Any good alternatives? Otherwise I'm leaning towards the latter.

I strongly prefer a system where you do not get such bonuses.

However, I would probably get away from flat levelling altogether, it makes no sense when you think about it too much(!) :D A warrior who is effective at killing will probably either die or get more effective at killing. A priest who keeps healing will get more effective and good at healing, so this way, they all get better at the roles they perform. If this is tied to the XP system, then so be it, otherwise you just need not reward the ones doing the killing blow more than others. Killing is just part of the fight, not the entirety of it (hopefully.)
 

Lork

Member
IIRC, the FF:T games award a fixed party EXP per battle which scales down based on how overlevelled your party is, and each action taken by each unit awards 'bonus' exp and units are on an exponential curve, so a newbie will level quickly compared to vets.

also IIRC, the Disgaea games award exp on the killing blow, regardless of how much prior damage was done, so letting a newbie get the killing blow will net them all of the exp gain and let you level them quickly.
It also has a combo system, where getting a combo kill will award half the regular exp to every character that participates in a combo - regardless of how much damage they actually did during the combo chain - so any more than 2 units in a combo results in a net 'profit' of EXP.
I don't know about the later games, but assuming you're talking about Final Fantasy Tactics, in the first game there was no party wide or per battle EXP gain. EXP was awarded to individual characters on a per action basis. It's also worth noting that the rate of EXP gain was 100% scaled, with no built in "leveling curve" at all. It always took 100 EXP to level up, and the amount awarded per action was entirely based on the disparity in level between the actor and the character being acted upon.
 

Bit-Bit

Member
I was talking sometimes, too. I didn't realize music got your recordings muted. I'll probably still do it anyway unless there's some way of dealing with it. I noticed a list of approved music.. But that seems limiting.

I removed the archive because something accidentally showed up in a skype chat window -- a private conversation -- And it shouldn't be archived. I exported it first so, though, so when it ends up on youtube I'll just edit it and let it sit there.













I think you guys are giving me a little too much credit, I see a lot of things I'd fix still, but I appreciate the kind words. :)

I'll probably stream again today/tonight and do some more. @Pixel a lot of my art ends in frustration too, you're not alone, being tortured and frustrated is often part of the process, and it's how we improve. Someone who has an easy time drawing, and always thinks their work is awesome, is probably someone who isn't improving. I mean, anyone who was crazy enough to stick around for very long saw how I sat around for hours just sort of fiddling around. It's madness.

Jobbs, love your work and can't wait for your game. Do you have an archive of your art process? I'd really like to see how you get your game to look so damn good. Seriously, I feel like as a one man show, you're on a league of your own.
 

Jintor

Member
I spent this evening implementing gamepad controls and i've come to the conclusion I hate gamepad controls

anyone have good ideas about how to get just a 'tap' on the L Analogue stick? *beats head against wall*
 

Lork

Member
I spent this evening implementing gamepad controls and i've come to the conclusion I hate gamepad controls

anyone have good ideas about how to get just a 'tap' on the L Analogue stick? *beats head against wall*
First test for input on the axis close to the max, then after a short amount of time (you'll have to tweak this until it feels right), check whether input on the axis has returned to a value close to the minimum. If you want to look at input from a stick as a whole rather than the individual horizontal and vertical components, combine them into a 2D vector and take the magnitude of that to get your value.
 
I spent this evening implementing gamepad controls and i've come to the conclusion I hate gamepad controls

anyone have good ideas about how to get just a 'tap' on the L Analogue stick? *beats head against wall*
Define "tap" and how else are you using the analog? How are you reading its axis? Are you passing info raw to your character controller or are you throwing the raw input into a variable to perform tricks with it before passing it to your character controller?

The last question I asked has the answer to how you need to go about reading the "tap", BTW ;)

Edit: goddammit beaten by mobile.
 

Jintor

Member
lol i kinda don't want to think about it right now. maybe i'll go sprite some stuff instead for a bit and relax my head.

thanks for the help though, I think I kinda get what to do. (implementing variable speed dependent on the degree I was pushing the stick - what's that called? Analogue controls? - was really irritating, I ended up cheating... I don't know why but if I tried my standard acceleration formula it ended up maxing out at .5 speed for some reason... had to just plug it in direct to my horizontal speed...)

ugh
 
lol i kinda don't want to think about it right now. maybe i'll go sprite some stuff instead for a bit and relax my head.

thanks for the help though, I think I kinda get what to do. (implementing variable speed dependent on the degree I was pushing the stick - what's that called? Analogue controls? - was really irritating, I ended up cheating... I don't know why but if I tried my standard acceleration formula it ended up maxing out at .5 speed for some reason... had to just plug it in direct to my horizontal speed...)

ugh
Sounds like you missed a multiplier, think of it like the final drive of a vehicle, the final toque multiplier before the axles (ring and pinion, gear). I don't know if your movement speed is staged (linear jumps) or curved (based on analog tilt) but the former is performed with a simple check to get the axis ranges for each speed change and the latter can simply be a multiplier of the axis tilt once you pass the deadzone. Analog axis are usually -1, 1 : so passing a multiplier of full speed at full tilt or just slightly under will yield top speed. It doesn't have to be complicated, just based on whatever acceleration curve you choose and width of that curve (say -0.9, 0.9 and any range falling within -0.2, 0.2 is a dead zone)
 
The upcoming Cosmic Star Heroine by Zeboyd is being made with Unity. Don't assume you can just click your way to a full game... they are coding the engine and tools from scratch.

Unity can be non-coder friendly if you are willing to rely on bought assets, but make no mistake you'll need to code to unlock its potential.

Yeah, we're using Unity for Cosmic Star Heroine. No reason you can't do a 2D RPG in Unity - it's a versatile system.
 

Ito

Member
I can't believe what I just found.

Remember that game, "Candle" by Teku Studios, that got funded on Kickstarter a while ago?

por-que-deberias-apoyar-candle-de-teku-studios_gw81.jpg


Well, this is "Candle" by "Teco" Studios:

hWZx2gX.png


http://tecostudios.com/

Is this a coincidence?
 

anteevy

Member
Normally I'm not a fan of pixel graphics (those that try to capture the old games), but I love the look of this! Maybe because it's reaally pixelated + the futuristic color scheme + effects. And obviously I like abstract graphics. Looking forward to the trailer. :)

blah programmer art blah
I'm also a total noob at creating 3D models and animations. Thanks to the awesome tools in the UE4 I managed to create a style that I'm quite happy with:
03st.jpg

Model-wise, 90% consists only of spheres and planes. My most complex model in the game is the rounded corner wall piece. :D Material editor + particle editor + some camera effects did the rest. Without really having a clue at the beginning, I've played around with these tools until I got something I liked. When done properly I often like stylistic and abstract graphics way better that realistic, complex ones.

(If you'll excuse me now, I have a certain livestream to watch in 5mins :D)
 

Jobbs

Banned
Jobbs, love your work and can't wait for your game. Do you have an archive of your art process? I'd really like to see how you get your game to look so damn good. Seriously, I feel like as a one man show, you're on a league of your own.

Depends what you mean by archive, but if you have any questions feel free to ask me. And thanks :)

In general, the way I do most of the animation (especially for enemies) is to just start with one (or sometimes a few, depending on what's needed) drawing of an enemy, and then cut it up and animate it by manipulating and moving the pieces.This doesn't work for just ANY animation, but it does work for many.

walker-walk.gif


This started as just one static drawing, and by cutting it into different layers in photoshop and animating it on a timeline, I made it move. This is a similar *idea* in many ways to how 2D skeletal systems such as Spine 2D work, except those are capable of animating at runtime and thus are much more efficient. (in other words, the program will be moving static pieces around for you rather than just displaying full sprite images from a giant prebaked sheet) In the future, I plan to use such a system at least in part.

In other cases, as mentioned, I'll draw several key poses separately and rig them all separately. This is necessary when a character or enemy has really important poses that wouldn't be accessible from just one drawing. Usually it's possible with some ingenuity to link these poses together through manipulating, but I'll do what it takes to make it work.

In other rare cases, I'll animate portions in a more traditional way, sketching poses frame by frame, if I'm just having trouble figuring something out and end up spending a lot of time on it. I try not to do this because it's a lot of work to do it this way while keeping the style consistent with the rest of the art (painterly).
 

UsagiWare

Neo Member
Depends what you mean by archive, but if you have any questions feel free to ask me. And thanks :)

In general, the way I do most of the animation (especially for enemies) is to just start with one (or sometimes a few, depending on what's needed) drawing of an enemy, and then cut it up and animate it by manipulating and moving the pieces.This doesn't work for just ANY animation, but it does work for many.

This started as just one static drawing, and by cutting it into different layers in photoshop and animating it on a timeline, I made it move. This is a similar *idea* in many ways to how 2D skeletal systems such as Spine 2D work, except those are capable of animating at runtime and thus are much more efficient. (in other words, the program will be moving static pieces around for you rather than just displaying full sprite images from a giant prebaked sheet) In the future, I plan to use such a system at least in part.

In other cases, as mentioned, I'll draw several key poses separately and rig them all separately. This is necessary when a character or enemy has really important poses that wouldn't be accessible from just one drawing. Usually it's possible with some ingenuity to link these poses together through manipulating, but I'll do what it takes to make it work.

In other rare cases, I'll animate portions in a more traditional way, sketching poses frame by frame, if I'm just having trouble figuring something out and end up spending a lot of time on it. I try not to do this because it's a lot of work to do it this way while keeping the style consistent with the rest of the art (painterly).

Thanks for sharing as I was wondering how you did those animations as well. The shadow/lighting part is really nice. I didn't know photoshop was capable of such feats.
Is (texture) memory something you need to worry about given the detail/fluidity and count of the animations?
 
I was talking sometimes, too. I didn't realize music got your recordings muted. I'll probably still do it anyway unless there's some way of dealing with it. I noticed a list of approved music.. But that seems limiting.

I removed the archive because something accidentally showed up in a skype chat window -- a private conversation -- And it shouldn't be archived. I exported it first so, though, so when it ends up on youtube I'll just edit it and let it sit there.

Oh, I must have missed that. I mean, I saw you chatting in the window with the MOBA UI guy for a little while, but that doesn't get saved. I was going to watch more but it was family night last night. I'll try to catch some of your next stream :)
 
A test screenshot. I'm not really sure if I wanna use this background in the final version. I had a test room but I lost the file -_-.

Anyways, here is Alice fighting against a Machina. Machinas are enemies in the alternate world. However, the background is clearly happening in the regular world, which should never happen (at least not yet)
Love the look of this. Art and colors are really fucking nice.

So modest!

Back from vacation...

... and modified my melting effect right away;

meltupdown1.gif


Varying the initial position should make the effect more pleasing. Will see.

Fantastico.
Being able to create, modify, and tailor the effects as needed is one of the
coolest things being a programmer. :+
Continuing the creator's mission, as always :D Looks great!

I did use most of Unity's built in since I didn't need to write them except for the tiling during damage. Didn't know if there was an effect like that but I borrowed it from my previous loading shader.

Just stopped streamin. So tonight from scratch I painted the creature, then got it rigged up for animation, then did a basic idle motion.

MilkyOblongJumpingbean.gif


Later (probably tomorrow) I'll make it do other things on the next stream.
Good shit. I would have stayed longer but my day job requires me to work the "you don't need a fucking life" shifts so I get up around 2:30 in the AM ha!

Here's the VOD. He played Spotify the whole time though so no audio.
He needs to speak. I like hearing what people sound like.

Absolutely stunning stuff, I can't wait to see the full trailer. It's come such long way since the last time and everything just looks so fluid and more importantly fun to play. I hope the trailer has the spider in action ;)
Thanks, dude. Really appreciate this. Both Daniel and I have been focusing like crazy and its good to read that we are on the right track :D

Wow, looks like it came into its own! The background detail is awesome, and I love the animations - props to the robot telport :-D Really, really like how it's turning out!
Thanks, Pehesse! Daniel does some kickass work with the animations and art. Makes all of my shit code look like it actually works XD

Wonderful. Its leg looks almost 3d, you did a great work with the depth of the sprite.

So this is your game! Very cool looking indeed. I'll be looking up to see more footage!

His shit is bonkers for sure and thanks!
 

-COOLIO-

The Everyman
I'm also a total noob at creating 3D models and animations. Thanks to the awesome tools in the UE4 I managed to create a style that I'm quite happy with:
03st.jpg

Model-wise, 90% consists only of spheres and planes. My most complex model in the game is the rounded corner wall piece. :D Material editor + particle editor + some camera effects did the rest. Without really having a clue at the beginning, I've played around with these tools until I got something I liked. When done properly I often like stylistic and abstract graphics way better that realistic, complex ones.

(If you'll excuse me now, I have a certain livestream to watch in 5mins :D)

a geometric art style is definitely another great route in addition to pixel art for the novice artist. you're pulling off the geometric route masterfully with UE4s lighting stuff. well done, sir.
 
I don't think I've ever played a Fire Emblem game, but if you have to very carefully make weak characters get last hits, I could imagine that being frustrating in a game where characters can permanently die.

Yeah, I'm not a big fan of micromanaging last hits either.

The idea is that you're awarded some spendable bonus points (you could either give them to the player via completing secondary objectives, or it's a fixed percentage of all xp gain, or static item drops you need to redeem, or whatever else), which you can then spend on the units of your choice to get them caught up to speed with the others. Gives an incentive to complete some side stuff if the bonus xp is awarded there, and allows you to customize your characters a bit since you can spoon feed your favorites, or spread evenly among everyone, etc.

Something like this sounds like a decent balance, though I think I might do it in reverse. Even split EXP when defeating an enemy, and then some sort of "MVP" XP awarded to individual characters who complete specific map objectives (capture a point, rescue this person, defeat this enemy, etc).

also IIRC, the Disgaea games award exp on the killing blow, regardless of how much prior damage was done, so letting a newbie get the killing blow will net them all of the exp gain and let you level them quickly.
It also has a combo system, where getting a combo kill will award half the regular exp to every character that participates in a combo - regardless of how much damage they actually did during the combo chain - so any more than 2 units in a combo results in a net 'profit' of EXP.

I think a major issue with awarding EXP to actors that make the kill is that it kind of ignores the relevance of healing and support roles.
 

Lautaro

Member
Ok, I just sent a shitton of keys to all press outlets and youtubers (big and small) that may want to cover the game. We'll see how that goes, I still have some pre-release keys if I missed someone.
 

zeioIIDX

Member
Man, everyone's games look incredible. Mine is lacking in the art department for sure lol. I don't check this thread too often because it gets me in the pits knowing how infrequently I tend to work on my game but if anyone could PM me a response to my conundrum, that'd be awesome!

Basically, Bounce Brawlers is a 2D fighter and I'm trying to implement a knock-back feature so when the player or enemy is hit, they get knocked back a bit. I'm using Game Maker Studio by the way. I realized I just had to set a negative value for the speed of the character, then use an alarm to set the speed back to normal. The trouble I'm having is that my "Start moving in a direction" Action is inside of a Create Event. So when the character is knocked back, it usually just freezes in place when it should really be going back to it's default speed. In the "SMIAD" Action, it's set to Move Fixed, applies to self, speed of 6, and it's relative.

When the players collide and attack, this is the code I set for the one getting hit:
speed = -8
alarm[0] = 5

For the Alarm, this is the code executed:
speed +=8

I think it would be simpler to code the knock-back feature but I'm not so great with code and that might also mean I'd have to also code the character to start moving initially rather than utilize the drag and drop menu for that.
 

Jintor

Member
Sounds like you missed a multiplier, think of it like the final drive of a vehicle, the final toque multiplier before the axles (ring and pinion, gear). I don't know if your movement speed is staged (linear jumps) or curved (based on analog tilt) but the former is performed with a simple check to get the axis ranges for each speed change and the latter can simply be a multiplier of the axis tilt once you pass the deadzone. Analog axis are usually -1, 1 : so passing a multiplier of full speed at full tilt or just slightly under will yield top speed. It doesn't have to be complicated, just based on whatever acceleration curve you choose and width of that curve (say -0.9, 0.9 and any range falling within -0.2, 0.2 is a dead zone)

i looked at this, shook my head, went to sleep, woke up and magically understood what you were talking about. I think this is how I ended up implementing it in my cheating fashion but what I don't understand is that, as a temp stemp, I ended up implementing something where..

Code:
if (gamepad_axis_value(0, gp_stickL) < 0) {
    { // normal movement code for going left }

and despite running the exact same code the hsp (horizontal movement speed) maxed out at 0.5. I'll post the actual code later and see if anybody else can make sense of it.
 
Man, everyone's games look incredible. Mine is lacking in the art department for sure lol. I don't check this thread too often because it gets me in the pits knowing how infrequently I tend to work on my game but if anyone could PM me a response to my conundrum, that'd be awesome!

Basically, Bounce Brawlers is a 2D fighter and I'm trying to implement a knock-back feature so when the player or enemy is hit, they get knocked back a bit. I'm using Game Maker Studio by the way. I realized I just had to set a negative value for the speed of the character, then use an alarm to set the speed back to normal. The trouble I'm having is that my "Start moving in a direction" Action is inside of a Create Event. So when the character is knocked back, it usually just freezes in place when it should really be going back to it's default speed. In the "SMIAD" Action, it's set to Move Fixed, applies to self, speed of 6, and it's relative.

When the players collide and attack, this is the code I set for the one getting hit:
speed = -8
alarm[0] = 5

For the Alarm, this is the code executed:
speed +=8

I think it would be simpler to code the knock-back feature but I'm not so great with code and that might also mean I'd have to also code the character to start moving initially rather than utilize the drag and drop menu for that.

Your method seems a little convoluted, but I think your problem is that -8+8 = 0. Doing a relative +8 when you start with -8 will set it to 0.
 

zeioIIDX

Member
Your method seems a little convoluted, but I think your problem is that -8+8 = 0. Doing a relative +8 when you start with -8 will set it to 0.

-_- Math. How does it work? I figured it was something I was doing wrong with those values. I'll fix that up and see if anything improves, thanks a lot for the response liliththepale! Your game is incredible looking by the way, amazing work.

Edit: It works! I set speed +=14 instead (just added my default 6 to the original 8 I was using for the Alarm) and it works just fine now. Thanks again :) Next up: time to figure out how to get the two players to knock-back only when someone is throwing a punch or kick, not just simply touching each other.
 

Jintor

Member
-_- Math. How does it work? I figured it was something I was doing wrong with those values. I'll fix that up and see if anything improves, thanks a lot for the response liliththepale! Your game is incredible looking by the way, amazing work.

Edit: It works! I set speed +=14 instead (just added my default 6 to the original 8 I was using for the Alarm) and it works just fine now. Thanks again :) Next up: time to figure out how to get the two players to knock-back only when someone is throwing a punch or kick, not just simply touching each other.

i think this is where hitboxes and hurtboxes will start to come into play instead of simple object collisions
 

zeioIIDX

Member
i think this is where hitboxes and hurtboxes will start to come into play instead of simple object collisions

You're right. That's the exact point where I gave up on my game a few months back...It didn't seem terribly difficult I suppose, just time consuming.
 
You're right. That's the exact point where I gave up on my game a few months back...It didn't seem terribly difficult I suppose, just time consuming.

Setting up the underlying systems can be kind of daunting, but they aren't that hard to use and maintain once you get going. I'm thinking about doing a tutorial for the hitboxes we're using in Nethermind. It's been crucial to easy enemy and obstacle programming.
 

Jintor

Member
Setting up the underlying systems can be kind of daunting, but they aren't that hard to use and maintain once you get going. I'm thinking about doing a tutorial for the hitboxes we're using in Nethermind. It's been crucial to easy enemy and obstacle programming.

selfishly - please do. The only tutorial I found referred to a script that didn't exist anymore to figure out its collisions @_@ (though I think I have an idea, but... ugh)
 
Setting up the underlying systems can be kind of daunting, but they aren't that hard to use and maintain once you get going. I'm thinking about doing a tutorial for the hitboxes we're using in Nethermind. It's been crucial to easy enemy and obstacle programming.
Would watch/read. Even if I don't use GM I like seeing how other people implement things.
 
So for the past month, I've been working on a 3D platformer in UE4 with randomly generated levels.

Every time you start a level, the level is generated completely on-the-fly according to an algorithm I've coded. The algorithm allows for multiple branching paths, too, so every single play session will be completely different from the last.

Every prop is randomized. The trees, for example, have a randomly picked color every time they are spawned. Every enemy spawns with a randomly picked color hue (like the cars in the top screenshot). So do the platforms themselves


Although the levels are generated randomly, they generate only according to parameters I set per map (ie. "spawn only x amount of islands", or "spawn x type of enemies on isles 2 and 4"). This allows me to make some levels harder or longer than others, among other things.

Next up on my todo list is adding some basic enemy mobs to the floating isles.
 

Five

Banned
It is a really cool feeling when you see your game in your Steam list for the first time.

a4NFQiu.png

Congrats!


So for the past month, I've been working on a 3D platformer in UE4 with randomly generated levels.

Every time you start a level, the level is generated completely on-the-fly according to an algorithm I've coded. The algorithm allows for multiple branching paths, too, so every single play session will be completely different from the last.

Every prop is randomized. The trees, for example, have a randomly picked color every time they are spawned. Every enemy spawns with a randomly picked color hue (like the cars in the top screenshot). So do the platforms themselves



Although the levels are generated randomly, they generate only according to parameters I set per map (ie. "spawn only x amount of islands", or "spawn x type of enemies on isles 2 and 4"). This allows me to make some levels harder or longer than others, among other things.

Next up on my todo list is adding some basic enemy mobs to the floating isles.

Do you have a video of the gameplay? I'm curious what that looks like in action.
 

Jintor

Member
Solved my sprite problems.

1) learned how draw events actually work
2) My walk sprite animation enlargened by a single pixel but I forgot to move the sprite origin, so my vertical collision code was firing every step during the walk event and going nuts

Pity, it kinda looked cool and splatoon-like. Maybe I'll think about those mechanics too
 

Jobbs

Banned
Art stream over. We did some tedious and painful animations, talked about game design, and hung out. It's the place that brought everyone together. I do feel like I accomplished that.

Thanks to everyone who kept me company ;) Will be doing it again tomorrow. I'm trying to crunch some art stuff over the next week.
 
Art stream over. We did some tedious and painful animations, talked about game design, and hung out. It's the place that brought everyone together. I do feel like I accomplished that.

Thanks to everyone who kept me company ;) Will be doing it again tomorrow. I'm trying to crunch some art stuff over the next week.

Thanks for hosting us! I bailed at the end because my internet wasn't cooperating with Twitch, but I had lots of fun today.
 

Jobbs

Banned
This is what I did on the Stream.

JollyEnergeticDikkops.gif


This one I feel isn't quite done, but I got tired of fiddling with it and I suspect the viewers as well. I'll probably return to it for a bit more cleanup later.

This next one will be supplemented by some particle FX.

VengefulDimDalmatian.gif


It doesn't stay dead unless you kill it with a certain property.

Thanks for hosting us! I bailed at the end because my internet wasn't cooperating with Twitch, but I had lots of fun today.

NP! Thanks for hangin'
 
Status
Not open for further replies.
Top Bottom