7DRL – RogueAgent Day 4

What a slog! Today was some hard-won improvements. The engine is now real-time (60 FPS+) with two game simulation ticks per second. This lets you animate things independently from the game simulation.

The idea behind this was to have something approaching a modern roguelike. I don’t want to play this over a TTY, I want things to look nice. An idea I had was you start outside an evil base. You’re on a sandy beach and that’s signalled by slightly undulating water, rather than just a ragged yellow area with a blue area next to it. Or you know when you’ve tripped the alarms because lights pulse red (even though you have all the time in the world between movements to strategise).

The system is also much more modular and has a primitive window system. So when I want to put some UI on, it won’t be too much of a pain… hopefully! Also I could do lighting and shadow in another pass, but I’m staying well away from that at the moment.

There’s some fundamental flaw in how I’m doing rendering and I can either have humans moving around nicely overlayed on the background, or I can have opaque objects (like the ticker display). I want both, but the way that the console blitting system works, it’s broken. Only very late did I realize that a cell with the blit-transparent chroma key is completely ignored, and not just the background. Basically I was hoping to green-screen some characters and I cut them out entirely.

I’ve started a BUGS list because I’m painfully aware of some goofy stuff in the code already. I added code for scrolling the screen if your guy moves too close to the edge of the screen. That’s broken for some dumb reason. Coding is hard!

I also pushed some magic constants out to configuration files.

I also did a bunch of chores around the house and watched 3 episodes of Mr Robot.

I have an idea to fix my transparency problem tomorrow. Then after some social outings, I might try to quickly fix the graphics problems and then declare graphics done. I’m sick of graphics! I need gameplay!

I have about 20K of code so far, with 750 lines of code.


## [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)

7DRL – RogueAgent Day 3

No work done yesterday because of my job and spending the night playing a thrilling game of Pathfinder. But I was excited to get up this morning to start coding. More excited than having breakfast and coffee, but in all fairness, breakfast and 7DRL were trumped by a sleep in.

Instead of diving straight in, I’ve decided I’ll do the right thing and eat some food and get caffeinated. I’m reading a few roguelike design articles to get my brain ticking over in a semi-thoughtful way.

I’ve got most of a long weekend open to 7DRL so hopefully I can make something cool!

7DRL – RogueAgent Day 1

After a few hours futzing around, I got things working.

While this is super-lamo, it’s doing a bunch of things right under the hood. There’s a world that chooses maps (from a list of one). There’s a map that draws those walls. The NPC gets an update (and just takes a random step). The PC accepts key-presses and quits cleanly. The walls block movement. I can take screenshots of play.

More importantly, I didn’t fall down a rabbit-hole of planning. Some things are placeholder at the moment, but the structure lets me expand out where I need to, when I need to.

The Player-Character Divide

The tension at my end of the table was incredible. Here I was, for once the only party member who had an inside scoop on what was going on, but I faced that one make-or-break question from the DM: “Well, dude, you made a decision how you’re gonna play this?”

Rewind a little. Our adventuring party had struck out to explore the kingdom neighbouring ours. A travelling merchant had disappeared and there was no word of what had happened. We hit a tower and there was no-one there. Everyone had decided simultaneously to up and go. We figured the capital would have some answers so I as the party’s Ranger led them down the mountains towards the city. On our trip we saw nothing. My wolf was uneasy.

We decided not to risk travelling at night so we hung out in an abandoned farmhouse. Being on the lookout for zombies (because there were lots of human tracks and a weird smell in the air), we mostly ignored the DM’s talk of a poster in a child’s room and went to sleep. And then, just when night hit, the raven familiar of our Witch Morgana spluttered out, “Look! Look!” In the distance were hundreds of people, distorted people. No, not hundreds, but thousands. And they were sprinting towards our shelter. We were screwed. With no time to prepare, we got ready to make a bolt for it. In no time zombies swarmed the house. Our illustrious warrior leader Jope and the Arcane Trickster (mage-thief) Switch barged through the crowd. I hung back. Something wasn’t right. Only when a huge, bulbous zombie vomited bile over my two companions did it become clear – our game had taken an unexpected left turn into Left 4 Dead 2. And though it came a little later, I had to make the decision: “Do I clue the other guys in, or do we have fun?”

Continue reading “The Player-Character Divide”