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

Popstar

Member
Just checked and I see my CPU usage go down when enabling vsync.

This is running in a window sitting in a simple front end (>1000 fps without vsync) with OpenGL on i5-6600 & Radeon R9 285.

My Windows main loop is written for proper multithreading however. And this is very rare even amongst commercial games.

EDIT: took a look at the SFML source code and function it uses to set vsync (wglSwapIntervalEx) is the same one I use.

As a test, see what happens if you add a Sleep(0) call on every loop iteration.
 

Blizzard

Banned
Just checked and I see my CPU usage go down when enabling vsync.

This is running in a window sitting in a simple front end (>1000 fps without vsync) with OpenGL on i5-6600 & Radeon R9 285.

My Windows main loop is written for proper multithreading however. And this is very rare even amongst commercial games.

EDIT: took a look at the SFML source code and function it uses to set vsync (wglSwapIntervalEx) is the same one I use.

As a test, see what happens if you add a Sleep(0) call on every loop iteration.
Thanks for the reply! I'm not intentionally multithreading. I suspect this is specific to nVidia cards, and I've probably seen it on multiple driver versions. CPU usage:
multicore9kszu.png

With "Threaded optimization" forced to "Off" in the NVIDIA control panel, I see this:

Adding Sleep(0) seems to change nothing. If I increase the sleep time, I use less CPU. Basically, the less time I allow the vsync wait (which I assume is wglSwapIntervalEx) to run, the less CPU time I use. So I'm assuming it's a busy wait in the driver.

What I should do is try several random games and check if any of them use less than 25% or 50% CPU with vsync.
 

Popstar

Member
if there is an example app that comes with the SFML SDK that exhibits the behaviour tell me. I'll download the SDK on my machine and see if I have the same thing happening.
 

Blizzard

Banned
if there is an example app that comes with the SFML SDK that exhibits the behaviour tell me. I'll download the SDK on my machine and see if I have the same thing happening.
I didn't find a prebuilt SFML sample, but here's something anyone could test:

If I run The Talos Principle (64-bit if it matters) and select OpenGL rendering, my CPU usage goes from 13% to 50% or so if I toggle vsync while sitting in the graphics options menu.

I suspect it's specific to OpenGL on NVIDIA cards. If anyone has a GTX 770 let me know.

*edit* This from 2014 (http://stackoverflow.com/questions/21925313/100-cpu-utilization-when-using-vsync-opengl) refers me to this answer from 2009 (http://forum.openscenegraph.org/viewtopic.php?t=3653#18283), which still sounds accurate:
"If we didn't CPU spin in the driver and instead use the OS-provided "waitforvblank" function, when you drive OpenGL from two threads, you get an awful stutter & performance because one thread is inside the OS blocking the other one from progressing until the vblank happens.

Also note that this CPU consumption by the driver is very artificial and you will only notice on apps that do very little work per frame. It's not like we are hogging the CPU, we do yield to other threads in that spin loop. Bottom line: the CPU will only get used if it's idle."



Unfortunately, the result is that my core temperatures immediately jump up even though the CPU is otherwise idle. That's an unnecessary waste of energy and hardware and it makes me sad. I didn't want to add a DirectX rendering option but maybe I should look into it.
 

Mafusto

Member
This one is a general one, can be applied to any platformer. I called it "Nintendo tricks for 2d platformers" as many of them were first present in SMB, but they are really sort of a standard of the genre:
https://www.reddit.com/r/KitsuneWor...endo_tricks_for_2d_platformers_the_game_feel/

This one is more specific about my game, but the concepts behind can be made general too:
https://www.reddit.com/r/KitsuneWorldDevblog/comments/41il3k/movement_system/

Was very busy the last week so I did not have the time to thank you for your help. It was an interesting read. This weekend I can work a little bit on my game again, and I hope I can incorporate some stuff from your write-ups into my game.
 

ephemeral

Member
I didn´t like that in most platformers you have the ability to look up and down, but there aren´t usually reasons to do it. So I came up with this new mechanic, hidden blocks!

JH9zZQL.gif


You have to face them and look at them (up if they´re above you, or down if they´re below) to make them reveal their true self. They can hide simple solid blocks you can use to get to new places, powerups or many more things to come...They are barely visible, so if you don´t pay attention to your surroundings you could miss something important!

What do you guys think? Can you think more interesting ways to use the look up & down mechanics?

That's really innovative, how did you come up with that? :)
 

Blizzard

Banned
After a lot of experimentation and education, it seems my best bet is to call glFinish() at the start of my game loop. This means I can essentially guarantee the blocking happens there, and the game loop starts once swapping is complete rather than multiple frames being buffered up.

Then, before requesting a buffer swap at the end of the game loop, I attempt to calculate and sleep until near vsync. Even a plain sleep of 14ms saves a ton of CPU and lowers the CPU temperature by 8-10 degrees C.

Of course, sleeping accurately involves its own challenges. :p
 

ephemeral

Member
Advance finally got through greenlight! :D
...now I just need to finish it, work out how on earth to integrate it with steam and I'll finally have my first ever commercial game on steam :eek:

edit: On the topic of unity, what's everyone's approach to fullscreen?
I originally had it just set to fullscreen window in the settings but only recently realised that was a borderless fullscreen window rather than 'proper' fullscreen. I've set it to 'exclusive' and noticed it's a definite performance improvement. The issue is I know that some people prefer borderless (mostly youtubers, people doing capture or people with multiple monitors)
I thought one solution (for windows anyhoo) would be to set the build to exclusive as default then allow them to switch between borderless fullscreen and exclusive in options or with a hotkey (you have to use native windows code to do that though, it's worth noting) but this doesn't help when it comes to alt+enter, as that will go to whatever you built the exe with for it's fullscreen mode (in this case, exclusive)
There's also the question of which setting is best for mac users too (it's set to fullscreen window with taskbar and stuff but I noticed 'capture' as an option and wondered if people might prefer that due to performance?) end of edit


If you want to give it a very quick shot, this tutorial does a very simple runner for you to get to grips with: http://catlikecoding.com/unity/tutorials/runner/
I found the tutorials on there pretty handy in general when I was first getting to grips with unity :D

Grats on getting greenlit. It looks like a fun game :).
 

