• 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.

Yoshi

Headmaster of Console Warrior Jugendstrafanstalt
Option 1 is both. It doesn't cost any extra.

So with option 1 you give the users the option to:
(1) Download for free and play with ads
(1a) If they decide they love the game and want to play it ad-free to unlock the "full" version directly via IAP from within the game
(2) Buy the game right away?

Then of course I would choose option 1, there does not seem to be any downside to it.
 

kiguel182

Member
^ I also agree with what the others said about using one main weapon.

I asked this in the iOS gaming thread, but I may as well ask here too. Which do you guys think would be a better option for releasing a new game on the app store?

1. A paid version, and a separate ad-supported free version OR
2. An ad-supported free version with an IAP to remove the ads.

Any thoughts?

two is the way to go.

Alt ought I'm thinking of doing the first one simply because I have no idea how to implement micro-transitions on the Play Store and I'm afraid I'm going to screw it.
 
Is that a gun shield? Awesome!
Isn't this how guns are made these days? :D

Thanks for the responses. I'd actually just rather have a paid app, but I don't know if many people pay for apps these days so that's why I'm thinking about doing it as a free one.
They normally don't unless you are a 1-hit wonder. We made some change with IC but nothing to write home about. Free w/ads and a purchase to opt out seems to be tr way to go.

Cool stuff, bro! Your game will perhaps serve as an ideal example for some of
the stuff I am working on -- alas you may not know why and how. Anyhow, keep
these huge uniform colored pixels coming! :)

Edit: What will be the native resolution for this game? What about the
game-pixel's size given the native resolution? Say the game runs at 1080p,
what will be a game-pixel's native pixel size on the screen?
Thanks dude. While I don't know what you are working on I can venture a guess with a little bit of deduction based on what you've been showing of your work. Maybe not the subject material but the look, at least. You're not making all of those beautiful old school algorithms for nothing ;)

As for resolution, we are working with 192x108. That's a ridiculously difficult stretch of real estate to work with to present things that actually look like things and thank the heavens my partner does mind-blowing work. The environments alone he's been making blow me away. We do, however, use a few assets at native 1:1 scaling in game for anything that should NOT have banding on a color fade. So the main character, the skybox, a few environment pieces, etc. We mix them together and adjust our units of measurement per object in Unity (note: not object scaling, bad bad hi!d) to match a typical 1080p display. We correct for other resolutions with a simple scaler I wrote to match as close to pixel-perfect as 10:1 can get, using stat weights and adjust the HUD dynamically for each resolution. Nothing difficult, just some math to check if each pixel will be divisible by 2 to create a perfect cube for each pixel since they are 10x10 at runtime then adjust the viewport ad necessary.

That looks really cool and once again a lot of personality in just few pixels. I really like the way it's pixel art, but the individual pixel movements aren't constrained to the same grid, makes it look really hypnotic and fresh.
Thanks machine! He does amazing stuff and will eventually pop in here to say hi!
 

Dynamite Shikoku

Congratulations, you really deserve it!
I'm still undecided about going the free route. I did it before with my last game for a while and getting thousands of downloads a day still only made me a few cents in ad revenue. You need to be getting hundreds of thousands of downloads to make anything worthwhile. I make more money having switched the game back to paid and having a random person buy it every now and then than i did with ad revenue.
 

planckpixels

Neo Member
I just thought id stop in and say hello and introduce myself :D I am the art half of Absinthe Games, excited to be working with Jack on our second game.
I hope everyone is enjoying the art!
Feel free to throw any questions my way and I'll do my best to sound like I know what I'm doing.

Daniel ~
 
I just thought id stop in and say hello and introduce myself :D I am the art half of Absinthe Games, excited to be working with Jack on our second game.
I hope everyone is enjoying the art!
Feel free to throw any questions my way and I'll do my best to sound like I know what I'm doing.

Daniel ~
^ this guy is bad.
 

planckpixels

Neo Member
Isn't this how guns are made these days? :D


They normally don't unless you are a 1-hit wonder. We made some change with IC but nothing to write home about. Free w/ads and a purchase to opt out seems to be tr way to go.


Thanks dude. While I don't know what you are working on I can venture a guess with a little bit of deduction based on what you've been showing of your work. Maybe not the subject material but the look, at least. You're not making all of those beautiful old school algorithms for nothing ;)

