Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1412116 Posts in 69451 Topics- by 58491 Members - Latest Member: tzdevil

June 28, 2024, 03:56:16 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsCogmind (sci-fi robot-themed roguelike) - BETA RELEASED
Pages: 1 ... 27 28 [29] 30 31 ... 71
Print
Author Topic: Cogmind (sci-fi robot-themed roguelike) - BETA RELEASED  (Read 242205 times)
Kyzrati
Level 10
*****



View Profile WWW
« Reply #560 on: July 26, 2015, 05:30:46 PM »

Hehe, I will continue releasing for a year or more, so no worries there =p
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #561 on: July 28, 2015, 12:04:39 AM »

Roguelike Development with REXPaint
[Cross-posted from the devblog here--follow link for better formatting and light-on-dark style.]

I mention REXPaint a lot on this blog. This is not coincidence, nor because I created it. It happens to be an incredibly useful piece of software for roguelike development!

REXPaint is an in-house tool I developed in 2013 shortly before resuming work on Cogmind. It has since been made freely available for other devs, artists, players... anyone who might need a powerful and user-friendly ASCII editing program. After two years of using and updating it, I'm pretty familiar with how to take advantage of its features for roguelike development, and would like to provide a little guide to ways REXPaint can make your life easier.


Features
First, an overview of what REXPaint can do:
  • Edit characters, foreground, and background colors separately
  • Draw shapes and text
  • Copy/cut/paste areas
  • Undo/redo changes
  • Preview effects simply by hovering the cursor over the canvas
  • Palette manipulation
  • Image-wide color tweaking and palette swaps
  • True-color RGB/HSV/hex color picker
  • Create multi-layered images
  • Zooming: Scale an image by changing font size on the fly
  • Built-in image browser
  • Extreme image compression (far better than png)
  • Exports to PNG, ANS, TXT, CSV, XML, XPM, BBCode
  • Skinnable interface
  • Load custom fonts
For gifs showing many of these features in action, see the features page on the REXPaint blog.

As you can see, it's a fully-featured paint program, albeit focused on manipulating ASCII images. It turns out that interface, maps, and art, all three separate elements in other games, are unified in roguelikes that embrace the ASCII aesthetic. Thus a single editor like this can benefit work on many different aspects of a traditional roguelike.


Mockups
In the early stages of game development you have the design and mockup phase. One of the nice things about creating a roguelike is that with the right editor you have an extremely reliable way to preview what the game will look like even before building a prototype! Any visual element from UI and maps to text and art can be accurately drawn and assessed for the right layout, colors, and overall "feel."


The original Cogmind primary UI mockup, as drawn in REXPaint. (click for full size)