correojon

Member
No I make a 3d game but like I said everything is good to take, thank you.
Now that I thik about it there´s no reason why what I wrote there couldn´t be applied to 3D, so I´m happy if it can be of use to you :)

That's really innovative, how did you come up with that? :)

Thanks! I try to write down many things, even when I´m thinking about a problem like this (how can I use the Look mechanic for something?) and I try to do it like if I was explaining it to someone who had no idea about the issue. Doing this I´ve found that it forces you to go over (and discover!) every detail of that thing you´re talking about, raises new questions and also makes you see that maybe the issue wasn´t really where you thought it was. I also write down the possible solutions and argue why they would work or where they would fail. This way, for the look mechanic I came to the conclusion that the only way to make it really useful was for it to interct with the world somehow, in a way physical contact wouldn´t be able to, taking advantage of it´s strengths (longer range as you can look further away) and weaknesses (no real contact, the player must stand still to look around).
I didn´t make a dev document, so this is like making many smaller dev documents for specific issues with more detail.
 

ephemeral

Member
Now that I thik about it there´s no reason why what I wrote there couldn´t be applied to 3D, so I´m happy if it can be of use to you :)



Thanks! I try to write down many things, even when I´m thinking about a problem like this (how can I use the Look mechanic for something?) and I try to do it like if I was explaining it to someone who had no idea about the issue. Doing this I´ve found that it forces you to go over (and discover!) every detail of that thing you´re talking about, raises new questions and also makes you see that maybe the issue wasn´t really where you thought it was. I also write down the possible solutions and argue why they would work or where they would fail. This way, for the look mechanic I came to the conclusion that the only way to make it really useful was for it to interct with the world somehow, in a way physical contact wouldn´t be able to, taking advantage of it´s strengths (longer range as you can look further away) and weaknesses (no real contact, the player must stand still to look around).
I didn´t make a dev document, so this is like making many smaller dev documents for specific issues with more detail.

I've been trying to come up with some fun and unique gameplay mechanics myself and it's easier said than done. You have given me some perspective on how to best achieve this, thanks. I especially like the touch that you have to do it twice to make all of the platforms appear, that's ingenious. Have you thought about what kind of combat there will be in the game?

I write down all ideas as well, I have a couple of notebooks with ideas I come up whenever, most often when I'm trying to go to sleep and come up with someone new and interesting. It's hard to tell which ideas will work in practise so it's best to have some spare ones ;).
 

correojon

Member
I've been trying to come up with some fun and unique gameplay mechanics myself and it's easier said than done. You have given me some perspective on how to best achieve this, thanks. I especially like the touch that you have to do it twice to make all of the platforms appear, that's ingenious. Have you thought about what kind of combat there will be in the game?

I write down all ideas as well, I have a couple of notebooks with ideas I come up whenever, most often when I'm trying to go to sleep and come up with someone new and interesting. It's hard to tell which ideas will work in practise so it's best to have some spare ones ;).

Combat will be fairly simple, just jump on enemies like in most platfomers. However powerUps and bosses will add more depth and use more complex mechanics. I have already in mind some ideas to use the look mechanic with one boss, hope it turns out to be fun.

Oh and yeah, I couldn´t agree more: maybe something works in theory but until you try it you won´t really know if it´s works. For the hidden blocks I initially made it so they would only appear if the player placed them in the center of the view, but after testing it I saw that it wasn´t a good idea. So I changed it and now the triggering conditions are easier to get:
  • The player just has to face them horizontally, ie if the block is at the right the player must be looking right.
  • The player has to move the camera towards the block, ie, if the block is above you just have to move the camera upwards and put the block totally inside the view.

Having outside feedback is specially important, as you can be very happy with your cool new system and ignore all the flaws, while someone with more perspective can see things more objectively.
 

Minamu