As for resolution, we are working with 192x108. That's a ridiculously difficult stretch of real estate to work with to present things that actually look like things and thank the heavens my partner does mind-blowing work. The environments alone he's been making blow me away. We do, however, use a few assets at native 1:1 scaling in game for anything that should NOT have banding on a color fade. So the main character, the skybox, a few environment pieces, etc. We mix them together and adjust our units of measurement per object in Unity (note: not object scaling, bad bad hi!d) to match a typical 1080p display. We correct for other resolutions with a simple scaler I wrote to match as close to pixel-perfect as 10:1 can get, using stat weights and adjust the HUD dynamically for each resolution. Nothing difficult, just some math to check if each pixel will be divisible by 2 to create a perfect cube for each pixel since they are 10x10 at runtime then adjust the viewport ad necessary.


Thanks machine! He does amazing stuff and will eventually pop in here to say hi!

My ears are burning :D
I'll try and get some more transform animations done, we have some great stuff in the works.
 

missile

Member
YOU HEARD CORRECTLY - Also show your real face... what is this logo - pft

lol xD

Welcome over here, dude! Cool graphics and stuff! :+


... Thanks dude. While I don't know what you are working on I can venture a guess with a little bit of deduction based on what you've been showing of your work. Maybe not the subject material but the look, at least. You're not making all of those beautiful old school algorithms for nothing ;) ...
It get's better with every increase in in-game-pixel size. ;)

... As for resolution, we are working with 192x108. That's a ridiculously difficult stretch of real estate to work with to present things that actually look like things and thank the heavens my partner does mind-blowing work. The environments alone he's been making blow me away. We do, however, use a few assets at native 1:1 scaling in game for anything that should NOT have banding on a color fade. So the main character, the skybox, a few environment pieces, etc. We mix them together and adjust our units of measurement per object in Unity (note: not object scaling, bad bad hi!d) to match a typical 1080p display. We correct for other resolutions with a simple scaler I wrote to match as close to pixel-perfect as 10:1 can get, using stat weights and adjust the HUD dynamically for each resolution. Nothing difficult, just some math to check if each pixel will be divisible by 2 to create a perfect cube for each pixel since they are 10x10 at runtime then adjust the viewport ad necessary. ...
Let me see if I get that straight.
Working res is 192x108, hence on 1080p an in-game pixel will be 10x10 native
pixels, yet some content, as you said, will be done at 1:1 to allow for
gradients, color transitions to look good at any higher resolution. For,
drawing a gradient at 192x108 while scaling it up to 1080p will look rather
meh. So given the devices resolution, the working resolution gets scaled to
fit the device whereas the gradients etc. will be rendered at the device
resolution (not scaled) to get non-banding, smooth transitions etc. That's
right? Can you send me a native picture where such assets are already mixed?
I got one already where the background is a smooth gradient. But do you have
another one which uses more in-game assets at 1:1 mixed with the working
resolution?
 

planckpixels

Neo Member
lol xD

Welcome over here, dude! Cool graphics and stuff! :+


It get's better with every increase in in-game-pixel size. ;)


Let me see if I get that straight.
Working res is 192x108, hence on 1080p an in-game pixel will be 10x10 native
pixels, yet some content, as you said, will be done at 1:1 to allow for
gradients, color transitions to look good at any higher resolution. For,
drawing a gradient at 192x108 while scaling it up to 1080p will look rather
meh. So given the devices resolution, the working resolution gets scaled to
fit the device whereas the gradients etc. will be rendered at the device
resolution (not scaled) to get non-banding, smooth transitions etc. That's
right? Can you send me a native picture where such assets are already mixed?
I got one already where the background is a smooth gradient. But do you have
another one which uses more in-game assets at 1:1 mixed with the working
resolution?

Thanks mate! :D glad i finally stopped by
 

missile

Member
Some simplifications and some final insights on the stretching algorithm.

