Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411423 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 12:55:30 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsCogmind (sci-fi robot-themed roguelike) - BETA RELEASED
Pages: 1 ... 39 40 [41] 42 43 ... 71
Print
Author Topic: Cogmind (sci-fi robot-themed roguelike) - BETA RELEASED  (Read 236502 times)
Kyzrati
Level 10
*****



View Profile WWW
« Reply #800 on: September 05, 2016, 05:22:01 PM »

Finally Alpha 11 will collect all the player's past scores in a single summary file, a feature I should've added a while ago. I'd been waiting to do it together with the eventual scoring data overhaul, but that can't come until about 1.0, and this was requested (again Tongue), so it's now a thing.
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #801 on: September 06, 2016, 05:52:31 PM »

All FOV-external exit discovery scenarios now label those exits (e.g. hacking/scanners/drones):


(Been doing some little features lately while I pause new map development to work on my presentation for the Roguelike Celebration next week.)
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #802 on: September 12, 2016, 05:18:40 AM »

Ability/Effect Systems and Scripted Content
[Cross-posted from the devblog here--follow link for better formatting and light-on-dark style.]

While most roguelikes include basic attack and defense mechanics as a core player activity, the real challenges are introduced when gameplay moves beyond bump-combat and sees the player juggling a more limited amount of unique resources in the form of special abilities, magic, consumables, and other effect-producing items.

Just as they challenge the player, however, the architecture behind these systems often imposes greater challenges on the developer. How do you create a system able to serve up a wide variety of interesting situations for the player without it turning into an unmaintainable, unexpandable mess on the inside?

It's a common question among newer developers, and there are as many answers as there are roguelikes, worth talking about here because it's fundamental to creating those interesting interactions that make roguelikes so fun.

An increasing number of roguelikes are based on flexible entity component systems, though being born of a combination between my old 7DRL and an even older project built before I even knew what ECS was, Cogmind's abilities are each handled by one of two unrelated implementations: hard-coded routines and trigger-condition-effect scripts.


Hard-coded Routines
The first system is dead simple, the kind of thing that you get when starting a game as a 7DRL Tongue. But, as a result it's also the kind of thing unlikely to cause problems down the line as long as we don't ask too much of it. (That was also the point of starting with it, to make sure nothing would go wrong on the technical side of things in the seven days available to create the game.)

In short, there are a set number of hard-coded item abilities, and an item can choose at most a single type of ability, and also assign a single integer to its variable which usually serves to define the degree of that effect. There are 95 such abilities in all:


Hard-coded effect descriptions, as seen in source, where "effectData" is the integer referred to above. I removed a couple dozen abilities due to huge spoilers! (I rarely hard-code text like this, but here it was easier to build some strings that require formulas, e.g. many of those not shown.)

If you look closely you'll see that some are essentially identical to others, differing only by a single factor and thus not really providing additional unique behavior. That reveals one of the limitations of this kind of system: it doesn't well support slight variations on the same behavior without extra code, something that a more complex system could do quite easily.

But once an effect is coded, it is extremely easy to assign it to an item, making ability-based items quick to design and compare.


List of sample items with their effects (other stats cropped).

So these abilities/effects are each checked for wherever they're relevant in the game code, be it when an actor is attacked, attacks another actor, scans an enemy, is hit by a thermal weapon, is caught in stasis, or any number of other things happen. Some are simply direct modifiers to a stat, affecting it only while the given item is active (this was another 7DRL decision--values are always referenced by the function that calculates on the fly all factors which can affect them, rather than allowing changes to modify a value which is stored and referenced, since those changes may need to be undone later and that's... really annoying and complicated).

In terms of behavior it has maximum flexibility since we can code whatever we want Smiley. Examples:


Testing for the jamming effect.


Applying matter savings modifier.


Applying thermal absorption effect.

So far I've only mentioned items, but there are a smaller number of non-item abilities handled in a similar manner. Instead of ability types they are sourced from what are called "traits," of which an object can have as many as necessary (but realistically most objects have none, some have one, and a very few have multiple traits).