Member
Advance finally got through greenlight! :D
...now I just need to finish it, work out how on earth to integrate it with steam and I'll finally have my first ever commercial game on steam :eek:

edit: On the topic of unity, what's everyone's approach to fullscreen?
I originally had it just set to fullscreen window in the settings but only recently realised that was a borderless fullscreen window rather than 'proper' fullscreen. I've set it to 'exclusive' and noticed it's a definite performance improvement. The issue is I know that some people prefer borderless (mostly youtubers, people doing capture or people with multiple monitors)
I thought one solution (for windows anyhoo) would be to set the build to exclusive as default then allow them to switch between borderless fullscreen and exclusive in options or with a hotkey (you have to use native windows code to do that though, it's worth noting) but this doesn't help when it comes to alt+enter, as that will go to whatever you built the exe with for it's fullscreen mode (in this case, exclusive)
There's also the question of which setting is best for mac users too (it's set to fullscreen window with taskbar and stuff but I noticed 'capture' as an option and wondered if people might prefer that due to performance?) end of edit


If you want to give it a very quick shot, this tutorial does a very simple runner for you to get to grips with: http://catlikecoding.com/unity/tutorials/runner/
I found the tutorials on there pretty handy in general when I was first getting to grips with unity :D
We're simply using the default resolution chooser that unity loads when you start the exe. Are you saying that "non-windowed" is not a proper fullscreen? One of laptops sure has performance drops in this fullscreen. Where do I change to this exclusive thing? :)
 

ephemeral

Member
Combat will be fairly simple, just jump on enemies like in most platfomers. However powerUps and bosses will add more depth and use more complex mechanics. I have already in mind some ideas to use the look mechanic with one boss, hope it turns out to be fun.

Oh and yeah, I couldn´t agree more: maybe something works in theory but until you try it you won´t really know if it´s works. For the hidden blocks I initially made it so they would only appear if the player placed them in the center of the view, but after testing it I saw that it wasn´t a good idea. So I changed it and now the triggering conditions are easier to get:
  • The player just has to face them horizontally, ie if the block is at the right the player must be looking right.
  • The player has to move the camera towards the block, ie, if the block is above you just have to move the camera upwards and put the block totally inside the view.

Having outside feedback is specially important, as you can be very happy with your cool new system and ignore all the flaws, while someone with more perspective can see things more objectively.

Your idea feels very fresh and at the same time it makes a lot of sense. I hope you will keep the subtle hints for the secret platforms - it's so tedious to wander around and check for secrets aimlessly. I can see this mechanic catching on.

I've planned to have a few pre-alpha testers early on in development to get some unbiased feedback. Still a year off but I can't wait to get some feedback on it :).
 
Sometimes I do feel like I'm probably asking very dumb questions here at times, but here goes... (it's a Unity 5.3.x question)

Would using enemy prefabs, and instantiating them based on the encounter list (which will be stored with the map itself), be a good way to handle getting enemies to play with when moving into a battle scene? (I think that way I think I only need to find a way to make the scripts know who to instantiate... don't really want to load every possible configuration in memory, no?)

If I didn't make it clear enough:
Each and every enemy has a prefab stored somewhere in the game assets
Upon an encounter (based on the encounter list stored with the map), load battle scene with relevant data and the enemies to be instantiated

Specifically, some way to make sure that the battle script can know exactly what to instantiate (for gameplay data) and position them correctly (visually, that is). Thinking about it made me thought that, well, having everything be pre-loaded seems to be bad form.

(Would it make sense for the encounter list to be actually just the enemy prefabs?)
 
Grats on getting greenlit. It looks like a fun game :).
Thankies :D

We're simply using the default resolution chooser that unity loads when you start the exe. Are you saying that "non-windowed" is not a proper fullscreen? One of laptops sure has performance drops in this fullscreen. Where do I change to this exclusive thing? :)
If you go into player options (Edit -> Project Settings -> Player) you'll find it in the standalone resolution and whatnot settings under 'D3D9 Fullscreen Mode' and 'D3D11 Fullscreen Mode'. They're likely set to 'fullscreen window' which means the 'fullscreen' you're doing right now is actually just a borderless window sized to fit your monitor.

Also, you can change 'Display Resolution dialogue' in there to "hidden by default" to make the resolution chooser only show up if the user is holding shift when they start the program :3
The native resolution display is pretty fugly and I really don't want people messing with the controls tab on there if I can help it, but if someone desperately needs to access it this option allows me the best of both worlds :p
 

ZServ

Member
Combat has undergone another major visual renovation in Project Babel. No longer are the still-images... still.

https://gfycat.com/WeirdSparklingBoar
Here's an example of the old setup!

https://gfycat.com/ParchedSpicyAkitainu
And one of the new setup!

Despite still being still-images, enemies are now MUCH more vibrant and lively. The slimes, like seen above, drain into their surroundings. You can now see the breath coming out of some enemies mouths, and a bunch of other small stuff that I think really adds to the player experience. Despite still being the same game, and despite the combat not changing mechanically at all, Babel is a lot more fun now.

