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.

Changelog

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

How to have a productive projects night

Balancing work, life and your own creative projects is tricky. I’ve got some tips around how I achieve it.

For those trying to achieve a work-life balance, it takes careful consideration when taking on hobbies that end up being a lot of work. My main hobby project is my game The Day After. While I haven’t perfected the practice, I think I’ve gotten a decent discipline when it comes time to hit Projects Night. Continue reading “How to have a productive projects night”

The Day After Dev Report #11 – Hedge Maze

Have you ever found a note written by yourself months ago? How it’s unmistakably you, but you have no idea what it means or why you felt it was important at the time? That’s basically the living reality for inhabiting any long-term, big project. It’s that curious combination of familiarity but novelty, like walking through a hedge maze I’m regularly surprised by Past Brett when writing The Day After, and mostly in a good way. It doesn’t make the progress swift, though.

Symonds Yat Maze

Continue reading “The Day After Dev Report #11 – Hedge Maze”

Slight Repurposing

At the risk of eliciting cries of “Oh ya mug!” I’ve made a change to my projects. Whereas before I was steaming away on Kung Fu Chronicles (aka Kung Fu Legends aka that-Kung-fu-game-you’re-making), I’ve shifted projects and priorities around. I’ve discussed before some of the game engine stuff I had been working on. As a proof of the ontological argument (or Omnipotence paradox), I had created parts of my game engine that were so awesome and featureful that even I had no idea how to use them. 🙂 So I was stuck.

I have also mentioned before that I was working on a board game called The Day After. Brief synopsis: You’re part of a band of survivors after a weird cataclysmic event, and should co-operate so that you all get to rescue… but is co-operation always in your best self-interest? The idea of The Day After was to make something in the vague genre that Arkham Horror lives in, but do it better. My main criticism with Arkham Horror is that with all the tokens, characters and special rules, it’d be better realized as a video game. Anyway, I’ve done most of the alpha design for The Day After, but was finding it slow to put things onto even prototype cards and get it all working as a cheap-ass board game to foist upon my unsuspecting friends. I wasn’t sure about a bunch of rules, or any of the numbers, amongst other concerns. Prototyping it for quick trial play was taking longer and a lot more work than I expected.

Late last year when I was brainstorming ideas, I tripped over the idea of testing some of the game elements by programming a dumb Monte Carlo simulation of the rules and run millions of test games to see what needed balancing. It was a great idea, but I realised to properly simulate it, I needed to put in certain AI routines. For example, to be rescued you need to achieve some goal (eg, restore power), signal the rescue (eg, with a radio) and get to the rescue spot. To get virtual characters to jump through these hoops they needed some basic planning or pathfinding, which sounded like too much work for just testing.

Anyway, I was talking about these issues with my mate Alex who floated the idea of programming it up as a game for prototyping, focussing on having debug capabilities to rewind games, tweak numbers and continue. Due to the way he phrased it I had the brilliant idea to make The Day After into an actual video game. It was a simpler project than Kung Fu Chronicles, but would provide me with a simple framework for testing out game engine ideas. I think I’m okay at general game design, but my game engine design experience is almost non-existent. By programming something simple, I could bootstrap my way up to smashing the block I had with Kung Fu Chronicles. Plus it could serve as a nice fundraiser for my other projects. I still would like to turn it into a physical board game, but that can be later along when the rules are more refined. Plus I can give the video game a board game aesthetic (like Dangerous High School Girls In Trouble!) which simplifies and unifies graphic design.

I’m doing much better with this as my primary project. Already I have a better events system, game loop and general approach to objects. When my girlfriend goes on holiday for a while I’m going all-out on my projects. Hopefully I can get The Day After and my long-suffering novel Breathe into much better states. I’ll keep you guys posted on how it goes.