Today a lot of the groundwork from yesterday paid off. managed to fix the transparency issues (my original solution was a little too neat and the direct solution worked better).

I fixed a bunch of small bugs with regards to viewports. Now my map scrolls and can work on screens smaller than the entire console. An example (using my new “take a recording” functionality):

Scrolling

While this might look similar to the early gifs, there’s a lot more going on here. The viewport is actually a sub-window (and I can put like character stats in that area to the right). The game is updating in real-time (both animating and simulating). Map scrolling is a perennial bugbear for newbies and I’ve seemingly nailed it. The game is all loosely-connected and data-driven so if I mess with things, it should all work the same.

Time to start working on gameplay and the world simulation. I need to add in object collision (currently objects are blocked by walls). I’m deciding whether I need an event system with publish-subscribe, so that you can decouple things a bit better. I’m worried that I’m on Day 5 and have no gameplay other than wandering around.

I like that I’ve piqued the interest of a few people. Some who are trying their hand at 7DRL too!

I might have dinner, watch another episode of Mr Robot and then hack away at gameplay code.

Changelog

## [0.0.5] - 2017-03-12

### Added

- Scrolling maps!
- Objects have a render order so we can have objects above/below each other.
- Double the ways to quit the game

### Changed

- Rendering is now done differently. Instead of layers, objects need to draw directly onto the viewport.
- Ticker now welcomes "RogueAgent"

### Removed

- No need for object render maps now.

### Fixed

- BUG #2 "Rendering overlays are weird"
    - Fixed by the render process. Alpha is only during writing. Chroma keys are only for blitting whole characters.
- BUG #5 "Ticker screen doesn't render"
    - Fixed by the render process.
- BUG #6 "Character input keys not working"
- Unnoticed bug with regards to viewport extents (height was width)
- BUG #7 "console_print won't work if you ask for a point outside the console"
    - Just need to truncate explicitly

## [0.0.4] - 2017-03-11

The huge graphical update! Lots of rewriting of almost everything

### Added

- Primitive Windowing system

### Changed

- The entire graphical stack.
    - Slipped in a GUI layer
    - Objects manage their own little render maps
    - Scope for a lighting layer

## [0.0.3] - 2017-03-11

### Added

- Keybindings interface.
- BUGS list
- Engine configuration file

### Changed

- Game loop is now real-time, 2 updates per second, and 60 FPS rendering.
    - GameObjects are given timestamps to adjust rendering.
- Engine controls screenshots.

### Fixed

- Screenshot key now works.

## [0.0.2] - 2017-03-09

### Added

- Generic GameMap code
- `maps/` now contains different maps.
- Filled rectangles utility code
- HQ Map
- Take screenshots with PrintScreen
- Nifty scrolling ticker screen

### Changed

- Maps and GameObjects now render themselves onto a console. This
  allows them to be multi-tile and do things like (fake) glow.
- Tiles now store their own colour
- Test map code moved to its own GameMap
- Player and NPC are now Human objects
- GameObject is very lean

## [0.0.1] - 2017-03-08

### Added

- Core TCOD engine
    - Game loop
    - Clean exit on ESC or Ctrl-C
- Base World functionality (stores a map, a PC and a list of NPCs)
- Base Viewport functionality
    - Walls and floor
    - PCs and NPCs
- Base Object functionality
    - Movement
    - Wall blocking movement
    - Rendering
- Base Map functionality
    - Custom map with some walls
- Utilities
    - Box-drawing (AABB, origin+(width,height), centered)