[HN Gopher] How to make roguelike games in Rust ___________________________________________________________________ How to make roguelike games in Rust Author : agluszak Score : 178 points Date : 2020-01-11 15:13 UTC (7 hours ago) (HTM) web link (bfnightly.bracketproductions.com) (TXT) w3m dump (bfnightly.bracketproductions.com) | darksaints wrote: | Are there any AAA studios using rust yet? I personally think it's | not going to happen any time soon, but I'd be glad to be proven | wrong. | | My theory that it won't happen without some form of inheritance- | like structure. Games, like many forms of simulation, are | inherently stateful and tends to fall hard on the OO-side of the | Expression Problem spectrum. Traits tend to give you the best of | both worlds, but in very important aspect it falls short: the | traits themselves do not have data members. I saw a proposal | where you could link object data members explicitly to data | members that the trait required, which would probably fill that | gap...but I don't think it has gone anywhere. Anybody know what | I'm talking about so I can look up the progress? | steveklabnik wrote: | Embark is a new AAA studio made up of ex-EA DICE folks who are | heavily using Rust. | Pamar wrote: | Ask HN: are there any roguelike games that can be played | (collaboratively) by two players on remote connection? | | Mac OS would be a plus because both me and my friend use mostly | Apple stuff at home. | thoughtpalette wrote: | Steam has a remote play feature now that allows another player | to join a game, even if they don't own it. It's been semi- | spotty. | | I highly recommend Children of Morta for a co-op roguelike. | prutschman wrote: | Mangband (multiplayer-angband) has a Mac OS port of both client | and server: https://mangband.org/ | aaron-santos wrote: | There is a wonderful multiplayer roguelike for the Commodore | 64. https://m.youtube.com/watch?v=ASGn5J9PHbs | otachack wrote: | This is great, thanks for sharing it. I started a Rust project | awhile ago to do something similar but based on a boardgame. It | was fun but I didn't keep up with it. I'll try to get back at it | using this as inspiration! | somesortofsystm wrote: | Yeah, I agree - this is a terrific read, and seems like a nice | way to jump into Rust, a language I am eager to explore .. lots | of strange new idioms, and from the perspective of a rogue- | like, nicely done .. will give me a bit of Rust chops anyway! | Thanks! | AlchemistCamp wrote: | Was it to learn Rust or were you already familiar with the | language? | kris-s wrote: | Are there commercially successful roguelikes that use ascii art | only? Dwarf Fortress is the only one I know of and it's getting | an official makeover for the Steam release. | planetsmashr wrote: | DCSS isn't commercially successful, but I think it has the | potential to be if it went that direction. The tiles version is | probably most popular though: | | https://crawl.develz.org/download.htm | nyolfen wrote: | cogmind has done pretty well even if a bit niche. not pure | ascii but pretty close, like df. really excellent game, as | well. | kris-s wrote: | Looks really cool! | mrmonkeyman wrote: | Not ascii technically but close: caves of qud. | empath75 wrote: | Replacing ascii with sprites is easy to do later. | EamonnMR wrote: | Rogue? | jere wrote: | Both Cogmind and Caves of Qud have optional tiles that look | like little more than ASCII. | | Door in the Woods is ASCII only and has sold ~5,000 copies in | about a month. In fact this game has inspired me to try to work | on a pure ASCII roguelike for my next commercial project. | billfruit wrote: | Caves of Qud comes to mind. | [deleted] | babuskov wrote: | I don't know about roguelikes success (Cogmind comes to mind), | but I can tell you that ASCII games can be successful if you | have a good idea. For example, I spent about 2 months making | Rogue Bit just over a year ago: | | https://roguebit.bigosaur.com/ | | And it sold over 25000 copies so far. | bmsleight_ wrote: | The trailer did not really show me any game play. So I can | not judge it and see if I want to buy. | babuskov wrote: | Showing gameplay would be pointless because 99% of the | gameplay is in player's head, analyzing the code, maybe | even writing some down on paper. If you just look at the | screen, it doesn't make much sense. | | Here, try looking at this gameplay video: | | https://www.youtube.com/watch?v=u4RskXHDLzo&t=183s | | It's hard to pick any point in that 75 minute video that | would be a good trailer material. There's nothing visually | spectacular except some static ASCII art and there's no | surprise mechanics that would draw attention. The game | itself isn't about ASCII art anyway, so having that in the | trailer wouldn't make you learn much. | | But then again, it isn't a game for everyone. It's for | people who are into hacking, computer internals, | binary/hexadecimal numbers or assembly/machine language. | Pyxl101 wrote: | Every game that Zachtronics releases has a gameplay | trailer, for comparison. Perhaps it would be useful to | look at some of those for inspiration: | | http://www.zachtronics.com/tis-100/ | | https://store.steampowered.com/app/504210/SHENZHEN_IO/?cu | rat... | | https://store.steampowered.com/app/716490/EXAPUNKS/?curat | or_... | | I think a gameplay trailer could be made from content | from that video, by stringing together a series of short | clips. Show the player moving around, manipulating | things. Each clip a few seconds in length. Similar to the | trailer for Exapunks, you could display text like "Solve | puzzles" "Manipulate bits" "Hack your way to safety" (or | whatever makes sense). Maybe end with a sequence where | something drastic happens (the player does something and | the whole screen changes), fade to black. | | I think it'd be useful to show the player what the | gameplay is actually like. Sure, it's not for everyone, | but you can still show what it is. | thegeekpirate wrote: | Just to add on to the "not a roguelike" list (it's an | adventure game), Stone Story RPG | (https://store.steampowered.com/app/603390/Stone_Story_RPG/). | umvi wrote: | That's not really ASCII art. I mean it is, but iirc it's | custom shader code in Unity made to _look_ like retro style | ASCII art. So it 's actually way more difficult to make | than a grid of ASCII characters. | flafla2 wrote: | Although I get where you're coming from, I disagree with | the assertion that this makes it "not really ASCII art". | At the end of the day modern terminal emulators use a | graphics API at one point to render characters on the | screen. You wouldn't say that iTerm2 isn't a "real tty" | because it has a metal backend (in this case, iTerm2 is | also using a custom shader to render ASCII/unicode -- | more complex than this game of course). Where do we even | draw the line? Is ASCII art only legit if it can render | natively in a traditional terminal? How about only one | without hardware acceleration? POSIX compliant? Further | down the rabbit hole we could draw a line in the sand at | tty's with no window manager. | | It would still be trivial for the developer to add an | "textshot" feature to export a frame to .txt, so I'd | still qualify it as fitting the ASCII art aesthetic. | giancarlostoro wrote: | Depends if its easier for you to do 3D. I remember when I | found thr ThreeJS ascii shader I had a bit of fun with | it... | aganame wrote: | DF is not commercial yet. Partial list of successful roguelikes | with ascii: | | - rogue - (net)hack - moria, angband, etc | feanaro wrote: | Don't forget ADOM, though it now has graphical tiles too. | boomlinde wrote: | Several commercial versions of Rogue were sold in the 80s. | andolanra wrote: | I said this in a previous comment on a different story, so I'm | going to copy-paste the content of that comment with some minor | edits: | | The bfnightly tutorial is a very good tutorial, but I do want to | warn that it's not always terribly idiomatic Rust: Herbert was | using the writing of the tutorial as a way of practicing Rust, so | there are places where the explanations aren't quite correct and | other places where the code isn't what an experienced Rust | programmer would write. An example that jumped out at me (this | from Chapter 1.7) was the use of &s.to_string() | | which is an expression that could be shortened to just s. | (Specifically, s has type &str, calling to_string() on it | converts it to a String, and borrowing it allows it to be coerced | back to a &str but now with unnecessary copying.) Elsewhere (this | from Chapter 1.2) it has explanations like | | > Copy and Clone allow this [type] to be used as a "value" type | (that is, it just passes around the value instead of pointers) | | which is also not a correct explanation, or at least is a | misleading one: things can still be passed by value even without | Copy and Clone and without any pointers at all. (Arguably, he | meant, "You can share the value without using borrows," but | that's not what the explanation said.) | | That said, all this is nitpicky (and I suspect that Herbert would | be receptive to feedback along these lines--I just haven't had a | chance yet to provide it!) because the tutorial's explanation of | roguelike-writing is still very good, and in fact I've been | following it as a rough guide for writing a tutorial on top of a | different Rust library myself! But I do want to warn about using | it as a model for learning Rust specifically. | a1369209993 wrote: | > > "value" type | | They mean a nonlinear (or nonaffine) type, as opposed to a | affine type - that can only be passed by reference if you don't | want to get rid of it yet - which they would presumably call a | "reference" (or "by-reference") type. It's a correct | explanation, but ambiguous (not misleading, but perhaps | confusing) terminology. | AlchemistCamp wrote: | I recently made one in Rust [1] with Tomas Sedovic's tutorial | with libtcod and he suggested this one as a good next step! | | I'm also excited to see that this one looks wasm compatible. | | 1) https://youtu.be/UKpDNnfiId0 ___________________________________________________________________ (page generated 2020-01-11 23:00 UTC)