We started with;
Code:
void stretch_line_bhm(img *imgSrc, img *imgDst, int widthSrc, int widthDst)
{
  int x = 0;
  int y = 0;
  int dx = widthDst;  
  int dy = widthSrc;
  int e = 0;           
  
  // determine iteration direction
  if(dy < dx)   
  {                      
    e = 2*dy - dx;       
    
    // iterate over x (scale up, widthSrc < widthDst)
    while(x < dx)
    {     
      // setpixel(x,y)
      imgDst[x] = imgSrc[y]; 
      
      if(e > 0)  
      {         
        y++;
        e -= 2*dx;                
      }

      x++;
      e += 2*dy;
    }
  }
  else
  {     
    e = dy - 2*dx; 

    // iterate over y (scale down, widthSrc >= widthDst)
    while(y < dy)
    {      
      // setpixel(x,y)
      imgDst[x] = imgSrc[y]; 
      
      if(e < 0)  
      {
        x++;
        e += 2*dy;
      } 

      y++;
      e -= 2*dx;
    }
  }
}
We can modify the algorithm such that we don't need to run through the else-
part (slope dy/dx >= 1). Well, if dy/dx is greater than 1, we will actually
scale the source array down. Hence, some pixels need to be skipped. So let us
see what happens if we leave the else-part out;
Code:
// does not work
void stretch_line_bhm(img *imgSrc, img *imgDst, int widthSrc, int widthDst)
{
  int x = 0;
  int y = 0;
  int dx = widthDst;  
  int dy = widthSrc;
  
  int e = 2*dy - dx;       
    
  // iterate over x 
  while(x < dx)
  {     
    // setpixel(x,y)
    imgDst[x] = imgSrc[y]; 
      
    if(e > 0)  
    {         
      y++;
      e -= 2*dx;                
    }

    x++;
    e += 2*dy;
  }
}
With dy > dx the error term is > 0 and remains > 0 after the if-statement.
Hence, in each iteration y will be incremented by one which is not what we
want, because incrementing y by one in each iteration would imply no down
scaling at all. But since dy > dx, we need to skip some of those y's somehow.
In the standard Bresenham integer line algorithm the error term e in the
if(dy < dx) { ... if(e > 0){... e -= 2*dx; } ...} section will be
reinitialized when we move one step in y by subtracting 2*dx from e making it
<= 0. This is based on the assumption that dy < dx. If dy is greater than dx,
we would need to subtract 2*dx multiple times from e, because for each step in
x we would make more than one step in y. Doing so, and with respect to drawing
a line, would introduce gaps along the line, because we would jump more than
one pixel in y per step in x. However, since we don't want to draw the line
at all, and because the y in our algorithm indexes our source array, we will
arrive at the correct y value when subtracting 2*dx from e multiple times
until e <= 0 -- while incrementing y in the process skipping those y's we
can't account for due to down scaling. This effect will become much more clear
if we study some further simplifications. For the time being we will replace
if(e > 0) with while(e > 0) and the algorithm will work as expected;
Code:
void stretch_line_bhm(img *imgSrc, img *imgDst, int widthSrc, int widthDst)
{
  int x = 0;
  int y = 0;
  int dx = widthDst;  
  int dy = widthSrc;
  
  int e = 2*dy - dx;       
    
  // iterate over x 
  while(x < dx)
  {     
    imgDst[x] = imgSrc[y]; 
      
    while(e > 0)  
    {         
      y++;
      e -= 2*dx;                
    }

    x++;
    e += 2*dy;
  }
}
Now let us remove Bresenham's error-sauce. The error term can be derived from
the condition; dy/dx <= 1/2 (midpoint rule) <=> e := 2*dy - dx <= 0. Well,
lets modify this condition somewhat, i.e. to dy/dx <= 1 to show something
much more interesting, and let us define a similar error term (named e again)
by e := dy <= dx. For each step in x we keep track of the differential
increment in y, i.e. dy, by adding dy to e in each iteration on x. Now it so
happens that after some iterations (depending on dy/dx) the error term e will
be greater than dx which means; we now have to increment y to follow the line,
or to get a new index into our source array, while subtracting dx from e to
reinitialize the error term again. Ok, lets do this;
Code:
void stretch_line_bhm(img *imgSrc, img *imgDst, int widthSrc, int widthDst)
{
  int x = 0;
  int y = 0;
  int dx = widthDst;  
  int dy = widthSrc;  
  int e = dy;       
    
  // iterate over x 
  while(x < dx)
  {    
    imgDst[x] = imgSrc[y]; 
      
    while(e > dx)  
    {         
      y++;
      e -= dx;                
    }

    x++;
    e += dy;
  }
}
Fine.

