Chaosforge Forum

  • April 27, 2024, 22:51
  • Welcome, Guest
Please login or register.



Login with username, password and session length
Pages: 1 2 [All]

Author Topic: Idea: implementation of a KeyMovie variant for faster online Crawling  (Read 16661 times)

TFoN

  • Colonel
  • *
  • Offline Offline
  • Posts: 562
  • Gleefully antisocial!
    • View Profile

Problem is that I haven't found a comfortable link on the Crawl! page, neither to a forum nor to an e-mail address. I'm also suggesting this while not knowing quite how it already works, nor if Crawl [Stone Soup] works in a way similar enough to DoomRL et al.

By using the RNG's state and the player's keyings, the game should effectively be played twice and the same way in both (EDIT(clarity): once on the server and once on the player's) - while using hardly any bandwidth.
Watching a game in progress will work mostly the same way - the viewer will recieve copies of the game's save files at first (likely only the current level's state will be needed, until the player travels somewhere else), together with the RNG's state. After that, barring travel, only the player's keyings will be sent over.

Of course, unless someone can assure this will work, it should be an experimental, non-default mode, possibly only usable by viewers at first, as to not screw-up someone's game.

Also, if this works here, it will pave way for a roguelike MMORPG of huge scope and magnitude!


EDIT: note that this is an official request for help getting this through to someone inside the Crawl! team. If someone could drop a link to here somewhere, or tell me where to drop one, that'd be very welcome.
« Last Edit: January 31, 2007, 04:53 by TFoN »
Logged

BDR

  • Elder
  • Lieutenant Colonel
  • *
  • *
  • Offline Offline
  • Posts: 400
    • View Profile

Stone Soup AFAIK hasn't been updated in... well.. eons (like I said, AFAIK).  The telnet Crawl version has ttyrec videos here (if you don't want to look at my .ttyrec's, erase my name and you'll get the full list of players to choose from), and you can either use this, WinRAR, or 7zip to unpack them, and this to play them.  Of course, if you've got Linux this will be unnecessary... I don't know if there's a way to help Mac users, though. >_>
Logged

Supernaut

  • First Sergeant
  • *
  • Offline Offline
  • Posts: 120
    • View Profile

I had a similar idea for a multiplayer roguelike before but i think it would be DAMN hard to do. You know, the whole coding thing should have to be redone. I think even being able to talk with player while watching him playing would be loads of fun. But multiplayer crawl fx....man this is a dream. Or imagine 2 player cooperative Doom. Maaaaan ;) .
Logged

Kornel Kisielewicz

  • God Hand
  • Apostle
  • *
  • *
  • Offline Offline
  • Posts: 4562
    • View Profile
    • http://chaosforge.org/

Wait, wait, wait, what Ideas? xD
Logged
at your service,
Kornel Kisielewicz

Anticheese

  • Lieutenant Colonel
  • *
  • Offline Offline
  • Posts: 483
    • View Profile

I think he's talking about making a Roguelike into an MMORPG and also having a game recording feature.

Game Recordings will make it into DRL at some point BTW :)

--

TOMENET is an attempt at an MMORLRPG, I only played it for about five minutes but it proves that it can be done.

Personally I think that QuakeRL would be cool.

Or DRL Multiplayer.

Co op, Deathmatch..So good...
Logged

Aerton

  • Elder Chaos Guard
  • First Lieutenant
  • *
  • *
  • Offline Offline
  • Posts: 205
    • View Profile

Quote
By using the RNG's state and the player's keyings, the game should effectively be played twice and the same way in both (EDIT(clarity): once on the server and once on the player's) - while using hardly any bandwidth.

Yeah, it would work. Unless you are using real numbers or something else machine-depended in game logic.


TOMENET is an attempt at an MMORLRPG, I only played it for about five minutes but it proves that it can be done.

It doesn't prove that is can be done playable and fun.

There is nothing particular hard in implementing a network RL compared to a single player one, from the technical point of view. The problem is to make it fun.
Logged

Kornel Kisielewicz

  • God Hand
  • Apostle
  • *
  • *
  • Offline Offline
  • Posts: 4562
    • View Profile
    • http://chaosforge.org/

Yeah, agreed with Aerton. But that brings me to my idea:

I watched the Crawl server lot, and had an idea: Who needs multiplayer anyway??

Let me explain. Roguelikes were made as competetive solo games. As such they were not intended to be "multi-player" but "singleplayer" with he feeling of competition or parallel gameplay. Why do people play on the server instead of their own computer?

1) to have a single score list
2) to watch other people play
3) to have the feeling that they're not alone here