Some earlier Cogmind mockups have been mistaken for screenshots, because there's no way to tell the difference! (Sometimes I have a mockup displayed on my desktop and click on it to interact before realizing it's not actually the game =p.) Of course, to achieve this effect you'll have to load your game's custom font into REXPaint. (Or use one of REXPaint's own fonts for your game, which is fine, too--classic terminal fonts are available, as well as many from legacy systems. More fonts are coming in future versions.)

For a developer, being able to see everything as it will be / as you want it can be very motivating, especially as it gives you a clear goal to aim for and reduces the need for tedious trial-and-error design.

Even after there's a working prototype, and really all throughout development, there's often a need to add new features and UI elements. These can be drawn from scratch, or better yet expand upon the original mockups to save time and ensure compatibility. With Cogmind I design many related parts of the interface in a single image, using multiple layers to store each one. Any given layer can be hidden/revealed to show how different elements interact. The top layer is for annotations.


Multi-layered mockup--overlaying the original image with some data windows and the hacking interface (all handled in REXPaint). (click for full size)

Eventually you'll build up a little library of convenient reference material. Coding the UI is so much easier with a pixel/cell-perfect representation at hand.


Art
Not every roguelike needs ASCII art, but those that use it can definitely benefit from a tool like REXPaint. Rather than hard code art into the source or rely purely on text files, it's much more efficient to use a dedicated tool designed to streamline the creation process, then import the results into the game at runtime.

In terms of organization, there are a couple different ways this can be achieved. The most straightforward method would be to simply draw each piece of art in its own image. REXPaint is equipped to facilitate this approach, since it includes a built-in image browser which enables you to quickly swap between different images for editing, comparison, or copy-pasting. (Tip: Ctrl-tab is a new hotkey that instantly swaps back and forth between the current and most recently opened image. Great for frequent inter-image work.)

Depending on your workflow, the one-image-per-asset approach could quickly become unwieldy once you have more than a handful of small assets, so another method is to create "ASCII spritesheets." This borrows the concept behind asset storage for most pixel/texture-based games, and it's what I do with Cogmind.

Related assets are grouped into fewer image files, and the game knows how to find and extract specific images it needs. Cogmind currently has two different types of spritesheets (adapting to what seemed like the most convenient method for each situation): even-distribution spritesheets and irregular spritesheets.

Item art always fits into the same rectangular area at the top of the data window, and as such it's a good candidate for an evenly distributed spritesheet:


A blank item art spritesheet, including macro coordinates for reference. (click for detail)

To create a new spritesheet I just use REXPaint's file browser to copy the blank spritesheet (shift-click), rename the new image, and drop in art (usually drawn on a separate canvas). The game knows that individual pieces of art all use the dimensions 24x10, thus it only needs the "macro coordinates" of the image for a given item in order to find that art.


Excerpt from a spritesheet ("swep": special weapons), and above that you can see how art is referenced by file name and coordinate in data files. (Typing in the item name isn't necessary, but it's nice to have for reference.)

Machines can be of any size and the game must know exactly what area they occupy, so for those I went with a free-form spritesheet wherein each image is enclosed by a very faint rectangle. Pieces of art can appear anywhere in the file--just give the game a rect's top-left coordinate and it will automatically measure the width and height of the rectangle to extract the art within:


A subset of non-interactive machines, together with the part of their data file that indicates their art offset coordinates.

Animation & Post-Processing
REXPaint does not natively support image animation. Theoretically you could manage it by using a different layer for each frame, or putting frames adjacent to one another in a spritesheet, though without a way to preview the animation in program (or export it as an animated gif) it's probably of limited use.

For my own projects, I prefer the greater flexibility of handling animation in code/scripts. Cogmind's new title screen is an example of taking a multi-layered ASCII image from REXPaint and applying procedural animations to it.


Cogmind title screen animation.

Read more about the title creation process here.

For a more basic example of post-processing, see this spritesheet excerpt containing low/mid-level fabricators:


A subset of interactive fabricators.

Notice that they're all gray, though in game interactive machines always appear in color so they stand out from other machines. Just as you can recolor sprites and textures using color keying or shaders, you can also consider recoloring ASCII foregrounds/backgrounds or even altering glyphs. And this is after they've been imported into the game. This way I only care about the relative brightness of the glyphs--colors for specific machine types can be set elsewhere, and changed easily.

Formats
You may notice that the above images tend to have a lot of unused space as far as spritesheets go. I'm not worried about wasted space in these spritesheets, since they compress extremely well.

REXPaint's native format, saved with an ".xp" extension, is highly compressed and squeezes even the most massive images to negligible size. The format specification is openly available (see the manual, Appendix A), so anyone willing to read and decompress binary files can take advantage of this format in their own games. There's even some code you can reference: REXPaint user /u/BaconSoap has kindly open sourced his C# RexReader for importing .xp files; for online use, /u/chiguireitor has written a Node.js module to load and draw REXPaint sprites; there's also the Rockpick library for Clojure users, by /u/aaron_ds.

If you'd prefer to work with text files, REXPaint can just as easily export .csv or .xml files (as well as unicode .txt, but that strips all color data). The drawback to text files is they lack compression and therefore take up quite a bit of space despite being easier to read in. In any case, .csv is the best text option.


A file size comparison across all export formats currently supported by REXPaint--this one for the 69x28 title screen shown above (image dimensions are in cells, not pixels).

Useful Tricks
In my past year with REXPaint I've come up with a number of time-saving practices that might help you, too.

Setting up the right workspace environment can speed things up immensely. For example, early on while working on item art concept sketches I realized that it was a real pain to find some of the glyphs I frequently used from the default CP437 layout. Numbers and letters are easy enough, but most of the items use a line art style, and the many different orientations of lines are ordered pretty randomly and even blend together in the spritesheet. So I created an art "worksheet" and redrew the glyphs in a more understandable orientation at the top. RXPaint's right-click-to-copy interface makes accessing the needed lines much faster:


Copy-pasting glyphs to draw a Gatling Laser. Much easier than finding them in the grid to the left.

I can just copy that worksheet as a base when starting a new set of images.

Later when I began adding color to the concept images and developing Cogmind's color schemes, I added those schemes directly to the worksheet as well. Drawing palettes onto the canvas itself is just as easy as using the actual palette since you can always right-click to copy a color. (It's arguably even better, since you can do a few things that aren't easy with the normal palette, like copying entire sections of colors and moving them together.)


Cogmind's item color pairing reference (indicates primary and highlight color).

That's not to say the actual palette is useless. Besides supporting unlimited numbers of palettes, it provides lots of additional functionality like image-wide swaps, color shifting, and saving colors from the RGB/HSV/hex picker.

If you do start (or are already) using REXPaint, I highly suggest skimming the manual's complete list of commands, since the UI's lack of any kind of submenu interface means there is no way to discover advanced features--on that list you'll probably discover some very useful functions you didn't know were available...

The three most common REXPaint features I use for my own work:

1. The aforementioned copy-selection-by-right-click tool. I love paint programs that have this feature, since you're commonly reusing the same colors (and/or in the case of ASCII, glyphs) which can often be found much more close to where you're editing than the actual selection area of the UI. In REXPaint in particular, this feature copies only what elements you have active (e.g. glyph/foreground/background), so you also have the option of selectively copying only parts of the source cell.

2. Foreground and background colors can be shifted left or right based on their palette position via a Shift- or Alt-click. So by setting up your palette correctly, i.e. order shades in rows, you can first draw in gray or some other single color, then tweak the shading as necessary.


Painting the Gatling Laser drawn above, then tweaking foreground color brightness. Notice the color selector automatically shifting in the palette.

3. An easy way to test out different colors throughout an image is by using single color swaps. Shift-clicking on one palette color and then on another switches all occurrences of the first color throughout the image. (REXPaint supports full palette swaps as well, but this feature is more convenient.)


Fast color swapping in REXPaint.

Final note: If like me you end up using REXPaint for a lot of different purposes, it can help to have multiple copies in parallel, each with their own appropriate config and loaded fonts.


Multiple Cogmind development copies of REXPaint.

Additional reading: For more information, check out the art-related posts below.
(continued in next post...)
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #562 on: July 28, 2015, 12:04:55 AM »

(...continued from previous post)

Maps
Roguelike maps are most often procedurally generated, at least in part. Some roguelikes use one or more static maps, which can be drawn in REXPaint and imported into the game. A far more common practice than fully static maps is merging bits of static content with procedural maps.

As I've explained before, I think there are lot of advantages to integrating hand-crafted components into procedural generation algorithms, and REXPaint is one tool for creating those hand-crafted areas. In fact, I already wrote an entire post on prefabs in Cogmind, so I won't rehash all that content here.

The basic idea is that you can draw a specific area how you want it to look, even storing additional static data where it belongs, like using a combination of glyphs and foreground/background colors to represent terrain, props, mobs, objects or other map features. This information can be split up into multiple layers for convenience, and contain markers referenced by some external text file which further describes the map's contents. (Check out the post linked above for images and details.)

On the topic of mapping, I also use REXPaint to design layout parameters that inform the procedural generation of Cogmind's maps, but those are too spoilery to share here Wink

Future Feature?
For Cogmind the prefab editing method described above is sufficient, but I've considered one possible extension to REXPaint that would make roguelike map work even easier. The idea is to integrate named objects (and maybe even some related data?) directly into the map itself. At best this could essentially take the place of the external text file used for Cogmind's prefabs.

This would be a major extension of REXPaint's functionality (taking it beyond pure image editing), so I would want to get it right, requiring that I have my own test case to guide implementation. Cogmind isn't quite complex enough to warrant developing this feature, but one of my future games just might be. Of course, this feature must also be conceived as a generic solution that isn't tied down to some specific game.

Anyway, if you might want to use this feature, let me know in the comments so I can add you to the small but growing list of interested devs. Another new way to discuss features and interact with other users is via the dedicated board on the recently opened Grid Sage Forums. Feel free to leave comments here or there if there are any other features you'd like to see in REXPaint. I may do another release within the next few months.


Sample Projects
So obviously I'm using REXPaint for my own projects (currently Cogmind and X@COM), but what are others doing with it?

A good number of roguelike devs know about and use the program, though many roguelikes never see the public eye (or take a very long time to reach it) so most of the downloads have yet to lead to any concrete games.

One notable exception is Kerosene Thunder, an air combat roguelike by Pishtaco over on TIGSource. His first mockup was drawn in REXPaint earlier this year:


Kerosene Thunder mockup (click for full size).

And he's drawing the planes in ASCII, too:


Starfighter from Kerosene Thunder demo

It's still in the early stages, but I tried the first tech demo and it has the makings of what could become a very cool game. You can see more recent screenshots in the forum thread.

I know many other roguelike devs actively using REXPaint for their projects, but haven't seen much of their work yet. If you are a developer using REXPaint for your game, let me know in the comments or elsewhere! (The only requirement is that it must be linkable and display screenshots I can easily find and pick from.) At some point I will make a dedicated page showcasing all such games.

REXPaint has also been picked up by some forum game GMs and players to visually map what's going on, mostly in boards frequented by roguelike players (ex: DF/C:DDA forums). I hadn't thought of that when making REXPaint, but it's a pretty creative and useful idea Smiley.

Some artists have also picked up REXPaint just for fun. Among them DragonDePlatino, maker of the DawnLike RL tileset, used it almost like a pixel art program to make this dwarf:


Dwarf by DragonDePlatino

And here's Zelda the Roguelike (a mockup):


Zelda the Roguelike, by qbicfeet.

Bonus: Some ship mockups for a modular ASCII shmup I was prototyping last year:


The shmup that wasn't to be.

See more art in the REXPaint gallery.

Since I began releasing ANSI versions of REXPaint, about a fifth of downloaders target that, which would be for those interested in drawing traditional escape-code ANSI art (.ans files). No one from that particular scene has shown me anything yet, though.

If you have used or are using REXPaint for your own art, maps, mockups, or other project, drop a note in the comments to tell us about it! (Better yet, show us!)


Alternatives
I won't claim that REXPaint is the best option for everyone needing a tool like this. Some of the other options might work better for you, so check them out, too!
  • ascii-paint (2009): The first modern ASCII editor, by Shafqat Bhuiyan and libTCOD roguelike library creator Jice.
  • ASCIIPaint (2010): An ASCII editor written in flash--somewhat slow and not easy to use, but it's the first and only one I tried out when looking to make some ASCII art, thus it's the editor that convinced me I needed to make my own Wink.
  • ascii animator (2011): Ben Porter's fork of ascii-paint that expands the interface to add support for animations and gif exports. Definitely check this out if you want to make animated ASCII art.
  • advASCIIdraw (2013): This one is a little more like raster art programs than your normal ASCII editor. It supports multi-cell brushes, making it a better choice for large pieces of art with varied content. Unfortunately it comes with a serious drawback: there is no undo/redo feature, which is extremely important for any kind of editor--not because people make mistakes, but because it encourages experimentation. Lack of an undo function is a pretty big barrier to "efficient creativity."
  • Playscii (2015): A very new open source option with a rapidly expanding feature set. I haven't tried this one before so I can't offer any opinions; check out the website for details.
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #563 on: August 16, 2015, 04:34:33 AM »

For a while now I've been working on traps, which are now mostly done (expect a design analysis and lots of info on Tuesday).

Here's a quick recording of me triggering a trap, much to the dismay of its owners:


I've also been participating in the weekly seed runs, and during the latest one made this frame stop compilation while taking out a squad with a big old missile:
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #564 on: August 16, 2015, 10:10:46 AM »



Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #565 on: August 16, 2015, 04:53:20 PM »

All devs know that explosions and screenshake are where it's at!
Logged

ernanir
Level 2
**


Hello World


View Profile WWW
« Reply #566 on: August 16, 2015, 06:55:17 PM »

you probably my top one inspiration when it comes to determination
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #567 on: August 16, 2015, 07:18:05 PM »

Passion is the key to indie survival Coffee

I wouldn't have made it anywhere near where I am now without several metric tons of determination, since on the technical side I can't math my way out of a box. It's all just a means to an end--fulfill that vision!
Logged

ernanir
Level 2
**


Hello World


View Profile WWW
« Reply #568 on: August 16, 2015, 07:43:24 PM »

Passion is the key to indie survival Coffee

I wouldn't have made it anywhere near where I am now without several metric tons of determination, since on the technical side I can't math my way out of a box. It's all just a means to an end--fulfill that vision!

well said.
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #569 on: August 17, 2015, 01:29:00 AM »

Cogmind development reaches 3,648 hours:
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #570 on: August 17, 2015, 04:26:27 AM »

Dude, that's almost a straight line. You are DISCIPLINED man.
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #571 on: August 17, 2015, 04:40:24 AM »

It's the only way to tackle an epic project, even more so when going it alone :D

I've got lots more detailed development stats, but I've been planning to wait until 1.0 to show them in full, when I think they'll be even more meaningful and interesting to analyze. That will also include a more in-depth analysis of this graph. For example you can see a few small plateaus for the first 1.5 years since I occasionally took a week or two for a trip or to do a quick freelance job, but since January this year it's pretty much always moving upward since I'm not taking on any other work. No time now that I have a responsibility to put everything into Cogmind!
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #572 on: August 17, 2015, 05:28:42 PM »

Traps
[Cross-posted from the devblog here--follow link for better formatting and light-on-dark style.]

Traps. Right, that'll be easy. Design a handful of spaces that when stepped on by the player cause any of a number of effects. Just a couple days of work.

Or not.

That might be the case with traps in most roguelikes, but not Cogmind traps. Two weeks later, they've been heavily integrated into many aspects of the game--map generation, hacking, particle effects, sound effects, object labels, off-screen event resolution, FOV code, pathfinding, prefabs... in total traps added 1,202 lines of code to the source, a 1.83% increase. Then of course there was the huge number of tests to run to make sure all these things were operating normally, especially in the context of other macro systems.

Traps were not a part of Cogmind's original design, and as recently as one month ago were still an afterthought on the "maybe one day" list. In a change of direction I decided to completely remove another feature slated for early alpha implementation in favor of traps, because I believe they can serve to somewhat satisfy players seeking a greater variety of interaction with the environment, in addition to their other benefits.


Background
Cogmind's game design is very much focused around robots and parts, a principle most important on the map where the intent is to avoid cluttering it with too many disparate categories of objects and therefore symbols. A side-effect of this focus is a relative lack of chances for unique environment interaction. You have destructible terrain and exploding machines, but dozens of other features are packed away into interactive machine interfaces, out of sight. No chests, no altars, no pools of liquid, and no fountains. Not that most dungeon crawling roguelikes thrive on environment interaction--mobs and items are generally much more important than furnishings and terrain features--but Cogmind's expansive and open map layouts can make it feel even more barren than its counterparts. Personally I think interactive machines already offer quite a lot in terms of dynamic environment manipulation (with still more functions planned), but can understand the desire to physically see more elements out there on the map itself, and have a greater variety of distinctive objects to interact with.

I don't want to stray too far from the guiding philosophy here by adding a ton of unique objects to the environment, but within the context described above traps do offer a nice package in which to provide more of those "interesting terrain features"--they're static, compact, varied, and visually unobtrusive. In fact, they're so unobtrusive they're invisible! Tongue

On a gameplay level, traps provide alternatives for stealth builds (anyone inclined, really, but those who don't have as much space to spare for combat gear benefit the most) to deal with hostiles. They also create additional challenges in the form of preventable but not always predictable events. More on trap effects later.


Appearance
We'll start by taking a look at traps' appearance in game.

For ASCII I went with my first choice and instinct, the '^' common among traditional roguelikes. There really wasn't any question about that until I decided that all traps would be floor-based and I thought that '_' might be an appropriate alternative. However, an underscore is both less obvious and lacks the same precedent; it also simply doesn't look at interesting, or menacing. Sorry, underscores, but carets are menacing in their pointiness :D


Spot the traps in these classic roguelikes.

Regarding underscores, one might imagine that a "less obvious" glyph would be a good choice to represent traps due to their nature, but in a turn-based non-twitch game about making decisions based on the full extent of available knowledge, punishing players for not being able to notice something on the map is a poor design choice. Not that players are likely to miss visible traps at first, anyway. They've been integrated into the auto-label system so you get a nice pop-up on discovering one:


Auto-labeling a trap on detection, right behind a door.

Rather than create a new label category, for which there'd be no room in the interface, I simply merged them with what were "enemy/ally" labels, renaming the categories to "hostile/friendly." After all, traps are simply immobile friends or enemies Smiley


Scan window and auto-label categories update.

In line with earlier talk of avoiding map clutter, all traps are represented by the same symbol, a caret. The only difference between them is color.


All current types of traps, seen here in the testing sandbox.


The tiles version of traps has only just reached the concept stage, and isn't in game yet. Above are multiple WIP samples (remember Cogmind's tileset is handled in grayscale), but the single-symbol-for-all-traps approach holds true in that mode.

This doesn't mean that you only have color to rely on (especially important for color-impaired players, but there are so many traps and a limited set of colors that even I can't always distinguish certain traps). Manual labels can be called up to get a quick overview of the terrain:


Calling up manual labels for "Hostiles," which includes some traps I've spotted.

One of the interesting obstacles to trap design was incorporating them into the map alongside items. As a rule, to simplify the map viewing and interaction only one object can occupy a space at a time (excluding robots, which can stand on anything except machines). Normally traps are unseen/unknown to the player and we can't have dropped items avoid those locations, so what happens when the player discovers a trap while an item is sitting on it? The only options here are to either destroy the item or move it. Naturally the latter makes a lot more sense, and while it's still not entirely logical, Cogmind doesn't aim for hyper-realism, anyway, much less where that would interfere with player convenience. It's a good enough solution, handled by pushing all items away from the trap rather than even more unrealistically teleporting the blocking item to the nearest available spot.


Item shifting due to trap detection.


Distribution
Traps are organized into groups called arrays, which can be manipulated as a whole through nearby terminals, but are triggered individually. An entire array will consist of the same type of trap. Traps are found in a variety of layouts:


Sample trap array layouts, by category.

Layouts are not entirely predictable, but in most cases an array is composed of more than one trap, so strategically speaking even if you get on the bad side of one trap (e.g. it chops your leg off), you can assume there are more nearby and theoretically seek out the rest then use them to your advantage... unless you have absolutely no way to detect the others (maybe later!), or were unfortunate enough to trigger a bomb that blew them all up =p