Now lets apply some magic. Lets relabel some of the variables and let us see
if we won't suddenly get enlighted;
Code:
void stretch_line_bhm(img *imgSrc, img *imgDst, int widthSrc, int widthDst)
{
  int x = 0;
  int y = 0;    
   
  int numerator = widthSrc;     // dx
  int denominator = widthDst;   // dy
  int reminder = numerator;     // e
      
  // iterate over x 
  while(x < widthDst)
  {    
    imgDst[x] = imgSrc[y]; 
      
    while(reminder > denominator)  
    {         
      y++;
      reminder = reminder - denominator;                
    }

    x++;
    reminder = reminder + numerator;
  }
}
Now what does it look like? It's division by repeated subtraction! We want to
compute dy/dx = widthSrc/widthDst = numerator/denominator, yet we won't use a
floating-point divide operation, we instead emulate it by doing an integer
divide using repeated subtraction, and we also compute the reminder to keep
track of the fractional part. We initialize the reminder with the numerator
and subtract the denominator (divisor) from it as along as the reminder
remains larger than the denominator. Hence, if (for example) widthSrc >
widthDst (scaling down), then the subtracting-loop skips whole pixels, which
is what we want. Now after subtracting multiples of the denominator out of the
numerator, we will be left with a reminder > 0 if the numerator and
denominator won't divide evenly. The reminder actually represent the
fractional part/pixel we cannot address because we can only work with integer
pixels. The actual fraction is computed as reminder/denominator.

Lets say we have widthSrc = 64 and widthDst = 40 (scale down, 64/40 = 1.6).
Then we will be left with a reminder of 24 (fraction = 24/40 = 0.6). Now,
ideally, we would want to step 1.6 pixels in the source array for each setp in
the destination array. But we need integers here. If we would just round down
to 1, we would just copy every pixel out of the source array (leading to no
scaling at all for this example) up to 1*40 = 40 pixels with 24 pixels of the
source array not considered. On the other hand, if we round-up to 2, we would
scale down by 2 (0.4 more than what was asked for). Additionally, we would
over run our source array (2*40 = 80) by 16 pixels. Those issues are resolved
by keeping the fractional part (the reminder) for the next iteration, such
that we increment (in this example) our source array index y by 1, and at
times by 2 if the reminder has filled up sufficiently. Looking at the code
again, we see; after one iteration of the outer loop, the reminder equals 24 +
64 = 80. Hence, in the next iteration y will be incremented two times, yet in
the next² iteration only once. And so on. You may also go through the
algorithm for the case of scaling up with widthSrc = 40 and widthDst = 64 for
example.

Finally, lets rephrase our algorithm somewhat;
Code:
void stretch_line_bhm(img *imgSrc, img *imgDst, int widthSrc, int widthDst)
{
  int x = 0;
  int y = 0;
  int rem = widthSrc;
      
  // iterate over x 
  while(x < widthDst)
  {    
    imgDst[x] = imgSrc[y]; 
      
    while(rem > widthDst)  
    {         
      y++;
      rem -= widthDst;                
    }

    x++;
    rem += widthSrc;
  }
}
That's it! Sweet!

We could also now start to modify the integer scaler to account for the
skipped pixels when scaling down such that every destination pixel will be
an average of widthSrc/widthDst (= 64/40 = 1.6) source pixels making the
scaler very smooth. But this is way off of the original intention I had for
writing this article which follows below. Yet I implemented it nevertheless.

Having said all that, we now come to a very interesting conclusion; The
strength of Bresenham's integer line algorithm is not so much the optimal
error term, or of being all integer, which is cool nevertheless, mind you, but
the real insight into his algorithm is that he implicitly converted the
computation of the line (its slope) into a division algorithm based on
repeated subtraction!
 
My fellow devs with steam games, hows it going with the summer sale? This is our first sale, weve seen a decent spike in sales, cant complain. Im curious as to whether you've done better in one of these big sales, or just doing your own sale?
 

Pengew

Member
What would be a good size and resolution for hand drawn character sprites? I know it probably depends but just looking for a good starting point and try what others might use. I kind of want to switch from pixel art for the next project.
 

Jobbs

Banned
What would be a good size and resolution for hand drawn character sprites? I know it probably depends but just looking for a good starting point and try what others might use. I kind of want to switch from pixel art for the next project.

Make a mockup of the full screen at full resolution and sketch out how you want things to look on the screen, including the size of the main character.

Whether you want the sprite art to actually be larger than this in-engine would depend, obviously, if you want to zoom in on it and retain maximum clarity.
 

Das-J

Law of the West
We've started to roll out a bunch of new media and are pretty happy with how the game is looking. What do you all think?

o4gscDD.gif
 

Pengew

Member
Make a mockup of the full screen at full resolution and sketch out how you want things to look on the screen, including the size of the main character.

Whether you want the sprite art to actually be larger than this in-engine would depend, obviously, if you want to zoom in on it and retain maximum clarity.