Number 3 is crucial. How does the crawl server achieve that? BONES.

When I thought about that, an idea sprang to my mind... It started with the fun idea -- why not give the ability to use those blank scrolls to write down messages, and the scroll would be saved with the player ghost... then another player could defeat the ghost and pick up the paper and read a message "Dammit, there are tons of killer bees on this level, and they blocked my exit... if you read this, then it means I didn't make it...". Sounds fun?

Well, why not push that idea to the extreme! Why not make a single-player SHARED WORLD roguelike game?? No need to solve time-related problems, as everyone would be livining in the pace they want to. The game would trickyly disallow the characters making changes on the same level, and you would never meet a character in person, but you would constantly witness the effects of other characters doings. Imagine the BONES idea exaggarated to the maximum. Also things like trade between characters via a shop system would be possible. Many, many, many ideas for that I would have, and it wouldn't be too hard to implement... what do you all think? :]
Logged
at your service,
Kornel Kisielewicz

TFoN

  • Colonel
  • *
  • Offline Offline
  • Posts: 562
  • Gleefully antisocial!
    • View Profile

I think you all (with the possible exception of Aerton) misunderstood my main idea: although what you're talking about has to do with the last thing I wrote (well, before the edit), I'm talking about a system to be used for SINGLE PLAYER online play. It has much less to do with multiplayer or game recording, at least for the moment.

If my guess is correct, at the moment there are [relatively] massive amounts of data being transported between server, player and watcher computers, occasionally (or in my case always) causing alot of lag.
If, on the other hand, only the RNG's state and the player's moves are transported between computers, lag will be likely nonexistent.
This should work for the same reason KeyMovies work, where on replay the game is effectively played again, with RNG (which is effectively not so random) giving the same results as it did last time, including level layout, item and monster spawns, damage results and so forth. The game will be played partially on the player's computer (which will require having some game data on it, like the current level), sending moves to the server which duplicates those moves - and therefore the rest of the game. On level travel, new data will be sent to the player (the new level, changes occuring by calculation of turncount etc.), before resuming duplication play. A watcher will be doing mostly the same, though data will only be sent to it - the watcher will recieve level data on connection, and from that point only move data will be recieved (barring level travel), and the game will be duplicated here too. All this may require frequent checksum tests, at least for a while, but also these are minor in size.

Aerton said this requires the game to not have real values in its logic - I haven't looked into the code, but I'm sure this can be managed, even if this will require a [possibly heavy] game mod.
The first things I can think of are magic affinity (at X*1.5*Aff, where X is power up to this calculation and Aff is the number of ranks of this affinity) and ability values (where 17 Int means multiplying power by 1.7). But these can be worked around, assuming they aren't already.

Multiplayer may use this in some way, yes, but for the moment I dare not look that far - I don't even know if this idea, simple in comparison, will work.



While I was writing this Kornel wrote a different idea - sounds bizzare. Ever seen Fight Club? It gives me a "haunted" feeling, like the world around you knows things that you don't. This idea could be incredible, but I suggest making a seperate game which will be designed to contain the unique feel and to augment it.

Kornel Kisielewicz

  • God Hand
  • Apostle
  • *
  • *
  • Offline Offline
  • Posts: 4562
    • View Profile
    • http://chaosforge.org/

Of course it would be a separate game -- the whole game would have to be balanced around that idea. My question is is it worth a try? ;].
Logged
at your service,
Kornel Kisielewicz

TFoN

  • Colonel
  • *
  • Offline Offline
  • Posts: 562
  • Gleefully antisocial!
    • View Profile

As I had said, it could be incredible :)


But sticking to the original topic, as the resident programmer and originator of KeyMovies, do you consider my idea rational and/or usable?

Kornel Kisielewicz

  • God Hand
  • Apostle
  • *
  • *
  • Offline Offline
  • Posts: 4562
    • View Profile
    • http://chaosforge.org/

To be honest I don't get it mostly xD. What is it supposed to achieve? Just a bandwidth reduction? Also note that it would mean that the game would have to be ran on both machines...
Logged
at your service,
Kornel Kisielewicz

