• Hey! Guest! The 40th (!!!) GMC Jam will take place between February 25th, 12:00 UTC to March 1st 12:00 UTC. Why not join in this very special anniversary jam! Click here to find out more!

GMS 2.3+ Flick Screen transition

during this time of lockdowns and such I have decided it is time to try my hand at making games again. I did this back in the C64 days but havent really done anything since.

I am trying to figure out how to make the, and forgive me I only know it as this, "flick screen" transitions seen in games like dizzy. A link I will leave in the post.


I have been bashing my head against a brick wall for a couple of hours now trying to work this out. I can creat an object that follows the player in a "smooth transition" but its not what I want. As I want to make levels for the game and have the effect seen in the video as you go form one room chunk to the next.
 

DaveInDev

Member
If you do not want to follow the player and just switch levels, you could look at the room concept. They are here to design separate "levels".


They can be basic, with no camera moves, just a player moving around.

A simple tutorial here :

 
I have experiemnted with just rooms.... But the issue I have is that I want to create something that follows a 100x10 room structure. I want o create a maze essentially. And in order to do it I think the only way is to split it down into chunks of rooms and use a flip screen transition in that one room chunk then use a propper room trainsition to go to the next chunk.
 

DaveInDev

Member
You can stay in one single giant room, and use viewport and camera to focus on different parts of the room ?


But maybe I did not really understand what you want, especially with this "flick" transition. But you can change the camera view very abruptly, which would result in this "not smooth" transition.
 
The only way I can describe it is in terms of how I would create something back in the c64 days. Wiht just 64kb or ram, depending on if you turned BASIC off and if you played with adressable space, you essentially had to unload the screen RAM the load in the new screen. This created the "flick screen" effect.

another example would be this one....


in terms of a modern "room" this entire game could be held in a sinlge room.

So for example, if my room was 640x400 and my view port was 320x200 that essentially gives me 4 virtual rooms worth of gamespace. Or, if I moved from the boundary of the pinkish room (in the atatched immage) the camera would instantly "flick" to the blue room. Then if I wen down on the y axis the camrea would flick into the brown room. And so on.

Sorry I am trying to explain it as best I can. And I hope the videos give examples of what I mean.
 

Attachments

DaveInDev

Member
So for example, if my room was 640x400 and my view port was 320x200 that essentially gives me 4 virtual rooms worth of gamespace. Or, if I moved from the boundary of the pinkish room (in the atatched immage) the camera would instantly "flick" to the blue room. Then if I wen down on the y axis the camrea would flick into the brown room. And so on.
So you described the solution.... ;)
Now you just have to activate a viewport on the main room, give it a size smaller than your room and write some code.

Read the manual on viewports :
 
Okay I think I have this working. Atleast it appears to be working as intended. I am unsing a camera object with the following chunks of code.

Creation
GML:
#macro camWidth 320
#macro camHeight 200
#macro camScale 1

//enable the view
view_enabled = true;
view_visible[0] = true;

//camera creation
cam=camera_create_view(0,0,camWidth,camHeight);
view_set_camera(0,cam);
camera_set_view_target(cam,obj_cam2)
Begin step
GML:
/// @description Insert description here
// You can write your code in this editor
camera_set_view_pos(cam,x,y)

if obj_player.x>x+camWidth x+=camWidth
if obj_player.x<x x-=camWidth
if obj_player.y>y+camHeight y+=camHeight
if obj_player.y<y y-=camHeight
As the player moves around I am now getting that "flisk screen" affect.
 
Top