Users Editing Games

omegix
05 Jul 2007, 19:35
Does anyone know how to setup Quest so that the users can edit the games?

I'm aware that the users will not be able to use the QDK GUI to edit the games, but perhaps by issuing commands while logged into the game?

Cryophile
06 Jul 2007, 21:17
As far as I can tell, there is still no way for content to be edited in-game. If this were the case, more MUD-like games would likely be around, with the game being designed while running.

Some things can be edited, such as items, rooms, etc., but actual procedures, menus, etc. of that sort cannot.

Elexxorine
09 Jul 2007, 11:36
If you save the game then close it and change the asl code, then load the saved game back up, you'll have all the old stuff done but the game will have different content. This even works in multiplayer games, though there are still a few bugs in it. So that means if you wanted to like update the quest MUD game you'd have to shut the server down, and change the file then restart the server. But it can be done.

Freak
09 Jul 2007, 15:11
That would allow the original author / server to edit the game; it appears he wants players to be able to edit it while connected (which is possible with other systems, such as the one used by IFMud).

Elexxorine
10 Jul 2007, 12:14
You can edit a certain amount within the game, but somethings must be coded outside the game. But changing exits to rooms and such is possible so making new rooms, etc is easy.

Freak
11 Jul 2007, 03:25
But the interesting parts of a game are the programming parts. Quest is very limited as to what sort of code can be written at runtime.

Elexxorine
11 Jul 2007, 09:41
Indeed, perhaps we should ask Alex to put it on his list?

Freak
11 Jul 2007, 19:42
Probably pretty difficult if not impossible as Quest stands; Quest wasn't designed to allow escaping out input, and is not well defined about order of evaluation.

Elexxorine
11 Jul 2007, 20:26
And I don't see what so bad about having to shut the server down for say 10 seconds as you copy over the updated file into the old directory and load it up again. It's not that hard... and you can do it when there's none/very few people playing.

Freak
11 Jul 2007, 20:47
You're missing the point. Your methods allow the person running the server to modify the game. omegix wants to allow a _player_ to edit the game, without having file-level access to the server.

Elexxorine
12 Jul 2007, 09:42
That could be danerous as they could screw the game up.

Freak
12 Jul 2007, 10:55
Again, IFMud allows ordinary players to create rooms / code.

Cryophile
12 Jul 2007, 20:51
Naturally, there are different permission levels, so certain portions can be modified by certain people, and I'm sure if this method were possible you could always have a verification system for certain admins to approve changes before they are put into effect. I don't believe that we'll be seeing this feature without a complete overhaul, though.

MerryCo
02 Aug 2007, 13:01
There are many reasons for wanting to allow users to have constructive control over games. Look at most MUDs. They have a foundation of code and allow users to modify the game live. To me, it's a necessary component of online play. It can be done with Quest. I've had success doing it. You can clone objects, change their placement, modify their description, create rooms, etc. Here is an example of two commands I programmed into my game. A user with a high user control level can run them:


!*******************************************************************************************
! GODCOMMAND [GC] !objcreate object
!*******************************************************************************************
command <!objcreate #object#> {
if exists <#object#> then {
set numeric <true; 0>
repeat until (%true%=1) {
msg <|n[GC] Enter a new name for |b#object#|xb:>
enter <objectname>
if exists <#objectname#> then msg <[GC] Error: |b#objectname#|xb already exists.> else set numeric <true; 1>
}
clone <#object#; #objectname#>
give <#objectname#>
msg <[GC] Object |b#objectname#|xb has been created and placed into your inventory.>
}
else {
msg <|n[GC] Error: Object |b#object#|xb does not exist.>
}
}

!*******************************************************************************************
! GODCOMMAND [GC] !objsetprop object prop value
!*******************************************************************************************
command <!objsetprop #object#, #prop#, #value#> {
if exists <#object#> then {
if property <#object#; #prop#> then {
property <#object#; #prop#=#value#>
msg <|n[GC] Property |b#prop#|xb in object |b#object#|xb set.>
}
else {
msg <|n[GC] Warning: |b#object#|xb property '|b#prop#|xb' does not exist. Create it (Y/N)?>
enter <yesno>
if (#yesno#=Y) then {
property <#object#; #prop#=#value#>
msg <[GC] Property |b#prop#|xb in object |b#object#|xb set.>
}
else {
msg <[GC] Property not created.>
}
}
}
else {
msg <|n[GC] Error: |b#object#|xb does not exist.>
}
}

Cryophile
03 Aug 2007, 16:14
Yes, many things can be changed in game, and new objects/rooms can be done via cloning an object and changing the properties, but the mechanics of the game are unchangeable. You will not be able to add new variables, functions, menus, properties, etc.

I think Im Dead
06 Aug 2007, 06:41
I've been gone quite a while but would just like to point out that it's not at all impossible to have players able to create/edit more than just rooms/objects.

The tricky part is you basically have to either develop an in-game syntax relaying commands to ASL intelligently, which gets very complicated when you start getting into if's & then's, not to mention it would require implementing a fairly in depth text editor/buffer system and there would be no way to bug test without crashing the server.

However, if you were to create an object-oriented template system for creation/editing of any object in the game world, and have everything in game adhere to a similar set of rules, it's entirely possible.

Previously I'd implemented a spell creation system that could do everything from adding stats & effects to objects, to summoning mobs and your default fantasy type crap.

It basically worked off of giving the object a list of X-Number chores to perform, then the script checks the max number, and checks each property from 1-X and performs them in a loop until completion.

It's not easy, it requires a lot of planning, but it's possible and doesn't require anything added to Quest.