• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

Nuclear Throne art style?

R

RocketTo5

Guest
This may be a dumb question, but when I use draw functions, or draw particles on surfaces, etc., the effects are not in the 16 bit style I am trying to go for, and I want to know if there is a setting to change this. Like for example, in the old wolfenstein games, or any old fps games, if you are looking at an enemy from far away they probably appear to be like 5 pixels big, and as you get closer the quality improves. In my game, I used one of the explosion particle effects that look really nice, but it just does not quite fit the feel of the 16 bit art style of my game.

As you can see in the first game, the snow/ash type particles are more realistic and have higher quality than opposed to the second screenshot (nuclear throne) where each of the effects are consistent in the amount of pixels, even though some of the guns are slightly lopsided. Sorry for my bad explanation :D

So how can I get my game to look like the second screenshot?


 
Create custom sprites that are 'blocky' in that 16 bit style and use those custom sprites for the particles, instead of the inbuilt images.

Code:
part_type_sprite(ind, sprite, animate, stretch, random);
 
R

RocketTo5

Guest
Create custom sprites that are 'blocky' in that 16 bit style and use those custom sprites for the particles, instead of the inbuilt images.

Code:
part_type_sprite(ind, sprite, animate, stretch, random);
That is not really what I am looking for, because even if I rotate my gun, it does not get that 'blocky' look like you see with the crossbow the player is holding in the screenshot.
 
That is from screen scaling. And probably some more advanced filtering with shaders\surfaces maybe, but it all depends. Oh, also, the most basic step is to turn off Interpolate colours between pixels (you find this in the Options >> Windows >> Graphics area). Turning off interpolation makes it so each pixel stays as it's solid block, rather than trying to blend with the pixels surrounding it (the blending is good for high quality, non-pixel art games, but -terrible- for pixel art games).
 
R

RocketTo5

Guest
That is from screen scaling. And probably some more advanced filtering with shaders\surfaces maybe, but it all depends. Oh, also, the most basic step is to turn off Interpolate colours between pixels (you find this in the Options >> Windows >> Graphics area). Turning off interpolation makes it so each pixel stays as it's solid block, rather than trying to blend with the pixels surrounding it (the blending is good for high quality, non-pixel art games, but -terrible- for pixel art games).
Ok thanks, I will have to so some research on filtering
 
D

Danei

Guest
It's also possible that they actually drew different sprites for the guns pointing different directions. It seems like a pretty hard problem to rotate a sprite programmatically while keeping your pixels oriented properly and not have it look weird and janky.
 
N

NeZvers

Guest
@Danei, I suppose it is possible if your application surface is full HD but game resolution is for pixel art game.
If I remember right they for sure don’t use different sprites.
 

IGameArt

Member
Change the resolution of the application surface to whatever your view size is using the following code:
Code:
surface_resize(application_surface,camera_get_view_width(0),camera_get_view_height(0));
Give that a shot and see what happens.
 

NightFrost

Member
Seems Nuclear Throne simply draws small and scales up. The actual game area in your screenshot is 960x720, but each apparent pixel is 3x3 actual pixels, meaning the app surface is 320x240 which has been scaled up by factor of three for 720p screen. Now each pixel drawn will remain one pixel and aligned with the rest, and cannot rotate as it is just one pixel when drawn. To achieve the same with your snow particles, always draw them at your simulated pixel size (currently 4x4 in your screenshot I think) and do not rotate them, because single pixels cannot rotate. Their motion cannot be helped, particle effects work at actual resolution and have no tools to align their movement and positions to a given grid. Alternative would be to create a snow controller object that tracks individual flakes and enforces grid positioning during draw.
 
D

Danei

Guest
@Danei, I suppose it is possible if your application surface is full HD but game resolution is for pixel art game.
If I remember right they for sure don’t use different sprites.
Well, maybe so. But if you just stick one of the sprites from Nuclear Throne in a project, scale the view (but not the app surface), and rotate the sprite around with image_angle, it really doesn't look good at most angles, especially while it's moving; the pixels shift around in erratic ways as the angle changes, with some colors vanishing entirely at times, and with the apparent size/mass of the object fluctuating, and giving the sprite an overall amorphous and bubbly look (I tried this with the crossbow). Maybe there's a way to design around that, or shader stuff that can make it less noticeable. Or locking it to 16 equidistant angles might help too.
 
N

NeZvers

Guest
I’m out of my country so I can’t confirm anything but if you follow to pixelatedpope’s tutorial about scaling and have enabled sub pixels. You should be enable to get same effect as terraria’s tools and weapons. Which is in fact game resolution like 480x270 full screen with application_surface 1920x1080
 
Top