Alright, I've had a heck of a time getting something that should be simple, work.
So, for the longest time I was using a fixed resolution "system" in myt game, where it would always run @ 768 x 432 (it seemed to scale well into 16:9 resolutions). Recently I've been toying around with a dynamic system (and I'm not even sure if I'm going to keep it, as it's caused so many issues for me). Where the game will scale to 4:3, 16:9 or 16:10 and effectively switch resolutions based on the resolution of the monitor it's running on.
Seems simple enough, right? ...Right? I guess not because when doing so I would get graphical glithces and eventually (after fixing those) I had seams in my tiles when in motion or when the game was scrolling from left to right or right to left. Obviously that couldn't stand so after doing some research and trying to understand this article:
https://www.yoyogames.com/tech_blog/8
I finally asked around and eventually found a way to fix the seams, but not for all of the tiles. I'm having an issue with a piece that is not the same size as the other tiles, basically it's taller and wider. I'm just not even sure what to do. I wasn't aware that managing tiles was such a hassle. The tileset I am using is shown at the bottom and after finding out what to do I can get the five tiles that are stacked on top of each other and the one to the left to work just fine, but when imported into gamemaker I have to tell it exactly where the tiles are and sometimes they do not line up right. I have no idea how to manage the tiles to the right either. I guess I'm just asking for help or advice, does anyone have a system set up for nightmares like this? If each and every tile I had was the same size and shape (like 32x32) I could manage, but not all of the ones I come across are.
Do you think I should seperate each one so they are all the same size and shape? The ones that aren't just cube shaped I mean?
I don't know how to put pictures in this post so I uploaded them here:
http://opengameart.org/content/aspect-ratio-visual-discusion-aids
*Edit apparently their is an upload files button at the bottom of the page... I will probably do that next time. Sorry >.>
I have never actually implemented a system like this, but I have done a lot of thinking about it. To do this right you need to overcome the aspect ratio problem first. You mentioned three different aspect ratios in your post.
*4:3
*16:9
*16:10
I do not know any common screen sizes with a 16:10 ratio so I will ignore it for most of this post, but you can do what I am going to show you once you find one you want to target.
Please look at this picture:
[AspectDemo.png]
The red is 4:3.
The brown is also 4:3, but scaled to show that it does not line up with 16:9 or 16:10.
The brown and green portion together are 16:9.
The blue portion on the bottom is 16:10.
There is no way to scale your game and make it fit perfectly on all three resolutions. To make that point visually I made another picture with the help of whatran ( available at: http://opengameart.org/content/frogatto-friends-npc-pack ).
[ScaleDemo.png]
In the picture I pretended to upscale the screen from a 4:3 to a larger 16:9 resloution. Here are the options I took:
*Scale uniformly to fit the height (3x3, in this case the magenta parts are the part of the screen left uncovered.)
*Scale both the width and height to fit (4x3, this will distort your image)
*Scale uniformly to fit the width (4x4, in this case part of the image goes off the top and bottom of the screen.)
There are a few other ways to scale it, but by just scaleing it you can not make the image fit perfectly on different aspect ratios without distorting the image. The trick is to scale your native resolution as close as you can get to the target resolution without going over (preferably with an integer 2, 3, etc.) and then add stuff where you would have had gaps (The magenta in the 3x3 example).
--------------------------------------------------
So now feels like a good time to mention this, but if you are going to put this much effort into your display system you might want to consider giving the player some control over things like windowed/fullscreen, the aspect ratio, and what you are doing with extra space.
--------------------------------------------------
Okay, now choosing a native resolution... I do not know how to give a tutorial on this so much, but here is a walk through of my process.
Lets say you want to target the following three displays:
*720p (1280x720 16:9)
*1080p (1920x1080 16:9)
*VGA (640x480 4:3)
Most of my example target displays are 16:9 ratios so I am going to target that specifically. To do this we want to find our scales largest common denominator. So some math here:
1280/16=80
720/9=80
So 1280x720 is equivalent to 80*(16:9)
Doing the same for 1080p (you only need to check the X or Y, by the way)
1920/16=120
1080/9=120
So 720p is 80x larger than 16:9 and 1080p is 120x larger than 16:9. So what is the largest multiplier that goes evenly into both?
40
40x2=80 and 40x3=120. So, if we had a native resolution 40x 16:9 we could scales it's x and y by 2 to get 720p or 3 to get 1080p. That resolution is 640x360
16x40=640
9x40=360
An added bonus of 640x360 is that it is smaller than VGA 640x480 giving us an extra 120 pixels on the height to do something with. The disadvantage for you is that it is a bit smaller than your 768x432 (which is the 48x 16:9 ratio by the way), but it should scale more efficiently.
==================================================
Just a note it would have been helpful if you uploaded a screenshot of the seams in action, but I will try my best on that.
The tutorial you linked makes Gamemaker sound like a 2.5D game engine. Basicly they make 2D games with 3D methods (like textures). The problem they are talking about is that when you change the scale of your tiles and sprites Gamemaker basicly guesses where your tile ends on the tile sheet. When the guess is to far out it creates seams. So your job is to make the tiles bigger than you really want them (by drawing on every side you do not want a seam) so that when Gamemaker draws more than you told it to there is stuff for it to put there that will not distract the player. All of your pieces with transparency or detailed tileing paterns will make this hard.
Anyway thanks for your interest in making games more accessable and good luck.
Thank you for the very detailed reply.
Alright, your resolution reply makes sense... and it's giving me a headache. Honestly I'm very much considering going back to a fixed resolution. I mean, it's literally just me making this game. It's a lot of work to get things like this to work (and even with your explanation I'm not sure how to give the player a menu to select resolutions and to just make it all work). It's a nightmare, as I said... I don't want it to be, I want to try my best with my game, but sometimes you just have to give up on features and move on.
Am I wrong to do this? I've seen games on Steam that run well and are fun and lack resolution options, if you look them up in say PCgamingwiki it will warn you that they do not have border less windowed mode, it's a shame but I don't think it subtracts much from the experience.
Sorry if this reply seems more like a rant, I just want me game to be fun and look professional. I was actually starting to like the fixed resolution (because not only did it make things easier), but I was going to use it to my advantage and have it tie into the games story (or theme). It's about a game character being stuck in their cartridge in an abandoned game console, it could explain why the resolution is so low and fixed.
It would be one thing if I had another programmer on my side to ease the load, but when it's just me researching how to fix something like this can eat up a lot of my time, eventually this game has to release. It can't just be in development forever.
Onto the tiles.
Are you saying my tiles are too detailed? They seemed overly basic to me, it actually had me worried...
I understand the issue there a bit better, but I have no clue how to make a tile sheet that just fits properly. If it was just small tiles it would work, I'm actually considering cutting up the larger tiles into smaller ones so I can make a perfectly even picture and then I can paint on the sides and then I can easily tell Gamemaker where each tile is (you have to tell it what size they are and where they are in this grid like system that really needs to be updated) if you fail this, then when you go to select a tile it will select only half it for example or only some.
But, why will transparency make it difficult?
Quote:TylerAW
--------------------------------------------------
Sorry if this reply seems more like a rant, I just want me game to be fun and look professional. I was actually starting to like the fixed resolution (because not only did it make things easier), but I was going to use it to my advantage and have it tie into the games story (or theme). It's about a game character being stuck in their cartridge in an abandoned game console, it could explain why the resolution is so low and fixed.
It would be one thing if I had another programmer on my side to ease the load, but when it's just me researching how to fix something like this can eat up a lot of my time, eventually this game has to release. It can't just be in development forever.
--------------------------------------------------
This is my favorite part of your post.
As a game developer it is your job to make a game. It does not matter if you get all of the cool features implemented if you fail to make a game. The fact that you are coming up with ways of turning limitations into features is cool, but as a reminder most games ship with a pretty good amount of "just deal with it". What I am saying is I like the attitude you have toward this and the game idea you presented, but do not feel like there is some metric made by man that you will have to give an account for your every short coming of.
==================================================
This section has more implementation details in case you decide to do something like this now or in the future. Feel free to skip. This is closer to a game engine issue than a game dev one.
The basic idea is that you want to have a text file stored some where easy to reach that contains your display settings in plain text. When your game loads, it loads this file before it launches it's graphic user interface ("GUI") and tells your game how to draw it's GUI. This file needs to be user editable incase it gets set to something that makes it impossible to play the game. That said this file is a potential hacking risk, so becareful with all your code that handles it.
You can then create graphical menus to edit this file (if you want). I have seen these run as "stand alone" applications, "boot loaders" (the config menu launches and once your done it launches the game), and as a "in game option menu". That last one there can be really difficult by the way and is usually limited to just one menu that a lot of the time requires restarting the game (hopefully gracefully) if changed.
There are of course other options, but they have draw backs. Here are a few of them just for completion's sake. You could:
*When the game first loads ask the operating system for display details, save these as variables (use defaults if this fails!), and then launch the game.
*Load up in full screen mode save the system settings some where. Change the settings to whatever resolution you hapen to be using and then change it back before you close with your backup copy.
==================================================
No, I am not saying your tiles are too detailed. What I was talking about was that some tiles are designed to be repeated over and over again, with out looking like you put the same 32^2 tile 5+ times in a row. The long tile you have there that kind of looks like candy slices in chocolate is probably one of these. The problem with it in this context is that if you did not place these perfectly one after another, but instead got them kinda close with a laizy brown fill between them it would create a pattern and destroy the effect.
Do not worry about your assets looking simplistic. It matters much more what you do with them. Take for example Tetris, Minecraft, or Angry Birds. All of these games got really successful even with basic looking art. I would also like to mention Nintendo, but that is probably a bad role model for game design.
If you do not like how Gamemaker handles tiles you might want to look into how unity is doing things. It is a lot less efficient but a lot higher level too. That said switching game engines mid project can be a death trap for games, so you should probably wait for the next game before making the jump if you like it more.
Transparency (either legit or fill with universal background color) changes the perceived shape of the object so weird things happen when you try to fill the seams on a side with transparency. Compare these sample scenes in the picture below. The one on the left is made with your tiles. The ones on the right have 5px of padding the same way that tuttorial said it should be done and all of the objects 10px appart in a hopefully unrealisticlly exaggerated demonstration of the problem.
I guess I just feel pressured to make the best product I can and I haven't even gotten real feedback on the game yet.
Maybe I'll check out Unity in time, but not for this project as you said, it would kill it.
I do have a few tricks up my sleeves for using this basic tileset to seem a bit more interesting. To use them to their fullest.
Just for curiosity's sake,what do they do with tiles in Unity? If I switch back to the fixed resolution, I feel like it works, but then I also don't have to fix my tiles and thus I'd worry I wasn't learning enough for my future as a game developer.
I just feel very stressed out about this whole thing. Is that normal? I know that is more of a personal question, but I am tired. Been working too much on this game.
Edit:
I found a compromise that will work, but I wanted to know someones opinion first. I figured I could give the player the choice on if the game should maintain aspect ratio or if it should stretch to the screens resolution fully. It looks pretty decent on my 1920 x 1200 24 inch monitor. I'm just so new to game making in general, is "just deal with it" really that common? I don't think it's too bad of a compromise.
Supporting multiple resolutions is a difficult and frustrating thing to do, so what you are feeling is normal. :)
It is probably best to start a project with a range of devices you want to support - rather than 'support everything' - you simply can't do that with most games because resolutions can get tiny - just think smart watches etc.
I think the minimum you should consider supporting is 480x320 (or 320x480), because thiis is the iphone 3 resolution, and beyond this many other mobile phone browsers use this resolution and upscale the pixels.
i.e. even phones that have a HUGE resolution will not show this in the browser.
So here are some ideas. (Below: just replace 480x320 with 320x480 if you are using portrait vs landscape)
1) Easies: Design for 480x320, and then use scaling.
2) use a viewport so you can 'see more or less' of the game depending on resolution. (e.g. think isometric games - big resolution means you can see more of map etc.
3) use a combination of the above, i.e resize viewport within a supported range, then scale if it is outside this range.
4) design resizable outter areas. i.e inner game area is designed to fit into 480x320 - Have outter edges that fill available space so that the inside game area is always centered. resizable things to put on outter edges might include: Advertising, Help/Hints, Chat zone, Scoreboards, previous scores etc.
Good luck
I am so confused... I just reloaded all of the code I had and now it all works... it all works perfectly! I didn't change anything! Is Gamemaker so messed up that you must cleanup the compile registry every time you use it or you get broken code that is fixed later?! Like... that's a big flaw!
I don't feel like supporting phones right now. I don't think it's right that we must cater to iphones simply because everyone has one.
I don't use gamemaker - but happy to hear that it is all working. :)
btw - if you are referring to my post - android phones do a similar thing. i.e the browser 'resolution' is much smaller than the actual resolution of the phone.
@TylerAW:
I do not use Unity. Last I checked (Unity 4, 2D tutorials) though, Unity uses the same technology (2.5D texels) except instead of giving you access to the old low level like techniques it has you use whole pictures placed in 3D space. You can easily create layered depth effects, but it basicly throws tiles out the window unless you want to reimplement what you are doing now in Gamemaker. It does support animated spritesheets though. Regarding learning, I think you will learn a lot just by getting one done. Once the game is done you can come back and try it again if it does not work out now. As the guy who knows a lot about games but still has not finished one, I think the grass looks greener on the other side (;_;). That said avoid all extremes. (To clarify my experience I have been studing how to make games since "Super Smash Bros. Brawl" came out and have never finished a game. Lately I have discovered I know more than enough to do the job, but it was more of an attitude problem stopping me. Lately I have had a really full schedule and just have not had the time, but I plan to make one when my schedule clears up more.)
Quote:TylerAW
----------------------------------------
"I just feel very stressed out about this whole thing. Is that normal? I know that is more of a personal question, but I am tired. Been working too much on this game."
----------------------------------------
That sounds like "crunch time" and yeah thats normal.
Remeber when I said you resolution (768x432) was "the 48x 16:9 ratio by the way"? The cool thing about that resolution is that it is a 16:9 ratio, as such it should scale okay on 16:9 screens. Your screen 1920x1200 is a 16:10 ratio. So, for every 16 pixels across it is one pixel taller. Which is usually not a big deal.
Though not a technical term "Just deal with it." is really common. When you make games there are limitaions you have to take into account. The big ones are:
*Your time
*Your budget
*Your skills
*Your values
These set the limits on what kind of game you can make. (Interestingly these are all kind of invisble wall properties that you can not really be sure of until they are tested >.>) Since there are limits you have to make choices, for example the resolution thing. At the start you did not have the skills to implement a scaleing solution and get the game to look the way you wanted. So your choices where:
*Spend my time to figure out how to get it to work.
*Spend my "money" to get someone else to get it to work.
*Drop the feature.
As these limits get closer and closer you have to make your final answer on more and more things. With that in mind, you have to choose what you need and what you can live with out.
* Is it better to fix this bug or add this mechanic?
* How important is this scene to the story?
* Do I really need voice overs?
Now some of your choices have a huge impact on other choices. For example when you make a 3D game it is relativily easy to implement multiple screen resolution support, but if you decided to target the PS1 could you justify it? Probably not.
All that said "Just deal with it."s occure every time your product fails to meet someone in the audiences desires, however unrealistic.
Regarding the specific feature, to the best of my knowledge most games designed for consoles are one resolution only and the hardware and tv work together to fix hiccups. It just is a little out of place on modern computers that try their hardest to provide a consistant and comfortable interface regardless of what crazy hardware you might be running. That said I will still happily put up with a fixed resolution window on my screen for otherwise good software as long as it is smaller than my screen.
Regarding your second post:
I don't know and do not have time look into game maker with the kind of depth that question warrents.
Actually, right now Android has a bigger market share than Iphones: http://www.cnet.com/news/android-loses-some-us-market-share-but-remains-...
The problem with this though is that Iphones have more consistant features making it easier to target all Iphones than all Androids with out giving up the cool features of each specific phone.
==================================================
@Boogle
Thanks for the info. As a question though are you talking about making web games? The browser comments seem a little out of place other wise, but I am not familiar with the platform.
That helped me feel bettert again, lol. I'm sure you will eventually make a game, you just have to keep at it. I've been keeping at it on and off for years and it has lead me to this.
Sadly I just discovered the scaling thing I had tried actually didn't work, but oh well. I think I'm gonna stick with my 16:9 fixed resolution thing, I may look into a few other scaling methods and try them, but if they fail I'm finally gonna move on.
I could have designed my game for 1280 x 720 or 1920 x 1080 from the start, but that would require making rooms much larger by default (rooms that do not pan up and down) as some of my rooms are taller than my selected resolution and some are the selected resolution, think a platformer where some levels do not allow you to go up and down with the camera. Limitations like this help speed up development and help me focus more on making more refined levels.
Had I targeted these huge resolutions, it would look nicer, sure, but it would also eat up way more time. So, as you said I had to make choicesd and 768 x 432 just happened to be perfect as it is 16:9 :P
I had a quick question, before I move on (well, two). The tiles thing, is that a 2.5D issue in all game engines? is it something I should keep doing for good habit? Even if (at a fixed res) it is no longer an issue?
Second question: What kind of game have you been trying to make? I'm just curious. :)
I do not know a lot about 2.5D game engines, however in 3D it is generally a good practice to color outside the lines (UV Layouts, not the image borders) a little on your textures to prevent a slightly different kind of seam. So, yeah that is probably a good practice for 2.5D engines.
That said it is not a good practice for traditional 2D engines. Just something to be aware of. If you want details on that it would probably take me at least a week to get the free time to reply.
For the other question: Right now I want to make a ring out fighting game kind of like Super Smash Bros. Melee. I think it is probably better to talk about that sort of thing through private messages though.
@Saliv
"As a question though are you talking about making web games?"
The stuff I am making atm is cross-platform, HTML5/Canvas. so yes they also run on a browser.
To distribute to phones you use a 'browser wrapper' i.e. it looks like a normal app - but it is actually part of the browser engine - so you are still limited by certain things like the browser resolution.
I only mention this as he was talking about GameMaker, and game maker can do a similar thing - i.e. distribute to mobile devices via HTML5/Canvas with wrapper.
Yeah, it is. At that point it's getting off topic and all.
Do you have a Skype at all? Mine's is 'tyleraw2' if you want to talk anytime? I'm actually getting a tad tired of having no one to bounce video game ideas off of XD
I do have a skype but it is currently not running - I find it very distracting so only start it up when a job requires it.
I have sent you a message/email, so if you want to bounce around some ideas - start us off and I'll start skype if we get chatting. :)
Sweet!