Traits originally existed as part of the more involved second system I'll be describing below, but in some cases it was convenient to borrow them in circumventing the old one-effect-per-item rule instated for the 7DRL, and also giving hard-coded abilities to actors and terrain (to which item abilities cannot be applied, but traits can). Despite the name, these aren't always passive characteristics, and in terms of implementation they're not really any different from item abilities (defined by way of a type-and-variable pair), so I won't go into them here.

In addition to being simple to implement, the straightforward nature of this approach somewhat carries over to the player side as well--each ability-capable item can generally be expected to provide one unique benefit, a benefit that only differs from similar items by a single variable, making them easier to analyze and compare (fairly important in a game where you can equip up to 26 items at once Tongue)


Comparing the Improved and Advanced versions of the Weapon Cycler. Technically opening the info window isn't even necessary to do the comparison, since their respective effect values are also displayed in the parts list's info mode right on the HUD.


Scriptable Ability Objects
The other system is much more powerful, and while it's still rooted in hard-coded effects, once the necessary code is in place it can be used as the basis for a much wider variety of possibilities.

This system was actually inherited from X@COM, where it enabled me to turn the X-COM world and ruleset into a fantasy game[/url] complete with classes, unique special abilities, dozens of spells and special items, etc[/url], all in a few weeks. And that was purely via scripting--no code at all! (Around that time, other non-coder types were also able to use it to create interesting behaviors for their own mods.)

So with that as a background, let's look at the underlying system that makes it possible...

"Abilities," or really anything that might affect something else, are a type of (C++) object that can be created and assigned to one of the game's primary object types (Entity, Item, Prop). The assignment occurs manually in external data files, and, more importantly for a dynamic system, at runtime by other abilities as the game is played.

Abilities themselves are defined in their own data file, by listing the trigger, conditions, and effects of each. Those individual components are all defined in source code, and work as follows:

Triggers

An ability first specifies what causes it to take effect. Only one such "trigger" is allowed per ability, and at relevant points in the code the engine explicitly checks for applicable triggers. Example triggers include being hit by a projectile, moving next to a prop, a robot exploding, seeing another robot... dozens of them.

Effects

A single ability may have any number of effects, or multiple effects from which only one or some are chosen (the list can be weighted if desired). Example effects include dialogue, explosions, modify AI behavior, spawn an object, convert one object into another... again dozens of available possibilities.

Conditions

The key to making the whole system dynamic is conditional application of triggers and effects. Those which only happen under certain conditions allow for much more interesting possibilities, as well as more complex relationships and behaviors. Thus both triggers and effects may be controlled by any number of conditions. Examples include a random roll, robot stat values, distance from player, what faction a robot belongs to, how long the ability itself has been in existence... (once again, many dozens Tongue).

Multiple conditions can be combined on the same element with the syntax A|B|C, and there is even syntax for more complex conditionals, like "A|[B|C]" is "A and either B or C". Effects with conditions can also use the "contingency" system, so that a certain effect might only take effect if an earlier effect from the same ability did not occur for whatever reason (one of its conditions failed), or all previous effects failed, or all succeeded, or basically whatever Smiley

To demonstrate all the primary components working together, I'll dissect a single "ability," in this case really an event, that can occur early in the game when you visit the mines:


The MIN_Helper_Spawn script.

This particular ability is assigned to an invisible prop used to facilitate location-based events. PROP_INTERVAL is a trigger checked once every turn for any prop that has one, but in this case there are conditions: it won't be triggered unless P_PLAYER_RANGE is within 10 cells, and its position is also visible to the player (the "(1)", as opposed to (0)). When the player approaches and successfully triggers it, as per the SPAWN_ENT effect it will create a new entity (robot), but only if the effect's conditions also pass, which in this case requires that the player not already have a Mining Laser in their possession. This effect, like many others, must specify a number of additional details describing the result, here the NUMBER and type of ENTITY to spawn, its FACTION, and optional values that tell it to FOLLOW the PLAYER and assign it another ability to define future behavior (Min_Helper_Helps1). When this entity appears it also says a line of DIALOG.


The same script in action.

All components (triggers/conditions/effects) might have various data parameters that help specify more about its behavior, such as AI details for spawning actors, the shape of an effect area, how to treat various special cases, and more. There are also generic data values applicable to most all components, allowing any of them to create log messages, particle effects, etc.

On that note, the system is fully hooked into the code-external sound effect and particle systems, so composite content can be created without touching the code at all.

