Difference between revisions of "Gambas Tile System"

From PigaLore
Jump to navigation Jump to search
Line 1: Line 1:
  +
{{Infobox Engine
  +
| Title = Gambas Tile System
  +
| Image = Hull-Breach.png
  +
| Size = 300px
  +
| Caption = Logo
  +
| System = [[:wikipedia:GNU/Linux|GNU/Linux]], [[:wikipedia:Unix-like|Unix-like]]
  +
| Type = [[:wikipedia:Tile engine|Tile engine]]
  +
| Designer = [[Graham L. Wilson]]
  +
| Coder = [[Graham L. Wilson]]
  +
| Version = [[Gambas Tile System#Fixed Version|Fixed Version]]
  +
| Game = [[Hull Breach]]
  +
| First = [[Time Line#2014|September 1, 2014]]
  +
| Last = [[Time Line#2020|December 6, 2020]]
  +
| Code = [[Gambas]]
  +
| Middleware = [[:wikipedia:Simple DirectMedia Layer|SDL 2]] (audio), [[:wikipedia:GTK (software)|GTK 3]]/[[:wikipedia:Qt (software)|Qt 5]] (interfaces)
  +
| License = [[GNU General Public License]]
  +
}}
   
 
The '''Gambas Tile System''' is a tiling engine being written by [[Piga Software]] for use in its later projects. It is to form the basis of revamped versions of the [[Gambas Platform Engine]], [[Gambas Genie]] and others. It is designed to be a flexible and resource efficient renderer allowing for easy scrolling and scalability.
 
The '''Gambas Tile System''' is a tiling engine being written by [[Piga Software]] for use in its later projects. It is to form the basis of revamped versions of the [[Gambas Platform Engine]], [[Gambas Genie]] and others. It is designed to be a flexible and resource efficient renderer allowing for easy scrolling and scalability.
   
 
== Fixed Version ==
 
== Fixed Version ==
[[File:Smooth-Movement-+-Diagonals.png|thumb|left|250px|Technical demo]]
+
[[File:Smooth-Movement-+-Diagonals.png|thumb|left|200px|Technical demo]]
   
 
The earliest version can be traced back to the "[[Gambas Examples|Smooth Movement + Diagonals]]" demo released on [[Timeline#2014|September 1, 2014]], wherein tile data is stored in a two-dimensional array that is displayed within a drawing area. Dynamic elements, most notably the player character, are rendered atop this as independent picture boxes. This allows sprite animation and movement to be done without having to redraw all the background tiles. This was not previously viable until the Qt 5 and GTK 3 toolkits were adopted by [[Gambas]] providing transparency. This draft was later used as the basis for ''[[Hull Breach]]'', created for the [[Timeline#2020|December 2020]] [[LibreJam]] contest.
 
The earliest version can be traced back to the "[[Gambas Examples|Smooth Movement + Diagonals]]" demo released on [[Timeline#2014|September 1, 2014]], wherein tile data is stored in a two-dimensional array that is displayed within a drawing area. Dynamic elements, most notably the player character, are rendered atop this as independent picture boxes. This allows sprite animation and movement to be done without having to redraw all the background tiles. This was not previously viable until the Qt 5 and GTK 3 toolkits were adopted by [[Gambas]] providing transparency. This draft was later used as the basis for ''[[Hull Breach]]'', created for the [[Timeline#2020|December 2020]] [[LibreJam]] contest.
   
 
== Scrolling Version ==
 
== Scrolling Version ==
[[File:Tile-System-Development.png|thumb|right|250px|Development screenshot]]
+
[[File:Tile-System-Development.png|thumb|left|200px|Development screenshot]]
   
 
Although decent for single screen games, the use of this tiling system proved cumbersome when adding scrolling. If done directly, the amount of tiles required to drawn on a larger world at once proves too demanding. With that limitation in mind, development began in [[Fact Timeline#2015|2015]] towards creating a system that would select only the tiles necessary to render while storing all the rest in memory. After a major breakthrough in [[Fact Timeline#2018|2018]] for the adaptive tiling interface, work began on populating tile worlds in the latter part of [[Fact Timeline#2019|2019]] by coordinating the dynamic elements as well as adding in the option of background props that reside directly over the tile layer.
 
Although decent for single screen games, the use of this tiling system proved cumbersome when adding scrolling. If done directly, the amount of tiles required to drawn on a larger world at once proves too demanding. With that limitation in mind, development began in [[Fact Timeline#2015|2015]] towards creating a system that would select only the tiles necessary to render while storing all the rest in memory. After a major breakthrough in [[Fact Timeline#2018|2018]] for the adaptive tiling interface, work began on populating tile worlds in the latter part of [[Fact Timeline#2019|2019]] by coordinating the dynamic elements as well as adding in the option of background props that reside directly over the tile layer.

Revision as of 06:23, 10 April 2021

The Gambas Tile System is a tiling engine being written by Piga Software for use in its later projects. It is to form the basis of revamped versions of the Gambas Platform Engine, Gambas Genie and others. It is designed to be a flexible and resource efficient renderer allowing for easy scrolling and scalability.

Fixed Version

Technical demo

The earliest version can be traced back to the "Smooth Movement + Diagonals" demo released on September 1, 2014, wherein tile data is stored in a two-dimensional array that is displayed within a drawing area. Dynamic elements, most notably the player character, are rendered atop this as independent picture boxes. This allows sprite animation and movement to be done without having to redraw all the background tiles. This was not previously viable until the Qt 5 and GTK 3 toolkits were adopted by Gambas providing transparency. This draft was later used as the basis for Hull Breach, created for the December 2020 LibreJam contest.

Scrolling Version

Development screenshot

Although decent for single screen games, the use of this tiling system proved cumbersome when adding scrolling. If done directly, the amount of tiles required to drawn on a larger world at once proves too demanding. With that limitation in mind, development began in 2015 towards creating a system that would select only the tiles necessary to render while storing all the rest in memory. After a major breakthrough in 2018 for the adaptive tiling interface, work began on populating tile worlds in the latter part of 2019 by coordinating the dynamic elements as well as adding in the option of background props that reside directly over the tile layer.