Trap counts are particularly difficult to balance across Cogmind maps. Too many and the player would be absolutely forced to carry a reliable way to detect them; too few and they become an occasional annoyance that the player will rarely even bother to consider. This is a major reason for organizing them into multi-trap arrays--groups of traps are a lot more meaningful in the big picture where the idea is that players can use traps against the enemy. Even though traps might not be hugely abundant in most areas after I err towards the latter "distribute fewer rather than more" approach, players who ignore that possibility for a while then suddenly take a hit from one trap still have the option to find a way to reprogram the rest, at which point the one hit could have been worth it.


Triggering
A trap is normally triggered when a robot moves over it, though triggering isn't a certainty. The chance is based on the form of propulsion used. Flying over a trap will only be detected 20% of the time, while rolling over it in treads is 100%, with varying degrees in between. (There are also some other interesting circumstances that trigger traps, not to be revealed here.)

Stasis traps, designed to catch unauthorized fast movers, use the opposite chance (ex: 100 - 20=80%). And as you can see, rolling around in your tank will trigger every single landmine you're unlucky enough to encounter (if you're not actively practicing detection and avoidance). To compensate, treads (and to a lesser extent, legs) are getting an integrity boost, which I think they needed a little bit of anyway to further offset the fact that their slow speed essentially forces a fight with any hostile that spots you. At the same time, slower movement also has the advantage of greater opportunities to locate traps while moving through an area.