As always, you guys are a constant source of inspiration. The tricks you use to make your games breath, the new mechanics you come up with (lookin' at you, camera up-and-down guy), just.. I'm really excited to be here and see what you make. As always, should someone want to critique my project, I'm all ears. Can't wait to see what you guys bring to the table the rest of the day, week, month, etc :D

Sometimes I do feel like I'm probably asking very dumb questions here at times, but here goes... (it's a Unity 5.3.x question)

Would using enemy prefabs, and instantiating them based on the encounter list (which will be stored with the map itself), be a good way to handle getting enemies to play with when moving into a battle scene? (I think that way I think I only need to find a way to make the scripts know who to instantiate... don't really want to load every possible configuration in memory, no?)

If I didn't make it clear enough:
Each and every enemy has a prefab stored somewhere in the game assets
Upon an encounter (based on the encounter list stored with the map), load battle scene with relevant data and the enemies to be instantiated

Specifically, some way to make sure that the battle script can know exactly what to instantiate (for gameplay data) and position them correctly (visually, that is). Thinking about it made me thought that, well, having everything be pre-loaded seems to be bad form.

(Would it make sense for the encounter list to be actually just the enemy prefabs?)

I don't use Unity, nor am I an expert at really anything, but.. If by prefabs you mean like.. layouts? That's fine. The way RPG Maker works is an encounter list of all the "troops," which are your various layouts and groupings of enemies. So, Slime*2, or Slime*1,Bat*2, or whatever the hell you decide to use. Then, for each map, you can choose which "troops" are applicable for random encounters.

So, you probably want something like an XML file with your encounter list (EVERYTHING), that labels them 001, 002, 003, etc., and has all the information that you need to instantiate the battle. Then, on the map level, whatever your random encounter system is should hook into an array tied to that map that has the possible "troops" as its individual bits.

How would you parse that? I have no idea, I'm pretty horrible at this "being smart" shit. Is this even what you're asking? Probably not.
 
Yup. You'll want a trailer video and 4+ screenshots for it though.
Also make sure your 'game cover' is awesome because that's the first thing people will see on the main greenlight front page: it's essentially the bait on your greenlight hook so you'll want something that makes people curious enough to click it :3

Awesome! thanks for clarifying !

One last question, which I think holds true:

Can I use my Steam Wallet to pay for the Greenlight? I have a few games I wouldn't mind trading in and getting some Steam Wallet credit for to go towards the Greenlight... just being budget conscious.



it's saturday! so where's everyone's screens? My favorite part of this thread is when I get to see any screenshot or dev art <3

I've redone my logo and decided to go with the name of the main character for the game. The logo uses the same colors as the main character just to keep it consistent, and is more simplified than the original one, ... thoughts?
 
I've redone my logo and decided to go with the name of the main character for the game. The logo uses the same colors as the main character just to keep it consistent, and is more simplified than the original one, ... thoughts?

I like this logo quite a bit. Color scheme and general silhouette is appealing.
 

Minamu

Member
Thankies :D


If you go into player options (Edit -> Project Settings -> Player) you'll find it in the standalone resolution and whatnot settings under 'D3D9 Fullscreen Mode' and 'D3D11 Fullscreen Mode'. They're likely set to 'fullscreen window' which means the 'fullscreen' you're doing right now is actually just a borderless window sized to fit your monitor.

Also, you can change 'Display Resolution dialogue' in there to "hidden by default" to make the resolution chooser only show up if the user is holding shift when they start the program :3
The native resolution display is pretty fugly and I really don't want people messing with the controls tab on there if I can help it, but if someone desperately needs to access it this option allows me the best of both worlds :p
Thanks, I found it :) Unfortunately, I got some really strange graphical artifacts on Unity's splash screen and in my main menu, with 10+ OnGUI related errors in the editor so I think I'm gonna skip this :/ Edit: I think it could be related to overscan on my TV, as I'm not using a traditional pc monitor here. The screen is acting as if I'm not actually using 1080p although I am, I recognise the artifacts anywhere. My GUI is partly obscured outside my TV screen so I think that confirms overscan :/
 
Okay so I'm having huge trouble getting my head around how shaders work with vector sprites in Game Maker:Studio. Normal image sprites I have no issue with, but I'm struggling to get any fragment shader stuff to work :/

Does anyone here have any experience with this or know of any good references I could take a look at for it? (Although I've looked around and can't seem to find anything to do with Game Maker shaders and vector sprites). Judging on the quality of work in here that I've seen whilst lurking I'm hopeful that one of you awesome people might know something :p
 

Minamu

Member
Incredibly juvenile but I pranked my team tonight by adding Justin Bieber's Sorry as the game's combat music :lol It obviously clashes with the game's mood and style as much as possible. Not sure what's worse, the prank or the fact that the team enjoyed it xD The point was to implement fading music functionality at key gameplay moments and I really needed an audioclip that stood out.
 

correojon

Member
it's saturday! so where's everyone's screens? My favorite part of this thread is when I get to see any screenshot or dev art <3

I've redone my logo and decided to go with the name of the main character for the game. The logo uses the same colors as the main character just to keep it consistent, and is more simplified than the original one, ... thoughts?