It's also tied into a system of global world state variables, to control the plot and other situations stemming from that--useful for conditions! For example, there is one NPC encounter that only occurs if you destroy a certain group of robots, but you have to get them all, so each one destroyed adds to the global counter, and later when you reach the NPC's location one of its SPAWN_ENT conditions is that counter which must have reached the required number.

Effects may also mark objects with traits (mentioned earlier) that appear in conditional expressions, allowing even more complex relationships that can evolve over time. This application of traits would be more appropriately named "markers" given how they're most commonly used. For example, there are a few special places in the world where an entire section of wall opens up when the player simply approaches. When created, as per its prefab definition each of those positions is marked with a specific trait. Nearby on the ground is an invisible "ability" object that triggers when the player passes by, and the effect is to send out an invisible explosion which checks for that trait on any walls that it hits, which are then "opened" using a particle effect while the original walls themselves are destroyed/converted into floor. Hm, can't demo any of these here because they're all secret Tongue

Even more interesting are abilities that actuaflly assign abilities to other objects, like the Molecular Deconstructor, but details on that bad boy are classified.

If absolutely necessary, for extra special cases the ability system can also hook into unique hard-coded behavior via the SPECIAL effect. When developing the original system for X@COM, I avoided relying on this one since the goal was to allow ability scripts to be able to define just about anything the game was capable of without access to the source (to empower modders), but with Cogmind the more important goal has been to finish the game, while some of the special events have so many wide-reaching consequences that it was deemed too much effort to make the necessary abstractions to further expand the system. Better to hard code and move on. Still, only a tiny percentage of effects are hard-coded, averaging about one per map (compared to hundreds of text-scripted effects associated with objects).

At heart it's really a pretty simple system, but you can imagine the number of possible combinations here is massive, even with only a modest number of components of any one type. So with the right hooks into the code, and a script parser to make sense of a list of triggers, conditions, and effects, this can be used to create some cool stuff :D

A shorter version of this post previously appeared on /r/roguelikedev under the FAQ Friday by the same title, where you can also see how other roguelike developers approach this same topic.
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #803 on: September 20, 2016, 10:11:50 AM »

Roguelike Celebration 2016, the Experience
[Cross-posted from the devblog here--follow link for better formatting and light-on-dark style.]

For years I've wanted to participate in IRDC, but they've always been held in Europe, or as of last year the US East Coast as well. Both destinations are too far away and too expensive for me from here in East Asia, so I definitely paid close attention when news first popped up of a new roguelike event on the West Coast.

Initially the plans for this Roguelike Celebration started out relatively small, however, and as "close" as it was, I couldn't quite justify the cost in both money and time. It wasn't until July that the list of attendees started to grow so quickly that I began rethinking my decision to skip it. Even the original creators of Rogue would be there, and Tarn and Zach Adams were coming, too. Clearly this was becoming an opportunity not to be missed, so I contacted the organizers to confirm I could sign up to do a talk (to make the trip extra worthwhile :D) and bought a plane ticket the next day. It helped that my brother lives across the street from the venue, otherwise adding in the costs of accommodation would've really pushed the limits of my meager budget since I also needed to arrive several days early to at least somewhat get over the effects of jet lag.

So the stars were apparently aligned and I could finally take part in a roguelike event, and actually the first ever video game-related event I've been to.

