Hallo, =D
Ich möchte noch eine kleine Frage stellen,
Ich versuche (Mobil(z.B.: Handys)) ein Spiel zu strecken oder vielleicht sogar zu verkleinern so halt dem Bildschirm des Gerätes entsprechend. (Das überall das gleiche Bild in der gleichen Größe angezeigt wird.)
Ich hoffe Ihr wisst was ich meine ich versuch es mal in einer Beispiel Skizze zu beschreiben.
(*Das sollten Handys sein(im Bild))
In GLB V14 you can use the command PRESCALER to scale your screen to the desktop size of the device with limited CPU overheads, although I haven't tried this yet myself.
PRESCALER might not work on all platform yet. Alternative you can use CREATESCREEN and USESCREEN as well POLYVECTOR to do the same.
The biggest problem is not scaling, but more screen ratio.
Und wie genau wende ich das an?
Wo soll ich das den setzten?
Look at the PRESCALER example - you use the command once at the start-ish of your progam.
For the POLYVECTOR solution you need to use a virtual screen (use CREATESCREEN to initially set a screen up and USESCREEN to draw your game to every frame) then use the POLYVECTOR to scale and display it to your required dimensions every frame. This solution can be very slow (still real-time), but it depends on how it's used.
And Showscreen?
Can you perhaps a project/CODE send
how do you mean?
Prescaler 320,200
While true
Print "scaled",0,0
Showscreen
Wend
Man lernt am Besten in dem man es einfach mal PROBIERT.
Quote from: Kitty Hello on 2015-Dec-23
Prescaler 320,200
While true
Print "scaled",0,0
Showscreen
Wend
Man lernt am Besten in dem man es einfach mal PROBIERT.
True Story!
ok es funktioniert soweit aber mit anderen Bildschirmauflösungen nicht, die Größe ist die gleiche aber zum Bespiel Texte verschieben sich aber nach Fenster des Bildschirms zum Beispiel: Ein Text unten ist, verschiebt er sich das nur noch ein halber Text zusehen ist.
Wie soll man das machen?
Poste mal Code zum Problem. Ich verstehe es nicht.
Da gibt es leider nicht viel zu posten ;)
Es hat ja eigentlich super sofort funktioniert.
Der scheiden Teil ist ja eigentlich der:
Prescaler 800,480
While True
Showscreen
Wend
Ich versuch es mal mit Paint(Bilder) zu erklären :D
Also das er es unten Abscheidet ist mit dem bild vielleicht besser als mit einem Text.
PRESCALER doesn't work correctly with screens smaller than the original (<1.0) - so you would need to work out which is the best original resolution to scale up to the most devices.
ich finde scalierte bilder nicht toll und würde versuchen die meisten auflösungen mit bildern passend zur screengrösse abzudecken.
Bin ich der einzige der plötzlich an sex denken musste ?
Scaling is never going to fit all circumstances. Sometimes it's better to use different sized assets based on device resolution. There is no "one size fits all"
As for the second statement - umm... dirty minds? ;) :P
how do you mean?
Do you have an example?
Its very depend on the game and how to deal. There is various methods doing that. The screen ratio is also the main issue.
- in Greedy Mouse did not suffer the issue and just scaled to uses around 12-13 tiles across, and then fill out the screen.
- In Karma Miwa, there was various screen ratio issues and quite annoying here. So here im did some camera panning to make sure its was playable on a 4:3 screen as well on a 16:9 screen.
- Alternative you could also add a Super Gameboy like border around the playfield and just use one scaling. This is seen in example Snake Slider for iOS and also works pretty nice in that game.
Im thinks its the last option you want to do. Until then checkout the code im gave in the codesnippet as well PRESCALER.
Also PRESCALER might not DOWNSCALING correctly? Its was more designed to UPSCALING graphics, also best for retro games.
Then what is probably best for smartphones?
The "Prescaler" option can't cope with screens smaller than you initially state in project options.
The virtual scaling solution causes slow-down and like all scaling systems, can look nasty when scaled too high up or down. This will be true of the "prescaler" option too.
You may need a number of sets of assets (graphics) to cope with different sized screens - eg small assets for small screens (phones) and huge assets for tablets with retina displays. Not only do you have to recreate the images for these resolutions, you also have to ensure that your code adapts to positioning these assets.
So you get to choose - easy work, but possibly messy results or perfect results but with an awful lot more work involved. Of course you can meet the options somewhere in-between...
Englisch/English:
I know that there is more work but I find it nice when everything is the same size.
But how do I do that?
Deutsch/German:
ich weiß dass es mehr arbeit wird ich find es aber schöner wenn alles die gleiche größe hat.
Aber wie mache ich das?
Here's a rundown of what you would do to create a virtual screen scaling system.
Firstly you have to get the screen resolution of your target device with GETDESKTOPSIZE w,h
Then you need to work out what the maximum size of your game (maintaining aspect raitio) based on the device resolution and your game screen. Eg if your game screen is 320x240 and your target device is 640x480 then you can scale your game screen by 2 (2x320=640, 2x240=480). If the device resoolution is 800x480 (2x320=640, leaving an empty space of 160 pixels), then you still scale by 2, but have black borders where there is no gamescreen.
Here's a short example of how to create a virtual screen and scale it.
GLOBAL scale%=2
GLOBAL game_width%=320
GLOBAL game_height%=240
// Create a virtual screen
CREATESCREEN 1,999,game_width, game_height
SETSCREEN 1024,768,0
// Repeat until ESC pressed
WHILE TRUE
// Draw stuff to the virtual screen
USESCREEN 1
PRINT "PRESS SPACE",20,20
// Press SPACE to create new image
IF KEY(57)
FOR n=0 TO 50
DRAWRECT RND(320),RND(240),RND(64),RND(64),RGB(RND(255),RND(255), RND(255))
NEXT
ENDIF
// All drawing now done on the main screen
USESCREEN -1
SMOOTHSHADING FALSE
STARTPOLY 999
POLYVECTOR game_width*scale,0, game_width,0
POLYVECTOR 0,0, 0,0
POLYVECTOR 0,game_height*scale, 0,game_height
POLYVECTOR game_width*scale,game_height*scale, game_width,game_height
ENDPOLY
DRAWSPRITE 999,650,10
SHOWSCREEN
WEND
Change the "scale" value to make the scled image larger/smaller. Change the game_width and game_height to make the game screen larger/smaller.
You can add an OFFSET value in the POLYVECTOR section to have your screen in the middle of a larger screen if required.
Hope that helps. :)
Englisch/English
Do not be 2 Details?
Normal size and screen size?
Deutsch/german
Muss es nicht 2 Angaben geben?
Normale größe und Bildschirm größe?
Eh?
Are you asking why there are two screens being shown? That's to demonstrate that the larger, scaled version is based on the small original version.
I haven't taken into account the actual screen-size (desktop size) in that demo. I don't know what your original game screen size is or your desktop size. I thought that was enough to show you how to scale a POLYVECTOR virtual screen.
If that's not what you're asking then you need to rephrase, I'm afraid.