I like it more than the original, to be honest I didn´t like the original much with the blood and that, I thought the blood was making the game look more violent or horror-like than what it really is...but changing it to purple makes it more interesting and you get extra points for the reference to the main character´s colors ;)


A GIF showing some of the basic movement: run, jump, crouch and stomp, along with breakable blocks, moving platforms and the save statue:
YA38xvy.gif
 
Awesome! thanks for clarifying !

One last question, which I think holds true:

Can I use my Steam Wallet to pay for the Greenlight? I have a few games I wouldn't mind trading in and getting some Steam Wallet credit for to go towards the Greenlight... just being budget conscious.
I believe you can, yes :3

Thanks, I found it :) Unfortunately, I got some really strange graphical artifacts on Unity's splash screen and in my main menu, with 10+ OnGUI related errors in the editor so I think I'm gonna skip this :/ Edit: I think it could be related to overscan on my TV, as I'm not using a traditional pc monitor here. The screen is acting as if I'm not actually using 1080p although I am, I recognise the artifacts anywhere. My GUI is partly obscured outside my TV screen so I think that confirms overscan :/
Ouch, that sounds a bit odd. Not sure if it would make a difference but it might be worth fiddling with the 'default is native resolution' tickbox, otherwise the game will try to run at whatever default resolution you specified instead of what your monitor can handle :eek:
 
Awesome! thanks for clarifying !

I've redone my logo and decided to go with the name of the main character for the game. The logo uses the same colors as the main character just to keep it consistent, and is more simplified than the original one, ... thoughts?

Visually I think it looks great.

My one trouble is that with the name change it's much harder to know the logo stands for "W" and the game is named "Wotan."
 

Minamu

Member
I believe you can, yes :3


Ouch, that sounds a bit odd. Not sure if it would make a difference but it might be worth fiddling with the 'default is native resolution' tickbox, otherwise the game will try to run at whatever default resolution you specified instead of what your monitor can handle :eek:
I'll check it out next time I'm around my pc :) Do you know anything about Unity's deferred renderer? Worth using? I tried it and saw no difference in our game, except that some lights which should ignore certain layers, ignored my ignore settings :lol So I reverted back to forward rendering.
 
I believe you can, yes :3


awesome!

I like it more than the original, to be honest I didn´t like the original much with the blood and that, I thought the blood was making the game look more violent or horror-like than what it really is...but changing it to purple makes it more interesting and you get extra points for the reference to the main character´s colors ;)


A GIF showing some of the basic movement: run, jump, crouc

h and stomp, along with breakable blocks, moving platforms and the save statue:
YA38xvy.gif

yeah, the blood and knife were too much as some pointed out.

sweet! lovin ur game :) scratches that platforming itch properly :)

Visually I think it looks great.

My one trouble is that with the name change it's much harder to know the logo stands for "W" and the game is named "Wotan."

Yeah, I'm a little worried about that but I think I gotta roll with it. I'll see how I feel about the logo next week.
 

JeffG

Member
Sometimes I do feel like I'm probably asking very dumb questions here at times, but here goes... (it's a Unity 5.3.x question)