And the Roguelike Celebration wasn't just "an event." As the list of participants snowballed it turned into the largest roguelike gathering in history, one that it felt great to be a part of, and one of the most amazing experiences I've ever had as both a developer and fan of roguelikes. I got to spend time chatting with Tarn and Zach Adams (Dwarf Fortress), Brian Bucklew and Jason Grinblat (Caves of Qud / Sproggiwood), Thomas Biskup (ADOM), Jim Shepherd (Dungeonmans), Brian Walker (Brogue), Santiago Zapata (Ananias and a zillion other roguelikes), Sabouts and Rogueliker (Let's Players), Gabriel Santos (Stone Story), David Craddock (Dungeon Hacks author) and so many others.

At the end of the day we got a group shot of many of the speakers, devs, and organizers:


Roguelike Celebration speakers, developers, and organizers. (Click for larger size, or get the full-resolution download here, for all your devious Photoshopping needs.)

Not that we took a survey, but it was pretty obvious the average age of the participants (audience and everyone included) was easily in the 30s.


Preparation
Noah Swartz and his co-conspirators did a wonderful job putting everything together over the preceding months, and on the evening of September 16th it was time to check out the venue and prepare it for the next day. This mostly involved moving some tables and chairs around and talking to the volunteers about various tasks to come.

There was no official get-together the evening before, and I wanted to hang out with other roguelike folks if possible, so I planned to wander over there around the time this preparation was likely to happen. Again, it was across the street, so this was quite easy to do Tongue. Except for the fact that I was also planning to meet up with Sabouts on the way (his hotel was right next door), but the last pic I'd seen of him didn't involve a big fuzzy beard, so I didn't recognize him at first and walked right by. (I found him after a few minutes...)

This became a recurring theme at the celebration since many of us had never seen one another (even a picture), and it wasn't exactly small (~200 people), so even someone that you knew must be there somewhere, was probably not all that easy to find.


The main room where Track 1 talks were held, as seen the day before. Track 2 talks were in a smaller corner room with bleacher seating, and several hallways connected both of these to the entrance areas, restrooms, etc. Everyone was not in the same area at the same time.

We saw a group of people waiting outside the venue building, and while I recognized Brian from his frequent Twitter pics, he 1) had no idea what I look like and 2) thought I introduced myself as "John" rather than "Josh" (it was somewhat noisy by the roadside). Shortly after that we had to register at the security desk, and then he realized I was the guy he'd been chatting with for a while online Tongue. So yeah, things like this happened a lot--the next day there were plenty of "oh you're [insert familiar name here]!" moments.

Prep also involved Britta and others setting up their atmospheric decorations, including a table covered in NetHack scrolls and many other props,


Roguelike shop?

and walls adorned with posters of giant ASCII characters, or the perfect phrases:


Mind the stairs.


On the main entrance/exit.


Eventbrite generously let us use their offices for a day. (This is not a normal public event space.) Curses on these iceboxes were conveniently removed once all the roguelikers dispersed.


Celebration Day
Even having arrived in the US on Tuesday, come Saturday I was still having problems with jet lag, waking up at 3 AM and just kinda waiting until 6:30 to get up xD. No doubt the excitement also played a part there :D

I headed over as early as I might be able to get in, and hung out inside with Tarn and Zach while attendees started gradually filling up the entryway.


The Roguelike Celebration is about to begin!

There everyone picked up cool shirts, and speakers even got unique shirts:


Such an awesome speaker shirt.

Other roguelike items up for grabs included pins and even @ socks!


Socks of RNG +10 for everyone. And a challenge coin for speakers.

(Designs by Allison Hughes.)

At sign-in everyone got a lanyard ID, but the low-contrast colors and small size did not really serve as an aid to finding people, seemingly appropriate at a roguelike event Tongue. But whatever, it looks good and is a nice souvenir.

Fortunately in my case I had my Cogmind shirt so it was nice to be walking around and have some people recognize me from that, and of course in terms of speakers we could finally identify who was who after their talk. There were certainly those I'd missed for much of the day and only later found--Thomas Biskup and I said as much when we traded places on stage. So many roguelike people!

Overall organization was great, with talks proceeding on schedule and no big hiccups, no doubt facilitated in part by the professional AV help. I was mostly focused on listening to talks and meeting as many people as possible rather than taking pictures, but do have a few random shots from the process that I can share here.


Noah kicks it off.


David Craddock moderating a talk by the creators of Rogue, Michael Toy, Glenn Wichman, and Ken Arnold (left to right). This was the first time they'd all been together in 30 years.


Nicholas Feinberg talks about weeding out boring optimal play, among other topics, in the context of DCSS.


Jim Shepard covers the importance and methods behind maintaining a focused tone throughout a game.


Tarn and Zach Adams pack the room when talking about their early games and inspirations.


Thomas Biskup giving an overview of ADOM's complete development history, from beginning to today.


Brian Walker analyzes approaches for creating good gameplay.

All the talks were streamed live (with around 200 online viewers), and later uploaded to YouTube here. Check them out!

My own talk is

. Also, my slides themselves are actually accessible online as well if you just want to look at pretty pictures rather than watch my ugly mug and listen to that voice--I, for one, refuse to listen xD

