From b04ac93aaa788e750b79ae35526aab16434a9727 Mon Sep 17 00:00:00 2001 From: Sergio Vera Castellano Date: Sun, 31 Dec 2017 17:56:58 +0100 Subject: [PATCH] First commit --- examples/community/isometric-basics/README.md | 11 ++ .../community/isometric-basics/castle.png | Bin 0 -> 26296 bytes examples/community/isometric-basics/main.go | 102 ++++++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 examples/community/isometric-basics/README.md create mode 100644 examples/community/isometric-basics/castle.png create mode 100644 examples/community/isometric-basics/main.go diff --git a/examples/community/isometric-basics/README.md b/examples/community/isometric-basics/README.md new file mode 100644 index 0000000..77625bd --- /dev/null +++ b/examples/community/isometric-basics/README.md @@ -0,0 +1,11 @@ +# Isometric view basics + +Created by [Sergio Vera](https://github.com/svera). + +Isometric view is a display method used to create an illusion of 3D for an otherwise 2D game - sometimes referred to as pseudo 3D or 2.5D. + +Implementing an isometric view can be done in many ways, but for the sake of simplicity I'll focus on a tile-based approach, which is the most efficient and widely used method. + +In the tile-based approach, each visual element is broken down into smaller pieces, called tiles, of a standard size. These tiles will be arranged to form the game world according to pre-determined level data - usually a 2D array. + +For a detailed explanation about the maths behind this, read [http://clintbellanger.net/articles/isometric_math/](http://clintbellanger.net/articles/isometric_math/). diff --git a/examples/community/isometric-basics/castle.png b/examples/community/isometric-basics/castle.png new file mode 100644 index 0000000000000000000000000000000000000000..190fd9ee1e7b6b6c6af13352916164eb93d9a913 GIT binary patch literal 26296 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 DMRaI9 literal 0 HcmV?d00001 diff --git a/examples/community/isometric-basics/main.go b/examples/community/isometric-basics/main.go new file mode 100644 index 0000000..246f9e4 --- /dev/null +++ b/examples/community/isometric-basics/main.go @@ -0,0 +1,102 @@ +package main + +import ( + "image" + "os" + + "github.com/faiface/pixel" + "github.com/faiface/pixel/pixelgl" + + _ "image/png" +) + +const ( + windowWidth = 800 + windowHeight = 800 + // sprite tiles are squared, 64x64 size + tileSize = 64 + f = 0 // floor identifier + w = 1 // wall identifier +) + +var levelData = [][]uint{ + {f, f, f, f, f, f}, // This row will be rendered in the lower left part of the screen (closer to the viewer) + {w, f, f, f, f, w}, + {w, f, f, f, f, w}, + {w, f, f, f, f, w}, + {w, f, f, f, f, w}, + {w, w, w, w, w, w}, // And this in the upper right +} +var win *pixelgl.Window +var offset = pixel.V(400, 325) +var floorTile, wallTile *pixel.Sprite + +func loadPicture(path string) (pixel.Picture, error) { + file, err := os.Open(path) + if err != nil { + return nil, err + } + defer file.Close() + img, _, err := image.Decode(file) + if err != nil { + return nil, err + } + return pixel.PictureDataFromImage(img), nil +} + +func run() { + var err error + + cfg := pixelgl.WindowConfig{ + Title: "Isometric demo", + Bounds: pixel.R(0, 0, windowWidth, windowHeight), + VSync: true, + } + win, err = pixelgl.NewWindow(cfg) + if err != nil { + panic(err) + } + + pic, err := loadPicture("castle.png") + if err != nil { + panic(err) + } + + wallTile = pixel.NewSprite(pic, pixel.R(0, 448, tileSize, 512)) + floorTile = pixel.NewSprite(pic, pixel.R(0, 128, tileSize, 192)) + + depthSort() + + for !win.Closed() { + win.Update() + } +} + +// Draw level data tiles to window, from farthest to closest. +// In order to achieve the depth effect, we need to render tiles up to down, being lower +// closer to the viewer (see painter's algorithm). To do that, we need to process levelData in reverse order, +// so its first row is rendered last, as OpenGL considers its origin to be in the lower left corner of the display. +func depthSort() { + for x := len(levelData) - 1; x >= 0; x-- { + for y := len(levelData[x]) - 1; y >= 0; y-- { + isoCoords := cartesianToIso(pixel.V(float64(x), float64(y))) + mat := pixel.IM.Moved(offset.Add(isoCoords)) + // Not really needed, just put to show bigger blocks + mat = mat.ScaledXY(win.Bounds().Center(), pixel.V(2, 2)) + tileType := levelData[x][y] + if tileType == f { + floorTile.Draw(win, mat) + } else { + wallTile.Draw(win, mat) + } + } + } +} + +func cartesianToIso(pt pixel.Vec) pixel.Vec { + return pixel.V((pt.X-pt.Y)*(tileSize/2), (pt.X+pt.Y)*(tileSize/4)) +} + +func main() { + pixelgl.Run(run) +}