Would using enemy prefabs, and instantiating them based on the encounter list (which will be stored with the map itself), be a good way to handle getting enemies to play with when moving into a battle scene? (I think that way I think I only need to find a way to make the scripts know who to instantiate... don't really want to load every possible configuration in memory, no?)

If I didn't make it clear enough:
Each and every enemy has a prefab stored somewhere in the game assets
Upon an encounter (based on the encounter list stored with the map), load battle scene with relevant data and the enemies to be instantiated

Specifically, some way to make sure that the battle script can know exactly what to instantiate (for gameplay data) and position them correctly (visually, that is). Thinking about it made me thought that, well, having everything be pre-loaded seems to be bad form.

(Would it make sense for the encounter list to be actually just the enemy prefabs?)
Yes its a good way to do with it.
Put the enemy prefabs into a resource folder. That way you can use the Load Resource function

Have an empty gameobject and place it in the scene to use as a spawn point (or just calculate/hardcode it)
 

ephemeral

Member
Awesome! thanks for clarifying !

One last question, which I think holds true:

Can I use my Steam Wallet to pay for the Greenlight? I have a few games I wouldn't mind trading in and getting some Steam Wallet credit for to go towards the Greenlight... just being budget conscious.



it's saturday! so where's everyone's screens? My favorite part of this thread is when I get to see any screenshot or dev art <3

I've redone my logo and decided to go with the name of the main character for the game. The logo uses the same colors as the main character just to keep it consistent, and is more simplified than the original one, ... thoughts?
That's a really sweet logo. Liking the colors and the splinter.
 

missile

Member
Meanwhile:

I think I've finally surpassed gimp's color quantizer, did I? xD

0LuNyjM.png

original (24-bit)


fw9iyeq.png
vs.
IpOaYHr.png


left: missile's color quantizer vs. right: Gimp's one (ver. 2.8.10)
Palette: optimal 256 color palette (depending on the algorithm used)
Dithering: simple Bayer pattern

M2zfxoJ.png
vs.
CXw3AE6.png


The two images above show how uniform the colors are distributed. Gimp
compresses the colors in a non-uniform fashion leading to an increase in color
banding for some color transitions. This could be the result of a given metric
Gimp's quantizer may follow, but I don't think so (doesn't make sense given
how the colors are distributed in this case). I think it's the way Gimp's
color quantizer just works. Don't know what implementation is used here. I
also think Gimp's algorithm is flaws at times esp. when using dithering
(positioned), there are some wild pixels created which shouldn't be there
esp. around highlights.

2idcc3G.png
vs.
FfQcKwb.png

Same setup but without dithering. missile's vs. Gimp's


Can someone do me a favor and quantize the 24-bit image with Photoshop down
to 256 colors with and without using a Bayer (64, 32, or 16) dither pattern?
 
Can someone do me a favor and quantize the 24-bit image with Photoshop down
to 256 colors with and without using a Bayer (64, 32, or 16) dither pattern?

No completely sure if I've done this right but here you go (using Photoshop CC).

Quantized to 256 colours with dithering:
HymB9S4.png


Quantized to 256 colours without dithering:
GLgyF5Y.png


Looks to me like you've done a great job because missile's looks just like Photoshop's :p
 
Yes its a good way to do with it.
Put the enemy prefabs into a resource folder. That way you can use the Load Resource function

Have an empty gameobject and place it in the scene to use as a spawn point (or just calculate/hardcode it)

Hmm, speaking of layout... maybe I should add a bit more information so that it goes something like this:

Each map contains a collection of possible encounters, of which they'll have enemy (which will actually just point to a prefab) and placement data.

Now to think about how to integrate the placement data well... maybe enemy prefabs have a set of X and Y coordinates which need to be filled in on use?
 

LordRaptor

Member
I'll check it out next time I'm around my pc :) Do you know anything about Unity's deferred renderer?

Basically, its to do with lighting; here's an article about it, and there's also an in-depth breakdown in the Unity Manual.

Basically scenes with few lights are more performant with forward, multiple lights or where you need per pixel lighting are more performant with deferred.
Some of the 'cons' against deferred aren't really relevant to desktop builds, as basically any pc hardware that can run games has hardware that supports deferred, and anti-aliasing is increasingly a post-processing effect anyway.

Gimp
compresses the colors in a non-uniform fashion leading to an increase in color
banding for some color transitions. This could be the result of a given metric
Gimp's quantizer may follow, but I don't think so (doesn't make sense given
how the colors are distributed in this case). I think it's the way Gimp's
color quantizer just works. Don't know what implementation is used here. I
also think Gimp's algorithm is flaws at times esp. when using dithering
(positioned), there are some wild pixels created which shouldn't be there
esp. around highlights.

IIRC, Gimp has a sort of shitty quantizer because Adobe have patented a better one (they call it q encoding)
 

xptoxyz

Member
I know a lot of you do your own art, but does anyone has any suggestions on finding people (contract/freelance) you need from other disciplines? Particularly artists?

Also any study type thing that can help confirm/correct notion of what rates should be? Or do you just compare a bunch?

edit: Also if any 2D artist/illustrator here happens to be looking for that type of work, maybe PM me a portfolio/examples of stuff
 
First - hey everyone - excellent shit going down. Been busy AF lately.

Second - I am about to break my machine with Windows 10 now that I have waited long enough for official SDK support. Wish me luck.
 
Second - I am about to break my machine with Windows 10 now that I have waited long enough for official SDK support. Wish me luck.

I just upgraded my gaming (and ex-Android-dev) PC. I haven't tested Unity, but at least Steam works and nothing seemed to break... yet. But holy shit the amount of hints and other popups I had to disable from a dozen different settings. Can't believe Windows is still this irritating and unintuitive.
 

JeffG

Member
Hmm, speaking of layout... maybe I should add a bit more information so that it goes something like this:

Each map contains a collection of possible encounters, of which they'll have enemy (which will actually just point to a prefab) and placement data.

Now to think about how to integrate the placement data well... maybe enemy prefabs have a set of X and Y coordinates which need to be filled in on use?
Same Scene or a new scene?

I am trying to picture what it is that you are typing.

Do you have a scene that is a map that you navigate?

As you navigate the map and engage in an encounter...do you load a new scene for the battle?
 

Aureon

Please do not let me serve on a jury. I am actually a crazy person.
UE4 materials & lighting are amazing.
Some of my tests:
Flat plane texture:
f5f1150b76.jpg

per-brick geometry, practically flat textures and <50poly per brick:
fbc6c0bd49.jpg

.gif crushing blacks like no tomorrow:
PlushRewardingArmadillo-size_restricted.gif



I didn´t like that in most platformers you have the ability to look up and down, but there aren´t usually reasons to do it. So I came up with this new mechanic, hidden blocks!

JH9zZQL.gif


You have to face them and look at them (up if they´re above you, or down if they´re below) to make them reveal their true self. They can hide simple solid blocks you can use to get to new places, powerups or many more things to come...They are barely visible, so if you don´t pay attention to your surroundings you could miss something important!

