Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[VX] Fogs

Fog Feature
by Hevendor of rmxp.org, version 1.2.2

Introduction
This script enables the old Fog feature that RMXP had. You can display an image on screen (tiling or not), with the opacity that you choose, scrolling or not, for each map.

Instructions
Paste in the appropriate spot, above "Main" and below "Materials"
Fogs go in the pictures folder.
Everything else is explained in the script. It is reasonably easy to manage.

Screenshots
http://img183.imageshack.us/img183/812/fogsmd4.png[/img]
Now imagine it scrolling.

Script
Code:
#==============================================================================
# ** RMXP Fog feature for RMVX
#------------------------------------------------------------------------------
# Allows you to display a fog on map. Brings back the "old" Fog feature from 
# RPG Maker XP.
# 08-03-2008 (dd-mm-yyyy) © Hevendor of rmxp.org
# 09-03-2008 Edits/additions by Jirbytaylor
# 09-03-2008 (dd-mm-yyyy) Edited by Hevendor
# Version 1.2.3
# Latest update: fixed bug where fog showed over pictures
#==============================================================================

module Fog_Map_Settings
  #============================================================================
  # * Configure Fog numbers -> names for setup timesaving. Format:
  # {fognumber => 'fogname.extension', ...}
  # where 'Fogname.extension' must be the name of a fog picture and its extension
  # located in the pictures folder
  #============================================================================
  Fog_names = {1 => 'fog01.png'}
  #============================================================================
  # * Set maps you wish to have fogs here. Format:
  # Fog_maps = {mapID => Fog number, mapID2 => Fog number, ...}
  #============================================================================
  Fog_maps = {1 => 1}
  #============================================================================
  # * Set up fog settings. Uses (fog number => setting, ...) format
  # - Opacity - Opacity of fog, ranging from 0 (invisible) to 255 (opaque)
  # - Zoom - size of fog. '1' is normal not '100'.
  # - Blend - 0 - Normal, 1 - Add, 2 - Subtract
  # - SxSy - Scroll settings. (fog number => [sx,sy] ...)
  #============================================================================
  Fog_opacity = {1 => 90}
  Fog_zoom = {1 => 3}
  Fog_blend = {1 => 2}
  Fog_sxsy = {1 => [4, 4]}
end

class Game_Map
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_id                     # map ID
  attr_reader :fog_ox                     # fog oX
  attr_reader :fog_oy                     # fog oY
  #--------------------------------------------------------------------------
  # * Alias Definitions
  #--------------------------------------------------------------------------
  alias hev_fog_feature_map_update update
  alias hev_fog_feature_map_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @fog_ox = 0
    @fog_oy = 0
    hev_fog_feature_map_initialize
  end
  #--------------------------------------------------------------------------
  # * Update Fog
  #--------------------------------------------------------------------------   
  def update_fog
    if Fog_Map_Settings::Fog_maps.include?($game_map.map_id)
      @fog_ox -= Fog_Map_Settings::Fog_sxsy[Fog_Map_Settings::Fog_maps[@map_id]][0] / 8.0
      @fog_oy -= Fog_Map_Settings::Fog_sxsy[Fog_Map_Settings::Fog_maps[@map_id]][1] / 8.0
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #-------------------------------------------------------------------------- 
  def update
    hev_fog_feature_map_update
    update_fog
  end
end

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Alias Definitions
  #--------------------------------------------------------------------------
  alias hev_fog_feature_initialize initialize
  alias hev_fog_feature_create_viewports create_viewports
  alias hev_fog_feature_dispose dispose
  alias hev_fog_feature_update_viewports update_viewports
  alias hev_fog_feature_update update
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    hev_fog_feature_initialize
    create_fog
  end
  #--------------------------------------------------------------------------
  # * Create Viewport
  #--------------------------------------------------------------------------
  def create_viewports
    @viewport4 = Viewport.new(0, 0, 544, 416)
    @viewport4.z = 9
    hev_fog_feature_create_viewports
  end
  #--------------------------------------------------------------------------
  # * Create Fog
  #-------------------------------------------------------------------------- 
  def create_fog
    @fog = Plane.new(@viewport4)
    if Fog_Map_Settings::Fog_maps.include?($game_map.map_id)
      fog_number = Fog_Map_Settings::Fog_maps[$game_map.map_id]
      update_fog
      @fog.bitmap = Cache.picture(Fog_Map_Settings::Fog_names[fog_number]) 
      @fog.opacity = Fog_Map_Settings::Fog_opacity[fog_number]
      @fog.zoom_x = @fog.zoom_y = Fog_Map_Settings::Fog_zoom[fog_number]
      @fog.blend_type = Fog_Map_Settings::Fog_blend[fog_number]
    end       
  end
  #--------------------------------------------------------------------------
  # * Update Fog Sprite
  #--------------------------------------------------------------------------
  def update_fog
    if @fog != nil
      @fog.ox = $game_map.display_x / 8 + $game_map.fog_ox
      @fog.oy = $game_map.display_y / 8 + $game_map.fog_oy
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    hev_fog_feature_update
    update_fog
  end
  #--------------------------------------------------------------------------
  # * Dispose of Fog Sprite
  #--------------------------------------------------------------------------
  def dispose_fog
    @fog.dispose
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    dispose_fog
    hev_fog_feature_dispose
  end