Faster forms of movement get a separate chance to evade already triggered traps when using maneuvering thrusters, though it's funny how this doesn't really help if you triggered a massive explosion Tongue

On the UX side, traps do not trigger in the exact moment you step on them--there is a 360ms delay during which an alarm sound plays. The same sound effect is used for all traps, and the reason for the delay is two-fold:
  • 360ms is a very short period, but it creates a moment of suspense during which you aren't sure exactly what's about to happen. (Slightly longer would be better for suspense, but too annoying in its potential to slow actions.)
  • More importantly, this provides feedback as to the cause of what's happening. It makes extra clear that an explosion, for example, isn't the result of a robot blasting you from around a corner. Sure this information can be gleaned from the log, but good UI design provides redundant feedback through multiple channels.

Well, that escalated quickly.

Triggered traps leave open ground that is then repaired by engineers to normal concrete floor.


Detection
Unlike most roguelikes where you may have just one or two ways to detect traps, in Cogmind there are many methods:
  • Built-in sensors give a small chance to detect each trap in view each turn
  • Carry one or more active structural scanners to increase the chance
  • Hack terminals, in the same way that looking for hidden doors works
  • Nearby allied Operators will detect those in your field of view
  • Pick up a non-expired Operator data core
  • Blast a wide area of ground with explosives--any surviving trapped areas will stand out among the rubble because they are better reinforced