I was unbelievably nervous, but apparently I felt it a good bit more than it came through, at least according to what others tell me... My mind was almost totally blank as I talked, which felt extremely odd, and I didn't even reference any of my notes.

It was actually my first ever talk, and I learned a lot in doing it, so I'm pretty sure I could do a much better job next time! Reflecting on it, I should've done fewer slides about a slightly tighter topic, and gone a bit more in depth about each part, since the need to fit so many slides into 30 minutes contributed to my nervous rush. That could've also left some time for Q&A, which would be more fun and makes sense for a live event. I'm so used to writing long articles and packing in everything I can, heh.

Still, I've never been good at talking to crowds unless it's completely spontaneous, otherwise I tend to put so much thought and planning into it that I end up paralyzing myself. Ack Tongue


Blathering on about something. (Photo courtesy of Santiago.)

The best part of the talk was where I didn't have to talk at all, and just showed Cogmind's [now old but still pretty representative] trailer to demonstrate the value of audio, and that went over quite well.

In terms of other content, I took my originally planned talk topic (innovation in roguelikes) and tacked it onto the end of my newer "becoming a developer" topic, giving it an ever-increasing weight until they were about even and essentially became two full talks in one. (I.e. far too much to properly cover.) As important as innovations are, I've never shared the full story behind how I became a developer, and knew it could be inspiring considering my non-professional background, so I really wanted to describe that process. Certainly since the talk I've heard from quite a few people who have been inspired to make a roguelike, so that much is a success.

That said, either topic would've been much better in isolation where I'd have time to provide more explanations, like those found in the notes which I ignored Smiley

Other results from my talk include several interview requests, and selling about 12 copies of Cogmind that day (much better than the average day, which is like 2). In fact, according to friends in the audience, several people at my talk bought Cogmind while I was talking, which I thought was pretty neat (and unexpected). I also heard that some people who would like to use it learned about my REXPaint tool via the talk, so that was good.


After Party
We ended up having to leave the venue earlier than scheduled. 8pm became 7pm, and 7pm became "let's try and shift people towards the doors around 6:15 because everyone will stop every few feet to chat" (yes, we did Tongue). So no time to really play roguelikes or talk much right there after the event ended, but there was an after party at the Thirsty Bear, a bar with a sufficiently RPG-sounding name.


We took over one of the larger upstairs spaces.

Unfortunately a number of people had to retire for the evening, but we still had a good turnout at maybe a few dozen. There the majority stayed for at least a couple hours of meandering conversations, and I really enjoyed talking to Thomas (ADOM), Brian (Brogue), Santiago (Ananias) and others.

But it wasn't entirely roguelike talk. Meeting in person is great for allowing conversations to drift through all manner of related subjects, and they did. On that note, everyone I met throughout the entire event was of course wonderful, as can generally be expected in the roguelike community.

I wasn't on social media all day since I don't use a phone (thus being away from my computer thrusts me back to the days of 90s communication), but there was apparently quite a flurry of online activity throughout the event, and it was fun to browse that the next day. Among the discoveries:


Garret Voorhees did some speaker sketches Smiley


I brought a shirt for Jeremy Mitchell because the Cogmind logo was changed to its current ASCII form in 2015 at his suggestion. Many thanks for that.


The End?
Is this only the first of many Roguelike Celebrations? Everyone sure hopes so. Whether you're a player or developer, I highly recommend participating in the future if possible. It's just so much fun, and an excellent learning experience, to be around so many other people with a shared interest that many of us rarely (if ever) get to share with our everyday IRL friends.

Sure you can still watch the videos, but that misses out on the all the little interactions and conversations that play out through the day. Getting to know existing roguelike internet friends on a somewhat more personal level is also neat.