end

Notes
Usable everywhere with credit to Hevendor.

Older Versions
Code:
#==============================================================================
# ** Fog feature
#------------------------------------------------------------------------------
# Allows you to display a fog on map. Brings back the "old" Fog feature from 
# RPG Maker XP.
# 08-03-2008 (dd-mm-yyyy) © Hevendor of rmxp.org
# Version 1.0
#==============================================================================

module Fog_Map_Settings
  #============================================================================
  # * Configure map names for setup timesaving. Format:
  # {fognumber => 'fogname.extension', ...}
  #============================================================================
  Fog_names = {1 => 'fog01.png'}
  #============================================================================
  # * Set maps you wish to have fogs here. Format:
  # Fog_maps = {mapID => Fog number, mapID2 => Fog number, ...}
  #============================================================================
  Fog_maps = {1 => 1}
  #============================================================================
  # * Set up opacity of fogs. Uses the number corresponding to each fog that you
  # defined above.
  #============================================================================
  Fog_opacity = {1 => 125}
  #============================================================================
  # * Set SX/SY of each fog (relates to scrolling) Uses the number corresponding
  # to each fog that you defined above.
  # Format: {fognumber => [fogSX, fogSY], ...}
  #============================================================================
  Fog_sxsy = {1 => [0, 0]}
end

class Game_Map
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_id                     # map ID
  attr_reader :fog_ox                     # fog oX
  attr_reader :fog_oy                     # fog oY
  #--------------------------------------------------------------------------
  # * Alias Definitions
  #--------------------------------------------------------------------------
  alias hev_fog_feature_map_update update
  alias hev_fog_feature_map_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @fog_ox = 0
    @fog_oy = 0
    hev_fog_feature_map_initialize
  end
  #--------------------------------------------------------------------------
  # * Update Fog
  #--------------------------------------------------------------------------   
  def update_fog
    @fog_ox -= Fog_Map_Settings::Fog_sxsy[1][0] / 8.0
    @fog_oy -= Fog_Map_Settings::Fog_sxsy[1][1] / 8.0
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #-------------------------------------------------------------------------- 
  def update
    hev_fog_feature_map_update
    update_fog
  end
end

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Alias Definitions
  #--------------------------------------------------------------------------
  alias hev_fog_feature_initialize initialize
  alias hev_fog_feature_create_viewports create_viewports
  alias hev_fog_feature_dispose dispose
  alias hev_fog_feature_update_viewports update_viewports
  alias hev_fog_feature_update update
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    hev_fog_feature_initialize
    create_fog
  end
  #--------------------------------------------------------------------------
  # * Create Viewport
  #--------------------------------------------------------------------------
  def create_viewports
    @viewport4 = Viewport.new(0, 0, 544, 416)
    @viewport4.z = 1000
    hev_fog_feature_create_viewports
  end
  #--------------------------------------------------------------------------
  # * Create Fog
  #-------------------------------------------------------------------------- 
  def create_fog
    @fog = Plane.new(@viewport4)
    if Fog_Map_Settings::Fog_maps.include?($game_map.map_id)
      fog_number = Fog_Map_Settings::Fog_maps[$game_map.map_id]
      @fog.bitmap = Cache.picture(Fog_Map_Settings::Fog_names[fog_number]) 
      @fog.opacity = Fog_Map_Settings::Fog_opacity[fog_number]
    end       
  end
  #--------------------------------------------------------------------------
  # * Update Fog Sprite
  #--------------------------------------------------------------------------
  def update_fog
    if @fog != nil
      @fog.ox = $game_map.display_x / 8 + $game_map.fog_ox
      @fog.oy = $game_map.display_y / 8 + $game_map.fog_oy
    end
  end
  
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    hev_fog_feature_update
    update_fog
  end
    
  #--------------------------------------------------------------------------
  # * Dispose of Fog Sprite
  #--------------------------------------------------------------------------
  def dispose_fog
    @fog.dispose
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    dispose_fog
    hev_fog_feature_dispose
  end