I never though about trying that but it makes sense. So by doing that you get the character size you want with out having to worry about scaling.

Thank you for the help!
 

Jobbs

Banned
I never though about trying that but it makes sense. So by doing that you get the character size you want with out having to worry about scaling.

Thank you for the help!

This is the way to do it -- And in fact, it may help to start with a smaller thumbnail. So make a miniature version of a screenshot mockup of the game, and get the sizes so they look good in the thumbnail, then expand that to full resolution and see if you still like the scale of things.
 

wondermega

Member
dammit I haven't stuck my head in here for ages. Even a casual look shows some really nice looking work. Anyway - anybody from this thread going to be attending E3? Looking to meet up in-person with some like-minded developers. I'll go to the pocket gamer event and bum around the indiecade setup at least, otherwise not too sure yet..
 
It get's better with every increase in in-game-pixel size. ;)
It better blow my mind when you show your thing or we are not friends XD

Let me see if I get that straight.
Working res is 192x108, hence on 1080p an in-game pixel will be 10x10 native
pixels, yet some content, as you said, will be done at 1:1 to allow for
gradients, color transitions to look good at any higher resolution. For,
drawing a gradient at 192x108 while scaling it up to 1080p will look rather
meh. So given the devices resolution, the working resolution gets scaled to
fit the device whereas the gradients etc. will be rendered at the device
resolution (not scaled) to get non-banding, smooth transitions etc. That's
right? Can you send me a native picture where such assets are already mixed?
I got one already where the background is a smooth gradient. But do you have
another one which uses more in-game assets at 1:1 mixed with the working
resolution?

Aye. Rendered resolution is dependent on screen size to an extent. It's weighted to go closer to one resolution over another and does not scale 100% between the two. So long as each block is cleanly divisible by 2 along X and Y it will scale accordingly to always keep perfect cubes for object composition. The HUD moves accordingly but does NOT scale it's distance from screen edge. Unsure if I want to keep it a fixed distance from the edge at all times or scale it. So far I am liking fixed when I test at various resolution. Still not 100% sure on if I should keep that scaling. I will definitely need to test on more monitors of varying sizes.

Most of the mixed assets that require 1:1 are gradients or fades. Much of what planck does does not require 100% perfect non-banding, we still keep a bit of old-school in there but things like the main character and BG fades are native resolution 1:1 mapped - usually 64x2048 since the gradient is vertical - stretching horizontally does not matter, allows us to put a whole bunch of gradients on a single 2048x2048 sprite sheet. We can also do some color trickery to change gradients by blending (not just opacity change) several gradients at once for color shifts as needed. Nothing complex, but it adds just a little bit when needed for effect.

I do believe I have emailed you content with the mixed bag - that huge panoramic is one of them. Uses both 10:1 and 1:1. While not the best shot, the top floor of the night club pic I sent uses 1:1 for the lighting effects, while smaller one-offs use 10:1 for effect.
 

Das-J

Law of the West
dammit I haven't stuck my head in here for ages. Even a casual look shows some really nice looking work. Anyway - anybody from this thread going to be attending E3? Looking to meet up in-person with some like-minded developers. I'll go to the pocket gamer event and bum around the indiecade setup at least, otherwise not too sure yet..
Hit me up if you're at the Media Indie Exchange or the PC Gaming Show - We're demoing at both.
 

Yoshi

Headmaster of Console Warrior Jugendstrafanstalt
We've started to roll out a bunch of new media and are pretty happy with how the game is looking. What do you all think?

o4gscDD.gif

If a game with those looks was announced as an AAA game on any conference, I certainly wouldn't complain about the looks. Mighty impressive.
 
Screenshot Saturday video.

I zoomed in the camera alot so people could see what was going on and explain the various controls for the game. I got to add fastfall, short hop and a super jump to Pocket Smash. Is this too much jumping lol?
 

Pehesse

Member
It's 4 devs :)

Well, then, again, I'm very impressed. You could have said they were a dozen, and that would still feel like understating it to me. Congrats to all involved!

Loving the colour palette :)

Many thanks :-D Though I'm not sure there's really a single "palette", rather some color principles I apply similary for every different element... but if it were to be organized on a single palette, it'd most likely seem very inefficient :-D
 

Kyuur

Member
Playing around with Magicavoxel, I wish there was a way to export the mesh generated from the Marching Cubes renderer. :/ If anyone knows of any tools to do that, I'd greatly appreciate.