Aerton

  • Elder Chaos Guard
  • First Lieutenant
  • *
  • *
  • Offline Offline
  • Posts: 205
    • View Profile

To be honest I don't get it mostly xD. What is it supposed to achieve? Just a bandwidth reduction? Also note that it would mean that the game would have to be ran on both machines...

Yeah, it will reduce bandwidth considerably (But even if you send one byte containing pressed key, a lot more data actually travel across the wire - addresses, packets headers, minimum packet size enforcement, etc)
More important, you can allow observer to use some commands that do not perform any action, such as browsing inventory or character sheet.


Well, why not push that idea to the extreme! Why not make a single-player SHARED WORLD roguelike game? ....

Reminds me of door games on BBSs ten years ago...
I think it can be a fun addition to a single player game, but only if was a good game prior to addition.
Logged

TFoN

  • Colonel
  • *
  • Offline Offline
  • Posts: 562
  • Gleefully antisocial!
    • View Profile

Yeah, it will reduce bandwidth considerably (But even if you send one byte containing pressed key, a lot more data actually travel across the wire - addresses, packets headers, minimum packet size enforcement, etc)
More important, you can allow observer to use some commands that do not perform any action, such as browsing inventory or character sheet.

That's not nearly as much data as is sent right now AFAIK, so it's Ok.

The game running on both machines shouldn't be a problem at all. It seems the games are currently run on the host computer, so there shouldn't be any additional strain on it. The resource consumption on the guest computers, at most the equivalent of running an offline game, should be much more than manageable. The resulting fast play should be well worth those resources.

But consider that if game recording leads to faster online play, then the next step in development should be very interesting indeed. Fact is that Aerton already came up with allowing some watcher intervention, and that's just in the scope of a few of hours.

I'm guessing that if this whole thing is implemented, then yes, a fast, functional, and most of all free (as a drastic reduction in bandwidth requirements would mean much less for the maintainers to pay for), MMORLRPG would be near. And could be followed, or preceeded, by who knows what.

But for all this to happen, it needs to be determined whether or not this idea can realistically work, either now or with some changes.
Here's the run down, so far:
  • Game and save files are present and saved on host.
  • Game data as required will be present on guest(player/watcher). If this is mostly the entire game, then it can certainly be a downloaded copy for offline play - in any event, only keystrokes will be sent to the host, with the exception of checksum tests.
  • On game start/continue (effectively level travel), RNG state and level layout are sent to guest(player) computer, and loaded into the game.
  • Player action is sent to host and duplicated there.
  • If the action is level travel, the new level is created/loaded at host and sent to guest, together with RNG state. Else, host waits for another action.
  • Watchers recieve actions and level travel results from host, as host recieves them from guest(player). Watchers do not send any data back to host.
  • Watcher can intervene, for purposes of inventory, skill and spell list inquiry. Then, either current game data is sent to guest(watcher) by exiting the list, or the game goes on in the background while the list is open (this will require open/close list commands to not influence the RNG, at least for the watcher).

IMO it will make cheating possible on the guest computer, but since the changes won't be recorded into the host's game, that doesn't really matter. It will just make games amusing to watch externally, as the player collides with a wall for no reason :)


EDIT: some minor changes to text.
« Last Edit: February 01, 2007, 07:37 by TFoN »
Logged

Kornel Kisielewicz

  • God Hand
  • Apostle
  • *
  • *
  • Offline Offline
  • Posts: 4562
    • View Profile
    • http://chaosforge.org/

The way you described it it is very prone to cheating (any MMORPG designer will tell you that). Foremost, the player can intercept the sent data and see the level he currently visits xD.
Logged
at your service,
Kornel Kisielewicz

Adral

  • Second Lieutenant
  • *
  • Offline Offline
  • Posts: 180
    • View Profile

Hey lots of ideas here!

I watched the Crawl server lot, and had an idea: Who needs multiplayer anyway??

Let me explain. Roguelikes were made as competetive solo games. As such they were not intended to be "multi-player" but "singleplayer" with he feeling of competition or parallel gameplay. Why do people play on the server instead of their own computer?

1) to have a single score list
2) to watch other people play
3) to have the feeling that they're not alone here

Number 3 is crucial. How does the crawl server achieve that? BONES.