end
 

Taylor

Sponsor

Ratty524":1u8s3ije said:
Yay! Nice script, though I've heard that you could just move a picture around to make a "fog".
Yes, but this makes it easier for diagonal moving fogs. I'd assume. Plus it'd be less laggy.

EDIT: I tried it, and discovered the fog 'jumps' back to it's initial position after returning to Scene_Map from something like the menu. This probably won't be noticeable with still fogs, but is with panning ones.

Oh and I hope you don't mind, I added a few extras like blending and zoom. ... actually that's all I added.
It isn't much but it might stop people from asking for those features. :B
Code:
==============================================================================
# ** RMXP Fog for RMVX
#------------------------------------------------------------------------------
# Allows you to display a fog on map. Brings back the "old" Fog feature from 
# RPG Maker XP.
# 08-03-2008 (dd-mm-yyyy) © Hevendor of rmxp.org
# 09-03-2008 Edits/additions by Jirbytaylor
# Version 1.1
#==============================================================================

module Fog_Map_Settings
  #============================================================================
  # * Configure map names for setup timesaving. Format:
  # {fognumber => 'fogname.extension', ...}
  #============================================================================
  Fog_names = {1 => 'fog02.png'}
  #============================================================================
  # * Set maps you wish to have fogs here. Format:
  # Fog_maps = {mapID => Fog number, mapID2 => Fog number, ...}
  #============================================================================
  Fog_maps = {1 => 1}
  #============================================================================
  # * Set up fog settings. Uses (fog number => setting, ...) format
  # - Opacity - opacity duh
  # - Zoom - size of fog. '1' is normal not '100'.
  # - Blend - 0 - Normal, 1 - Add, 2 - Subtract
  # - SxSy - Scroll settings. (fog number => [x,y] ...)
  #============================================================================
  Fog_opacity = {1 => 90}
  Fog_zoom = {1 => 3}
  Fog_blend = {1 => 2}
  Fog_sxsy = {1 => [4, 4]}
end

class Game_Map
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_id                     # map ID
  attr_reader :fog_ox                     # fog oX
  attr_reader :fog_oy                     # fog oY
  #--------------------------------------------------------------------------
  # * Alias Definitions
  #--------------------------------------------------------------------------
  alias hev_fog_feature_map_update update
  alias hev_fog_feature_map_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @fog_ox = 0
    @fog_oy = 0
    hev_fog_feature_map_initialize
  end
  #--------------------------------------------------------------------------
  # * Update Fog
  #--------------------------------------------------------------------------   
  def update_fog
    @fog_ox -= Fog_Map_Settings::Fog_sxsy[1][0] / 8.0
    @fog_oy -= Fog_Map_Settings::Fog_sxsy[1][1] / 8.0
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #-------------------------------------------------------------------------- 
  def update
    hev_fog_feature_map_update
    update_fog
  end
end

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Alias Definitions
  #--------------------------------------------------------------------------
  alias hev_fog_feature_initialize initialize
  alias hev_fog_feature_create_viewports create_viewports
  alias hev_fog_feature_dispose dispose
  alias hev_fog_feature_update_viewports update_viewports
  alias hev_fog_feature_update update
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    hev_fog_feature_initialize
    create_fog
  end
  #--------------------------------------------------------------------------
  # * Create Viewport
  #--------------------------------------------------------------------------
  def create_viewports
    @viewport4 = Viewport.new(0, 0, 544, 416)
    @viewport4.z = 1000
    hev_fog_feature_create_viewports
  end
  #--------------------------------------------------------------------------
  # * Create Fog
  #-------------------------------------------------------------------------- 
  def create_fog
    @fog = Plane.new(@viewport4)
    if Fog_Map_Settings::Fog_maps.include?($game_map.map_id)
      fog_number = Fog_Map_Settings::Fog_maps[$game_map.map_id]
      @fog.bitmap = Cache.picture(Fog_Map_Settings::Fog_names[fog_number]) 
      @fog.opacity = Fog_Map_Settings::Fog_opacity[fog_number]
      @fog.zoom_x = @fog.zoom_y = Fog_Map_Settings::Fog_zoom[fog_number]
      @fog.blend_type = Fog_Map_Settings::Fog_blend[fog_number]
    end       
  end
  #--------------------------------------------------------------------------
  # * Update Fog Sprite
  #--------------------------------------------------------------------------
  def update_fog
    if @fog != nil
      @fog.ox = $game_map.display_x / 8 + $game_map.fog_ox
      @fog.oy = $game_map.display_y / 8 + $game_map.fog_oy
    end
  end
  
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    hev_fog_feature_update
    update_fog
  end
    
  #--------------------------------------------------------------------------
  # * Dispose of Fog Sprite
  #--------------------------------------------------------------------------
  def dispose_fog
    @fog.dispose
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    dispose_fog
    hev_fog_feature_dispose
  end