Edit: Put in quick revamp of the above! Really enjoying the look.. maybe I'll have to write my own exporter...
 

Jobbs

Banned

Hey Noogy, I've been playing Dust again, on PS4, today (which is really the first time I'm playing it on a bigger better TV) -- And I'm sorta examining it and trying to figure out what kind of post processing you're using in the game. I'm talking especially about how the game has sort of a vaguely soft, gaussy look to it, that helps blend things together and look more like an animated feature -- at least, I think I'm seeing some sort of something like that. Once I'm onto my next game, I'm very interested in making something that looks more in the style of an animated feature. Can you explain any of this or am I imagining it?
 
Very cool. I'm going to be doing animation on my voxel models soon, are you just using Blender or have you made/found some other tool to do the job?

Thanks! We're doing them on Maya, I know I know, it's widely unpopular xD

On a side note, we posted about our game on reddit and whoa, the worst feedback ever until the mods had to close the thread (we didn't even posted to reply),
and not even one constructive criticism, just pure venom spit on the screen.

I'm not sure if our game it's one of those "you either love it or hate it", but it seems we just get those kind of comments xD
 

Jobbs

Banned
I'm finding it increasingly tough to design varied and challenging enemy encounters, because of the nature of all of the mobility and long range firepower of the character.

I had a thought -- what if I made the regular cannon have a shorter range, so it's sort of a hybrid between a gun and a melee ranged weapon. Special weapons would still go the full range, which would increase their value.

http://www.gfycat.com/DistinctFineDowitcher

I'm far from committing to this yet, especially since I haven't tested all the existing content this way yet, but something about it appeals to me because it would make balancing the game more interesting and combat more dynamic. The character is very mobile.

Thoughts?
 

Lautaro

Member
I'm finding it increasingly tough to design varied and challenging enemy encounters, because of the nature of all of the mobility and long range firepower of the character.


Maybe you could take some lessons from Mega Man, the default weapon has no limited range but many enemies don't just stand there receiving damage: some of them have armor or shields (like the little helmet guys) that only remove when they are going to shoot, also other enemies fly and move in different patterns.
 
Finished some assets for the space stations bar. I just imported them into our test level to get the materials looking right in engine (I think they came out fairly well). Problem is that I spent the last 4 hours or so normal, color, and spec mapping, just for the two assets. At the moment I do all the low poly modeling in Maya, then export to Mudbox and sculpt the fine detail for normal extraction. Then I do the color and spec maps in Photoshop. This is a tedious process that takes for ever; anybody have work flow tips that might expedite it? Any suggestions, programs, workflows?

0tyb.jpg
 

Jobbs

Banned
Maybe you could take some lessons from Mega Man, the default weapon has no limited range but many enemies don't just stand there receiving damage: some of them have armor or shields (like the little helmet guys) that only remove when they are going to shoot, also other enemies fly and move in different patterns.

Yeah, absolutely. I don't know if you've seen much of my game, but I already have enemies that are very fast and evasive, they jump, flip, spin, shoot -- I just find that it's hard to keep coming up with fresh ideas.

https://youtu.be/ePE7v2JCEGU?t=803 Here's an example of some combat involving fast and tough enemies.
 
I'm finding it increasingly tough to design varied and challenging enemy encounters, because of the nature of all of the mobility and long range firepower of the character.

I had a thought -- what if I made the regular cannon have a shorter range, so it's sort of a hybrid between a gun and a melee ranged weapon. Special weapons would still go the full range, which would increase their value.

http://www.gfycat.com/DistinctFineDowitcher

I'm far from committing to this yet, especially since I haven't tested all the existing content this way yet, but something about it appeals to me because it would make balancing the game more interesting and combat more dynamic. The character is very mobile.

Thoughts?

That's an interesting idea, and it might work well, but the only thing I would say is that you've been playing your game as you develop it; you're inherently biased. Have you had a friend play test it yet?
 

Five

Banned
I'm finding it increasingly tough to design varied and challenging enemy encounters, because of the nature of all of the mobility and long range firepower of the character.

I think the best way to add combat variation is if the enemies have more than one attack to perform against you. That way there's more than one thing you have to look out for and circumnavigate as you come in for the attack. Consider this enemy that I have in my game who mixes up a projectile attack with a ground spike summon. You can't just stand in one place during your approach or you'll be impaled:

CigHHjG.gif
 
Status
Not open for further replies.
Top Bottom