What do you guys think? Can you think more interesting ways to use the look up & down mechanics?

Barely visible sounds good!
That may end up with most players just looking-up every single block, though.
 
Same Scene or a new scene?

I am trying to picture what it is that you are typing.

Do you have a scene that is a map that you navigate?

As you navigate the map and engage in an encounter...do you load a new scene for the battle?

Sorry for having things not so clear! (Still working on the field menu kinks... currently implementing the config menu and just finalized the save menu's (and by extension load) layout)

OK, with the way things are set up:

Each and every map (basically, world map, town area maps, dungeon maps, etc...) has a GameObject holding the possible encounters. This is being planed to be basically a bunch of Encounter objects (which will end up being prefabs stored on-disk and just "dropped" in). If this object does not exist, it is assumed that it is an encounter-free zone.

Each Encounter object will then contain the "dropped-in" Enemy prefabs, which contain the relevant enemy data, including the sprite and stats... and the Encounter object will also happen to modify the enemies' positioning (which are left as zeroes in the actual Enemy prefab.) (How to make the Encounter "holder" flexible...)

On an encounter, the game unloads current level, while keeping the player data in, and starts loading the battle scene (has relevant scripts and UI). (This might be the hard part - how would one make sure that the enemies are in the right place after loading and the battle script notified of their existence? I guess I could use the same thing I do with the player data I am already doing...)

Then again, maybe I'm just needing a bit of a refresher on exactly what to use again and what I'm thinking of isn't optimal. Though having the enemies be prefabs sound right, the encounter lists, not so much.
 
I just upgraded my gaming (and ex-Android-dev) PC. I haven't tested Unity, but at least Steam works and nothing seemed to break... yet. But holy shit the amount of hints and other popups I had to disable from a dozen different settings. Can't believe Windows is still this irritating and unintuitive.
Aye. I have 10 on a laptop and shit is just bonkers with how much there is to disable to be not so damn intrusive.

All of my tools and SDK stuff is out of beta on win 10 so I'm crossing my fingers. So long as Unity works and I can build to PS4 I'm good.
 

JeffG

Member
Sorry for having things not so clear! (Still working on the field menu kinks... currently implementing the config menu and just finalized the save menu's (and by extension load) layout)

OK, with the way things are set up:

Each and every map (basically, world map, town area maps, dungeon maps, etc...) has a GameObject holding the possible encounters. This is being planed to be basically a bunch of Encounter objects (which will end up being prefabs stored on-disk and just "dropped" in). If this object does not exist, it is assumed that it is an encounter-free zone.

Each Encounter object will then contain the "dropped-in" Enemy prefabs, which contain the relevant enemy data, including the sprite and stats... and the Encounter object will also happen to modify the enemies' positioning (which are left as zeroes in the actual Enemy prefab.) (How to make the Encounter "holder" flexible...)

On an encounter, the game unloads current level, while keeping the player data in, and starts loading the battle scene (has relevant scripts and UI). (This might be the hard part - how would one make sure that the enemies are in the right place after loading and the battle script notified of their existence? I guess I could use the same thing I do with the player data I am already doing...)

Then again, maybe I'm just needing a bit of a refresher on exactly what to use again and what I'm thinking of isn't optimal. Though having the enemies be prefabs sound right, the encounter lists, not so much.

I would do something like this

(I assume you have a singleton object that is set to not be destroyed. This class/object should do all your level loading)

Code:
Have you encounter defined

public class Encounter : MonoBehaviour
{

public string[] enemiesPrefabPathAndFileName; 
public string battleScene;


private GameManager _gameManager = null;

void Start()
{
	_gameManager = GameObject.Find("GameManager").GetComponent<GameManager>(); // Better ways to do this

}
.
.
.


public void DoBattle()
{
	_gameManager.StartUpBattle(this);
}


On your game manager side.

private Encounter _currentBattleDetails = null;
private bool loading = false;

public void StartUpBattle(Encounter newBattleDetails)
{
	loading = true;
	_currentBattleDetails  = newBattleDetails;

	SceneManager.LoadScene(_currentBattleDetails.battleScene); // I Use the DPLoadScreen Asset here
	// Now wait till the level is loaded and place all the objects
}

public void OnLevelWasLoaded()
{
	
	for(int i=0;_currentBattleDetails.enemiesPrefabPathAndFileName.Length;i++)
	{
		GameObject dude = Resources.Load<GameObject>(_currentBattleDetails.enemiesPrefabPathAndFileName[I]);

		PlaceObject(dude);

	}

	loading = false;
}

public void PlaceObject(GameObject thing)
{
	// place object here

	// do a lookup for an empty game object and use its position to place thing.

	// or

	// Random pick x,z and do a raycast straight down to find terrain

	// or something else
}
 

Minamu

Member
Basically, its to do with lighting; here's an article about it, and there's also an in-depth breakdown in the Unity Manual.

Basically scenes with few lights are more performant with forward, multiple lights or where you need per pixel lighting are more performant with deferred.
Some of the 'cons' against deferred aren't really relevant to desktop builds, as basically any pc hardware that can run games has hardware that supports deferred, and anti-aliasing is increasingly a post-processing effect
I see, thanks :) I think I'll stick to forward based on that article. I don't have that many lights, maybe a dozen or two. They're all set to important and are dynamic though. There's been no obvious light related performance drops yet afaik.
 

missile

Member
No completely sure if I've done this right but here you go (using Photoshop CC).

Quantized to 256 colours with dithering:
HymB9S4.png


Quantized to 256 colours without dithering:
GLgyF5Y.png


Looks to me like you've done a great job because missile's looks just like Photoshop's :p
Hey man, thx for these pictures! :+

Almost on-par with Photoshop regarding the non-dithered version. Their colors
are a tiny bit better distributed. Well, I've only applied some quick
optimation to my algorithm ever since it was ready to run for the first time.
I'm pretty sure I can pull some more optimization. It seems they use a better
weighting strategy, which is completely plausible given that my one isn't the
most advanced one yet easy to compute (least-squares).

However, regarding their dithered version, it's better than my one. (If you
can even see the difference. xD) But that's for a reason, since I know where
I am losing ground here.

Can you tell me what option you have selected for the dither type? Because the
pattern used is not a Bayer one, it's more of a random type. Is there a name
describing the pattern/method used? Their pattern looks interesting. I'm
cooking up a similar one, which is half random and half a pattern (for
efficiency reason), which should result in some pretty awesome results
visually and should be fast to compute as well as usable for realtime 3d
graphics, which is a bit tricky considering the pattern is of random nature.
I am interested if Photoshop's pattern here can be used in animations without
the pattern starting to flicker due to it's random nature. Anyhow, I will need
a little more time to develop that one.


... IIRC, Gimp has a sort of shitty quantizer because Adobe have patented a better one (they call it q encoding)
Ohh, I have to agree with you given that Photoshop really delivers some very
good results in comparison. Perhaps I should spent my one to the folks of
Gimp. But who does color quantization, retro graphics etc. with Gimp, anyways?
There are better tools, I guess.
 
I like it more than the original, to be honest I didn´t like the original much with the blood and that, I thought the blood was making the game look more violent or horror-like than what it really is...but changing it to purple makes it more interesting and you get extra points for the reference to the main character´s colors ;)