end
 
BOOO! Now people are going to ABUSE it. I've had this script under lock and key for a while now so that ppl didn't just splash all there maps with fogs and make em UGLY.
 
@Ratty
For full screen ones sure, but if you want to tile them it would take a lot of pictures :)

@Jirby
I was going to get to it eventually, but thanks.

@Prexus
Well, I'd like to bring some features from RMXP back so people can stop whining about how VX removed them and start using it. =)
 
Not sure if I'm allowed a double-post in this situation, but

Code:
#==============================================================================
# ** RMXP Fog feature for RMVX
#------------------------------------------------------------------------------
# Allows you to display a fog on map. Brings back the "old" Fog feature from 
# RPG Maker XP.
# 08-03-2008 (dd-mm-yyyy) © Hevendor of rmxp.org
# 09-03-2008 Edits/additions by Jirbytaylor
# 09-03-2008 (dd-mm-yyyy) Edited by Hevendor
# Version 1.2
# Latest update: fixed the jumping fog bug; fixed bug with sx/sy references
#==============================================================================

module Fog_Map_Settings
  #============================================================================
  # * Configure map names for setup timesaving. Format:
  # {fognumber => 'fogname.extension', ...}
  #============================================================================
  Fog_names = {1 => 'fog01.png'}
  #============================================================================
  # * Set maps you wish to have fogs here. Format:
  # Fog_maps = {mapID => Fog number, mapID2 => Fog number, ...}
  #============================================================================
  Fog_maps = {1 => 1}
  #============================================================================
  # * Set up fog settings. Uses (fog number => setting, ...) format
  # - Opacity - Opacity of fog, ranging from 0 (invisible) to 255 (opaque)
  # - Zoom - size of fog. '1' is normal not '100'.
  # - Blend - 0 - Normal, 1 - Add, 2 - Subtract
  # - SxSy - Scroll settings. (fog number => [sx,sy] ...)
  #============================================================================
  Fog_opacity = {1 => 90}
  Fog_zoom = {1 => 3}
  Fog_blend = {1 => 2}
  Fog_sxsy = {1 => [4, 4]}
end

class Game_Map
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_id                     # map ID
  attr_reader :fog_ox                     # fog oX
  attr_reader :fog_oy                     # fog oY
  #--------------------------------------------------------------------------
  # * Alias Definitions
  #--------------------------------------------------------------------------
  alias hev_fog_feature_map_update update
  alias hev_fog_feature_map_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @fog_ox = 0
    @fog_oy = 0
    hev_fog_feature_map_initialize
  end
  #--------------------------------------------------------------------------
  # * Update Fog
  #--------------------------------------------------------------------------   
  def update_fog
    if Fog_Map_Settings::Fog_maps.include?($game_map.map_id)
      @fog_ox -= Fog_Map_Settings::Fog_sxsy[Fog_Map_Settings::Fog_maps[@map_id]][0] / 8.0
      @fog_oy -= Fog_Map_Settings::Fog_sxsy[Fog_Map_Settings::Fog_maps[@map_id]][1] / 8.0
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #-------------------------------------------------------------------------- 
  def update
    hev_fog_feature_map_update
    update_fog
  end