There are also several "non-detection" alternatives that let you know traps are nearby before having revealed them, including triggering another trap in the same array, or simply seeing trap-related hacking options appear in a terminal interface (only listed if there are actually traps near the terminal).


Handling
Once you've detected traps, there are also multiple ways to deal with them:
  • Rewire them individually using a Datajack (improved results when done in combination with hacking utilities)
  • Blow up the floor, or set them off with an EMP (these work even if you haven't found the trap--just annihilate everything)
  • Take another route, or make one--most areas are accessible via multiple paths (sometimes through hidden doors), and if not you could excavate a tunnel of your own
  • Hack terminals to disarm or reprogram entire trap arrays at once

Hacking nearby trap arrays via terminal commands.

Traps converted for your own use, triggering when a hostile passes over them, will oscillate on the map:


Aw yeah, these traps are MINE. Now I just need to find some enemies to lure over here... (or keep it as a convenient area to retreat to)

To make controlled traps more predictable and therefore more useful, it is assumed that in reprogramming them you also raised their sensitivity to dangerous levels, such that they will always trigger regardless of the robot's propulsion type. You're welcome Smiley


Effects
Like items (parts) in Cogmind, the goal with trap effects is to be more than simply direct damage and increasingly large numbers. There is a very small amount of "number increasing" going on, while the majority of traps rely on unique effects to differentiate themselves (or in the case of damaging traps, at least unique aspects to their damage, like a special side-effect or different damage:AOE:falloff ratios for explosions that impact their tactical implications). Now that I think of it, there aren't even any traps that simply do direct damage to the robot stepping on them without some other effect.

So sure we have basic landmines, because explosions are satisfying (admittedly more so when an enemy is doing the triggering), though we mostly have other effects like slicing off parts or setting off alarms. In fact, I say "traps are done" but the effect of one in particular is not--its special effect alone will take an entire week to complete. Yes, it's a bit of feature creep, but I feel it adds some very interesting possibilities to the game, as it's far more than just a regular trap. I will neither confirm nor deny what this trap does--just wait for the next release and find out for yourself :D

Another important consideration in trap effect design was ensuring that most are also useful to the player in some way, while not being altogether deadly when triggered accidentally. There are even multiple types of traps you may want to step on and trigger under certain circumstances! How's that for interesting Wink. This plays into the idea that traps should fully serve their new role as a multi-use terrain feature.

In the end, it makes more sense to think of "traps" as an optional new resource to use against the enemy. Yes they can damage and maim you, but for the experienced player their presence is a net positive. For those that you do trigger, however, none are trivial. Unlike other roguelikes where traps are either pointless (e.g. you can 100% recover from their effects immediately after triggering one) or deadly (they can kill an unprepared character in a single hit), in Cogmind there is no recovery until you reach the next depth--an important rule underpinning much of the game's mechanics--and traps are nowhere near powerful enough to kill you unless you were almost done for, anyway. (The ALMOST_DONE_FOR status is best avoided, by the way!)

To conclude, here's a nice new way of rewarding pursuers for their tenacity:


Luring the enemy into their own traps pisses them off, by the way :D

Okay, one more. Much to the enemy's chagrin, here I step on a heavy explosive while they're in mid-assault:


Just another perk of being a bigger badder robot than they are.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #573 on: August 17, 2015, 11:51:52 PM »

Traps. If there ever was an area of game design that was hard to get right, it's traps. And then you decide to include them late in the design stage? Madness. MADNESS, I SAY! Screamy

Seriously though, this looks really well thought out. Maybe I won't tear my hair out.
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #574 on: August 18, 2015, 12:07:25 AM »

Completely agree! I decided to leave out the diatribe about traps generally sucking in games, much less roguelikes with permadeath Tongue

Despite all the considerations that went into this, at the end of last week one evening while just thinking over them after they were about done I started to get increasingly panicky that I'd made a really wrong move here. I wasn't even planning on adding any more major mechanics at all, and then along came this... a bit too sudden for something so big.

By that time it was too late, since I'd already sunk the time into it, and after calming down (= slept until next day) I went over the design and made sure they were even easier to both spot and take advantage of--that's when I added in the chance of detection even without any gear, and the fact that once you've reprogrammed them there's a 100% chance for hostiles to trigger them (so they're extremely reliable).

Having done a bit of playtesting, I can say I think they'll be a generally welcome addition.

Still, Screamy

(I also didn't mention another aspect of their distribution: You won't really start finding much in the way of traps until the mid-game.)
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #575 on: August 31, 2015, 05:56:53 PM »

Alpha 3 is here, and brings with it a completely new mechanic: Traps! You won't find so many in the early game, but by the time you start making your way through the Factory they'll present an interesting challenge and can even become useful tools as well.

Combined with the many balance tweaks and other changes, Alpha 3 will play somewhat differently than earlier versions. Below I've highlighted what I believe to be the most important features you need to know about, but it's probably a good idea to skim the whole list, anyway Wink

For a visual summary of a few of the new features, see here.

(As usual, if you haven't already, remember to use the form linked in your original download email to provide the name you want to use in game. Attribution/names are added with each major release.)

Notice: This month we will be holding a major tournament. You don't have to be the best (or even good) to win something, and there will be ongoing achievements and multiple leaderboards, so prepare for some semi-competitive fun Smiley. Stay tuned for news on that.

The full Alpha 3 (0.10.150901) changelog:

* NEW: Traps!!! (including many ways to detect and handle them as well as use them against enemies)
* NEW: Auto-label system identifies discovered traps
* NEW: Multiple trap-related terminal hacking commands
* NEW: Maneuvering Thrusters give a chance to dodge triggered traps
* NEW: Structural Scanners have a chance to detect traps within field of view
* NEW: Allied Operators within 20 spaces of you identify hidden traps in your field of vision
* NEW: Active melee Datajacks can be used to reprogram known traps (bump them, as with robot rewiring)
* NEW: Hacking Suites and related (hacking strength) utilities provide a bonus to rewiring disrupted robots and reprogramming traps
* NEW: Dynamic Insulation Systems can prevent the effects of shock/surge traps
* NEW: Transmission Jammers block the signal sent out from alarm traps
* NEW: Stasis Cancellers reduce or nullify the effect of stasis traps
* NEW: Expanded manual with a new section about basic trap mechanics
* NEW: Trap-related score records
* NEW: "Special Map" (outside regular Complex 0b10, but not a normal branch)
* NEW: 6 new robots (mostly confined to special new area for now)
* NEW: 9 new weapons (mostly confined to special new area for now)
* NEW: 2 new armor types
* NEW: K-01 Serfs (Workers) in Factory dispose of disabled robots
* NEW: Part rejection caused by system corruption blocks move commands for 500ms
* NEW: Manual includes a section explaining "Advanced UI" display features
* NEW: Press Left/Right keys to switch topics in manual
* NEW: Enter/Up/Down keys all close context help window for stats
* NEW: Double click/press same inventory sort button/key to reverse the sorting order
* NEW: Options menu option descriptions also automatically shown in keyboard mode (on selection)
* NEW: Save files have their own versioning system, meaning games-in-progress can be compatible with small/hotfix releases
* NEW: Any Signal Interpreter can identify where adjacent exits lead
* NEW: Overheating robots have a chance to be destroyed by critical meltdown each turn
* NEW: Heat from volleys now averaged over each of the duration's turns rather than front-loaded
* NEW: Some terminal hacks increase in difficulty with each previous success on same floor (notably Purge Threat)
* NEW: Fabricators and Repair Stations play item drop sound effect when releasing items/containers
* NEW: All supporter names registered since Alpha 2 added to in-game list (see Credits menu)
* NEW: All item-attribution names registered since Alpha 2 added to the item collection gallery
* MOD: "Enemies/Allies" buttons renamed to "Hostile/Friendly", now also label known traps
* MOD: Direct "Local Emergency Access" terminal hack doesn't show unless there are applicable doors within range
* MOD: Direct "Purge Threat" terminal hack doesn't show unless there are threat records to purge
* MOD: Attempts to escape from a Stasis Beam take one full turn rather than basing on propulsion speed
* MOD: Attempts to escape from a Stasis Beam no longer incur resource costs
* MOD: Slightly reduced patrol sizes in upper half of main complex
* MOD: Reduced ally effect on security level by halving threat modifier
* MOD: Item labels for prototypes append rather than prepend rating asterisk, to match parts list info mode format
* MOD: Cannot swap places with disabled/inactive allies
* MOD: Manually seeded games always skip the tutorial map even if you haven't played it three times
* MOD: Map object labels on cursor hover blocked when status window open (same behavior as item info window)
* MOD: Map object labels on cursor hover no longer shown during attack animations
* MOD: Entering targeting mode clears all visible map labels
* MOD: Moving clears all manual map labels
* MOD: Part rejection caused by system corruption no longer possible unless standing on an open space, and never rejects storage utilities
* MOD: Reduced rate of map data loss due to system corruption
* MOD: A portion of individual randomly placed items more likely to be of higher rating
* MOD: Lowered by 33% the threshold beyond which less agressive AI-controlled robots (e.g. Grunts, Sentries) stop firing due to overheating
* MOD: Allied system corruptions split from general robot corruptions in score list
* MOD: All non-light power source integrity +50%
* MOD: All tread integrity +100%
* MOD: All leg integrity +50%
* MOD: All machine explosion damage +50%
* MOD: Replaced H-55 Commando's Hpw. Shotgun with Gauss Rifle
* MOD: Total heat shown in volley window reflects new heat distribution mechanic, displaying per-turn value rather than total
* MOD: AI patrols move in tighter groups
* MOD: Optimized AI to reduce realtime turn length
* FIX: Crash on pressing a letter corresponding to a previous hack during the machine hacking UI close animation [framweard]
* FIX: Maneuvering Thrusters and Reaction Control Systems always dropped chance to be hit to 10% [Mando]
* FIX: Pressing 'f' in mouse mode entered fire mode but would disregard auto-target settings if you'd clicked on any target to fire before [Happylisk]
* FIX: Crash on entering targeting mode while in mouse mode and last target had moved outside viewable map but remained within view of an allied drone
* FIX: Crash on pressing F4 to toggle the log before new/saved game finished loading
* FIX: Manual world seed wasn't properly applied when starting a fresh game (suicide-restart no longer required)
* FIX: Stasis Beam escape difficulty wasn't properly based on robot size as intended
* FIX: Enemy move time miscalculation (slow enemies will be much easier to lose now, fast ones much more difficult)
* FIX: Log message on knockback referenced "Cogmind" (inconsistent with other messages)
* FIX: Pressing a map object label key (1~4) while in mouse mode and cursor hovering over a labeled object blinked label rather than reloading all
* FIX: Game over screen would indicate a successful score upload even if the connection failed
* FIX: Score sheet kill streak records were inaccurate, and far beyond their actual number
* FIX: Score sheet "Sessions" count was counting each autosave as a new session
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #576 on: September 07, 2015, 06:39:09 PM »

Here we have a few balance tweaks and trap-related improvements, in preparation for the Alpha Challenge 2015 event which should begin in about 24 hours assuming I can finish preparations today. The announcement will go out through all the usual channels, including the in-game news system.

(Note: From now until the event start, all score uploads will be ignored during the transition to the new leaderboards.)

The full Alpha 3c (0.10.150908) Tournament Edition changelog:

* NEW: Warning message and sound effect feedback before stepping on a known hostile trap
* NEW: 5 more metrics recorded on score sheet
* NEW: Added mention of accuracy cap (95%) and lower bound (10%) to the manual
* MOD: Robot meltdown frequency decreased significantly
* MOD: Slightly weakened effect of blade/segregator traps
* MOD: Blade/segregator traps ignore all storage/container parts
* MOD: Med./Lrg./Hcp. Storage Unit mass increased
* MOD: Programmer dispatch frequency varies less wildly
* MOD: Improved descriptions for Signal Interpreters, Terrain Scan Processors, ECM Suites
* FIX: Misdirection caused by system corruption failed to redirect (broken by Alpha 2) [Adraius]
* FIX: Unidentified prototypes in your inventory at the end of a run were listed as an ID'ed prototype [Adraius]
* FIX: Player names and manual world seeds including spaces weren't fully read from config file
* FIX: Armor Integrity Analyzers were only sometimes working as intended

Saves are not compatible with 3b.
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #577 on: September 08, 2015, 06:30:39 PM »



Announcing Alpha Challenge 2015!

THE Cogmind Alpha event has begun--leaderboards, achievements, prizes! (And no, you don't have to be great, or even good, to win something--but it helps Tongue)
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #578 on: September 09, 2015, 03:03:43 AM »

That's one way to collect beta feedback Tongue
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #579 on: September 09, 2015, 03:56:24 AM »

Haha, true. I've really got all the feedback I need for now, more than I've got time to act on, anyway. But it's fun for everyone, and honestly a huge portion of Cogmind's players love data, so that's part of the collective fun, too Grin

This is something I promised since even before alpha launch, something I wanted to do because it was really fun with the group I did this with back during the 7DRL. It was smaller scale, but everyone enjoyed it and kept asking for more--of course at the time I wasn't planning on doing any more with Cogmind so nothing else ever came, but ever since returning to it the plan has always been to run another tournament!

We'll probably get a nice blog post out of it, too. Something about metrics :D
Logged

Pages: 1 ... 27 28 [29] 30 31 ... 71
Print
Jump to:  

Theme orange-lt created by panic