A GIF showing some of the basic movement: run, jump, crouch and stomp, along with breakable blocks, moving platforms and the save statue:
YA38xvy.gif

The background looks nice, but the sprite doesn't seem to match, but that's a small thing as long as your final product plays well I think most won't care.
 

correojon

Member
The background looks nice, but the sprite doesn't seem to match, but that's a small thing as long as your final product plays well I think most won't care.
You´re right, I intend to redo the sprite later in development, once I´ve become better at pixel art. It looked awesome to me when I did it, but as time goes by I find more and more mistakes in it. Thanks for pointing it out ;)


UE4 materials & lighting are amazing.
Some of my tests:
The flat plane looks great, didi it take you much to tweak the settings to get that effect? I couldn´t ever wrap my head around 3D materials and lighting, so I always ended aimlesly changing properties until I gave up :(


Barely visible sounds good!
That may end up with most players just looking-up every single block, though.

Yeah that has me worried. I replayed Sonic (Mater System version) in the last few days, and even though this game uses the look mechanics somewhat extensively to hide secrets, in the end I found myself just stopping and looking down before every bottomless pit, which became pretty boring midgame. I intend to make the blocks "obvious" when they are mandatory, for example, blocking the player in a pit so the only way out will be up; finding them in that situation will be very straightforward. For every other instance, I want to use geometry and decorations to hint at their location, like putting a single flower in a solitary block and the hidden block a bit above it offscreen. Things like that, so there won´t be necessary to stop and look around at every step, but paying attention to small details will pay off.

I´ve thought of another way to use these blocks, which is really just the opposite: instead of making them spawn things, make them destroy other blocks, spikes or whatever. This will allow me to make hidden passages inside walls and other cool things :)
 
Hey man, thx for these pictures! :+
No problem :)
Can you tell me what option you have selected for the dither type? Because the
pattern used is not a Bayer one, it's more of a random type. Is there a name
describing the pattern/method used?
So it was literally just called "Pattern" which doesn't really help you much with figuring out exactly what they use I suppose :/
fc697e2442.png

You can see the other two types in that image above if that helps you decipher the difference at all :p
 

KOCMOHABT

Member
First part of the motorcycle is ingame.

It went from concept:
AAS10Lv.png


to the model (without finished driver and gunner obviously :D)
3JtU2UW.png


and as a bonus it already has hyper-unrealistic movement! YES!
n7sf3JM.gif


Motorcycles are not only cool, but also fast, and they can be used to drive in front of the crowd to lay down grenades/mines as well as pick up stuff that's left behind from the main battle (loot).

(As always, slightly more info here: https://kosmonautblog.wordpress.com/)
 
Status
Not open for further replies.
Top Bottom