Many thanks to Noah, Britta, Asheesh, and Allison for putting it together, and Eventbrite for hosting it. Several considerations for next time:
  • The earlier in advance the date and location can be set and announced, the more likely people will be able to attend, especially those of us who are further away.
  • The intermittent notifications/announcements prior to the event could be posted to a news section of the website to see how preparations are progressing, rather than only by email, since a lot of people miss mass emails for whatever reason. (I know I never even received the last one sent out before the Celebration--wasn't found in spam or anywhere, but I heard from someone else that it existed and what it said.)
  • Depending on the potential turnout, a two-day event would be more appropriate (based on the size this year) so it's not so rushed and leaves more time for talk and play aside from the talks themselves.

Keep celebrating those roguelikes!
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #804 on: September 20, 2016, 10:32:47 AM »

Those socks...
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #805 on: September 20, 2016, 06:33:21 PM »

Classy item, I know Smiley
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #806 on: October 01, 2016, 03:51:16 AM »

Tons of new items coming in the next build, meaning I've had the opportunity to do more ASCII art \o/

A new category of items that shall remain unnamed:


Soon to be the most sought after weapon in the game:


And someone reported a bug yesterday whereby the true name of an unidentified item was being revealed simply by attempting to insert it into a Scanalyzer. So I immediately turned that into a feature Smiley. Not something that anyone regularly does in the first place (seeing as how it's gone over a year and no one's noticed this rather obvious issue, found by a meticulous new player we just picked up), but might as well since it makes sense!

Identifying an item by inserting it in a Scanalyzer (normally used to get schematics to fabricate components):
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #807 on: October 02, 2016, 04:01:50 AM »

Maybe it wasn't reported because everyone thought it made sense  Durr...?
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #808 on: October 02, 2016, 05:49:36 AM »

But it didn't actually identify the item :/. The real reason there is that players normally just immediately attach prototypes, and would never wait until there's a Scanalyzer around, or even bother ever using Scanalyzers in the first place... They and other secondary machines have started to become more useful, though, so that is changing, plus there's been an influx of new players who are paying close attention to the lesser details which were perhaps buried under more obvious bugs early on Tongue
Logged

Sustrato
Level 1
*


It's a good day to die.


View Profile
« Reply #809 on: October 02, 2016, 06:02:39 PM »

This game is oozing style, and congrats on getting to attend the Rougelike Celebration. That's a really cool experience to have.
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #810 on: October 02, 2016, 06:06:08 PM »

Thanks, will definitely remember that forever Smiley
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #811 on: October 03, 2016, 01:48:35 AM »

I watched your talk, it was great!
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #812 on: October 03, 2016, 05:08:24 AM »

-_- You mean everything other than the 90% of the time during which I was a nervous wreck? Giggle
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #813 on: October 03, 2016, 06:40:42 AM »

That's just your perception Tongue
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #814 on: October 03, 2016, 06:52:10 AM »

But in hindsight there were so many other/better things I could've said, and I didn't say much of what I wanted to say in the way I wanted to say it Sad

Too bad opportunities like that don't come around so often--had zero practice, but overall was great fun anyway!
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #815 on: October 03, 2016, 06:59:34 AM »

Eh, nobody notices  because they don't know about the stuff you didn't talk about.

If you want to practice speaking, start a vlog
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #816 on: October 03, 2016, 07:17:58 AM »

Ha, I'm so busy I can't even give my blog the same amount of attention I used to! (The thought did cross my mind, though writing is still a better format for what I prefer to do...)
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #817 on: October 03, 2016, 07:23:57 AM »

Well, there's also the screencasting while devving. That can actually be pretty nice; it's basically rubber duck debugging in front of the entire world Tongue
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #818 on: October 03, 2016, 05:13:04 PM »

I've considered that as well, but for two problems: I would never get much done--need to be more efficient than that! And it would involve way too many spoilers Shrug
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #819 on: October 06, 2016, 04:22:39 PM »

Because you can never have too many optional inventory management features, and to solve multiple annoyances in one go, I spent all day yesterday adding a useful new feature: Assisted item swapping!

Press '/' followed by an item's letter to get a list of all valid inventory items for that slot, then press a corresponding letter to swap in the new part.


And that's not all, it also works in reverse, with '/' followed by an inventory number to mark all slots valid for that item (just press the slot letter to attach/swap to there).


And that's still not all--mouse users have access to both features as well by ctrl-right clicking on an attached part or inventory item:


So swapping is now possible without any Shift-Alt combos, and is also much easier for players carrying huge inventories that otherwise require scrolling for interaction.
Logged

Pages: 1 ... 39 40 [41] 42 43 ... 71
Print
Jump to:  

Theme orange-lt created by panic