end

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Alias Definitions
  #--------------------------------------------------------------------------
  alias hev_fog_feature_initialize initialize
  alias hev_fog_feature_create_viewports create_viewports
  alias hev_fog_feature_dispose dispose
  alias hev_fog_feature_update_viewports update_viewports
  alias hev_fog_feature_update update
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    hev_fog_feature_initialize
    create_fog
  end
  #--------------------------------------------------------------------------
  # * Create Viewport
  #--------------------------------------------------------------------------
  def create_viewports
    @viewport4 = Viewport.new(0, 0, 544, 416)
    @viewport4.z = 1000
    hev_fog_feature_create_viewports
  end
  #--------------------------------------------------------------------------
  # * Create Fog
  #-------------------------------------------------------------------------- 
  def create_fog
    @fog = Plane.new(@viewport4)
    if Fog_Map_Settings::Fog_maps.include?($game_map.map_id)
      fog_number = Fog_Map_Settings::Fog_maps[$game_map.map_id]
      update_fog
      @fog.bitmap = Cache.picture(Fog_Map_Settings::Fog_names[fog_number]) 
      @fog.opacity = Fog_Map_Settings::Fog_opacity[fog_number]
      @fog.zoom_x = @fog.zoom_y = Fog_Map_Settings::Fog_zoom[fog_number]
      @fog.blend_type = Fog_Map_Settings::Fog_blend[fog_number]
    end       
  end
  #--------------------------------------------------------------------------
  # * Update Fog Sprite
  #--------------------------------------------------------------------------
  def update_fog
    if @fog != nil
      @fog.ox = $game_map.display_x / 8 + $game_map.fog_ox
      @fog.oy = $game_map.display_y / 8 + $game_map.fog_oy
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    hev_fog_feature_update
    update_fog
  end
  #--------------------------------------------------------------------------
  # * Dispose of Fog Sprite
  #--------------------------------------------------------------------------
  def dispose_fog
    @fog.dispose
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    dispose_fog
    hev_fog_feature_dispose
  end
end

Latest version. Fixed the "jumping fog" bug Jirby mentioned, also fixed an undiscovered bug with the sx/sy setup. Due to this update I ask you to NOT use the version Jirby posted, but this one here or the latest one in the original post.
 
fogs are static images that stay in one place, and don't move with the screen, therefore can be used to show something above the player, like trees or whatever, and it will stay put instead of pictures that move along with you.
 

Taylor

Sponsor

Ahh... good. Ye fixed it. ^^ *updates game*
This script has helped me see a bit of how ranges work, now I just gotta remember what script idea I had required ranges..... I think it was Fogs in VX actually. XDXD

Offtopic- craybest what in the world is up with your avatar oO;
 
Sorry, I'm a major scripting noob, but I added this fog script, but now I have no idea what to do with it. Could you help me figure it out? Thanks for your time.
 
Don't know if you've ever used RMXP and its fogs before (would make it easier to understand), but here goes:

Over here
Code:
Fog_names = {1 => 'fog01.png'}
you basically assign numbers to the different fogs you have in the Pictures folder. It goes like
Code:
{1 => 'fogname', 2 => 'fogname2', 3 => 'fogname3'}
and so on. This is basically to save you time typing the fog name over and over.

Code:
Fog_maps = {1 => 1}
Exactly what it sounds. Set the maps you wish to have fogs here, in the format
Code:
Fog_maps = {mapID => fognumber, mapID2 => fognumber}
and so on, where fog number is the number you assigned to each fog above.

Code:
Fog_opacity = {1 => 90}
  Fog_zoom = {1 => 3}
  Fog_blend = {1 => 2}
  Fog_sxsy = {1 => [4, 4]}

You're probably getting used to this now; you can change the settings for each different fog here, using the fog number you set up earlier. Just follow the format that's already in the script.
 
Thanks, but when I try to go to the area that I made the fog, it says there is an error in the lines that say:
Code:
@fog_ox -= Fog_Map_Settings::Fog_sxsy[Fog_Map_Settings::Fog_maps[@map_id]][0] / 8.0
@fog_oy -= Fog_Map_Settings::Fog_sxsy[Fog_Map_Settings::Fog_maps[@map_id]][1] / 8.0
They're at line 62 for me.

What do I do with them?
 

Taylor

Sponsor

I've found a new bug - with looping maps. The fog jumps to it's initial position when 1 tile of the other edge of the map appears at the top or left side of the screen. If you approach the right and bottom edge it doesn't seem to happen however. (I'm probably wrong.) I think this bug occoured when looping was put into RMXP however so it may be a tricky one to fix. (Probably why Enterbrain removed fogs from VX - if it was ever thought about. o_o)
 
Fixed bug regarding picture priorities.

I, unfortunately, am at a loss on how to fix the looping map bug. I've a good idea of what's causing it, but no idea how to fix it. Not a lot of people use looping maps though? Or you could just set the fog not to scroll for that particular map.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top