You are forgetting one thing - learning from other players via example and chatting a bit about your game or other people's games, in a place where you know everyone interested is free to take a look at real time at the things you are talking about. It helps to number 3 :)

I find it fun to be able to ask questions, chat a bit, etc, about the games in progress, but I understand many people will find it unnecesay or even boring. That's why there is also an offline version.


When I thought about that, an idea sprang to my mind... It started with the fun idea -- why not give the ability to use those blank scrolls to write down messages, and the scroll would be saved with the player ghost... then another player could defeat the ghost and pick up the paper and read a message "Dammit, there are tons of killer bees on this level, and they blocked my exit... if you read this, then it means I didn't make it...". Sounds fun?

Sounds real fun. Unfortunately seems your idea really didn't "get accepted" at rgrm. But I'd write silly notes for my characters, of course :P

Well, why not push that idea to the extreme! Why not make a single-player SHARED WORLD roguelike game?? No need to solve time-related problems, as everyone would be livining in the pace they want to. The game would trickyly disallow the characters making changes on the same level, and you would never meet a character in person, but you would constantly witness the effects of other characters doings. Imagine the BONES idea exaggarated to the maximum. Also things like trade between characters via a shop system would be possible. Many, many, many ideas for that I would have, and it wouldn't be too hard to implement... what do you all think? :]

Sounds really nice, but can you please elaborate it a bit? What is the plan? What would be changed, and what not? How would we (as players) see that?

-

And TFoN, I'm really sorry but I really don't follow you. Is the idea to play everyone at once on the same levels? Or is it similar to Kornel's (certain actions creat consequences for everyone)? As someone pointed out, there's TomeNET out there already, does it resemble in some aspect what you are proposing?

A MMORLRPG sounds fun, but the execution may well be not fun at all. That's why I'm asking so much, because a fun MMORL would certainly be something to witness and play with abandon. :P

I find the idea really interesting.
Logged
Paranoia is a very comforting state of mind. If you think they're out to get you, it means you think you matter

Glowie

  • IRC-Op
  • Lance Corporal
  • *
  • Offline Offline
  • Posts: 37
    • View Profile
    • Frozen Depths

Or imagine 2 player cooperative Doom. Maaaaan ;) .

I'm not sure if you meant DoomRL or the original Dooms, because the original Dooms can be played in co-op mode with a friend.

Aside from that, I just wanted to say that Kornel's idea about the shared world and bloody scrolls with dying messages is fantastic! I think it could work really well and show the true potential of network roguelikes. I can already imagine dozens of players fighting in the same shared world while chatting on IRC or leaving scrolls for each other in the town. It could also bring the roguelike community a bit closer together. Definitely worth a try if you ask me!
Logged
010000110110100001101001011011000110110001101001011011100110011100101110

TFoN

  • Colonel
  • *
  • Offline Offline
  • Posts: 562
  • Gleefully antisocial!
    • View Profile

Adral - I think you're way off.
Again, I'm talking SINGLE PLAYER ONLINE PLAY, just like Crawl!'s doing now. I'm talking about a method for information travel that will enable *these games exactly*, with nothing new in terms of context, to be played using less bandwidth, so the games will lag less, or if my guess is correct, much, much, much less.
The idea is based on the fact that RNGs aren't random, but are based on certain values. This is counted on with KeyMovies, and I'm hoping it can be counted on here, to give the same results on multiple tries and on multiple machines, being dependent only on the initial value contained in the RNG and on a sequence of keystrokes.


The way you described it it is very prone to cheating (any MMORPG designer will tell you that). Foremost, the player can intercept the sent data and see the level he currently visits xD.

The way I understand it, it is no more prone to cheating than is an offline game. Likely much less, as you can't effectively alter char stats and level design without interacting with the host, nor can you savescum. Yes, the player will be able to access the files which are on his computer at the time, and unless a solution will be found, that's a tradeoff. Possibly, both this method for information travel and the current one can be used, the current one being considered more trustworthy in terms of mortem believability. But for this one problem I'm quite certain a solution can be found.
However, I'm still mostly thinking on the lines of online single player games, so I'm not sure I understand where MMORPG desginers come in.

Anyway, these are the kinds of things that should be discussed and dealt with, so as long as something can be suggested to solve the problem, I'm not too worried.

Another possible problem with this info-travel method might be the player simply playing offline through multiple scenarios, on a copied version of his online game (i.e. using those files that he has to simulate play on that single dlvl), then picking a safe course of action once one has been tested for.
This can be solved by having a modified RNG value being sent over from the host as a response to player action. The modified value will, of course, be the one used on the hosts next duplicated action. That means sending one action guest-to-host followed by an RNG value sent host-to-guest, which is still much less information traveling than there is currently. To prevent the player from "precognating" his one next action, the new value is recieved right *after* the player's next action.
So, it should come out:
  • Player action keyed;
  • Host recieves keystroke; host modifies own RNG; host completes action; host sends RNG modification;
  • Player corrects to modification; player completes action; player action keyed (i.e. back to square one)
« Last Edit: February 01, 2007, 09:39 by TFoN »
Logged

Supernaut

  • First Sergeant
  • *
  • Offline Offline
  • Posts: 120
    • View Profile

I still think that cooperative D&D - like  Roguelike games  would be loads of fun, even though Roguelikes were intended to be Sp. Say what you want, but being able to help your mate and share the experience in dungeon would be loads of fun in my opinion (no i haven't tried Tomenet, but it looks like they didn't make it worth a try ;) )
Logged

Adral

  • Second Lieutenant
  • *
  • Offline Offline
  • Posts: 180
    • View Profile

Adral - I think you're way off.

Yep, I really was. But thank you very much for the explanation, as my head today is not at its better state and I found it difficult to follow all the ideas on the thread :)
Logged
Paranoia is a very comforting state of mind. If you think they're out to get you, it means you think you matter

TFoN

  • Colonel
  • *
  • Offline Offline
  • Posts: 562
  • Gleefully antisocial!
    • View Profile

No problem :P


Now all I need is a response from the Crawl! crew - is this idea in any way useful?

dpeg

  • Private
  • *
  • Offline Offline
  • Posts: 2
    • View Profile

No problem :P


Now all I need is a response from the Crawl! crew - is this idea in any way useful?

I am in the Crawl devteam. IMO, the idea is good. It has two obvious drawbacks:
1) It forces players to have a Crawl at their local machine.
2) The changes to dgamelaunch (not Crawl!) will be nontrivial :)

I consider 1) to be very important. Having the possibility to play Crawl without downloads is very valuable. Hence we'd need two versions of dgamelaunch (one for players with local Crawl and another one for those without). For 2), I think the folks running akrasiac are rather happy everything works as-is. So the whole idea is more of a long shot. BTW, your idea could be applied to all similar online games (e.g. Nethack, that's why it's dgamelaunch to be patched rather than Crawl).

The benefits would be obvious as well. Since everything is running smoothly on akrasiac, I suggest to patiently wait until the Crawl server becomes really big. There will be a time when decreasing bandwidth is worth the trouble.

David

TFoN, did you get a non-debug version by now?
Logged

Aerton

  • Elder Chaos Guard
  • First Lieutenant
  • *
  • *
  • Offline Offline
  • Posts: 205
    • View Profile

1) It forces players to have a Crawl at their local machine of exactly the same version as on server

Minor, but important detail.
Logged

TFoN

  • Colonel
  • *
  • Offline Offline
  • Posts: 562
  • Gleefully antisocial!
    • View Profile

I see. Excellent :)

As you may have read here, we've also considered several other possible drawbacks to this system (mostly regarding cheating potential), so that it should be in addition to, and not instead of, the current system is agreed upon.
I also realize that this system could be implemented elsewhere if it'd work here, but didn't want to jump ahead of myself, 'cause I wasn't sure it would, in fact, work :) Hence my reluctance to seriously consider a MMORLRPG used through it. But if you say it should, then please, spread the word. I could do it myself, but I'll need to first know who/where's best to turn to.

When I wrote about possibly changing Crawl, it was responding to Aerton writing that real parameters would have to not be used, for this to work. I'm not aware enough of the source code, or of how things work in general, to know whether or not real parameters are used in Crawl or if this would even be that serious a problem in the first place.
That said, I'm not quite aware of dgamelaunch either, so that's also beyond me at the moment. If you can enlighten me in any way, please do :)

For now, thanks for letting me know I'm useful ;) , and please keep me posted!


About that non-debug version - that's Supernaut, and I'm not sure if he'd already DLd one.
Pages: 1 2 [All]