[comp.sys.amiga.tech] Architecting a remote dungeon

cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) (06/08/90)

Off and on I am in the process of architecting a program that will
generate 32 X 32 X 32 dungeons. (Dungeon's don't have windows)

The overall goal of the program is to generate 32 interesting levels,
each with a "maze" which has at least one start point and one end point
which ends in a stairway to the next level. The resulting dungeon
should be readily compressable to something on the order of 64K to
128K bytes. 

Eventually, I will begin populating the dungeon with "intelligent"
(ie other users) beings and "dumb" monsters which are mostly 
fixed strategy automatons. The plan is that one or more people
could share a copy of the dungeon database and explore it together.
Each machine that was participating could generate 0 or more monsters
that would be present in all replica's of the dungeons. 

Overall dungeon construction is fairly well understood. Walls are
composed of "bricks" which are 2 units wide, 1 unit high, i unit
thick. People have the same approximate dimensions but are vertical.
Hallways are 2 units wide by 2 units high. (two person objects could
stand abreast in a hallway.) Each "space" is 2 X 2 X 2. 

Ideally "person" objects would consist of 4 views each of 2 subgroups.
Subgroup A is the "body" subgroup and it has a front, left, right, back
view, and subgroup B is a "head" subgroup and it too has a left
right front back view. Position information of a person consists of
a structure as follows :
	{
		u_char		DX, DY; /* Dungeon "square" */
		u_char		spos;	/* Position in square , 9 possible*/
		u_char		bvec,	/* body vector (pointing direction */
		u_char		hvec;	/* head vector. */
		u_char		wvec;	/* Weapon vector */
		u_short		pid;	/* Person ID */
	}
8 bytes / person allow an update rate of people to be 10/second at 
1200 baud. 

The idea being that someone could use something like Dpaint III to design
a brush or Animbrush to represent them that would be cross loaded when they
"entered" the dungeon, then other people "in" the dungeon would see this image. 

Open Issues : 
	I don't know what resolution the display should run at (probably
	320 X 200 with lots of colors)
		
	Should prescaled (and possible antialiased) views be generated
	of people so that the display algorithim can use something like
	hbitmap = People[pid]->Views.head[hvec][distance];
	bbitmap = People[pid]->Views.body[bvec][distance];
	BBMRP(rp, hbitmap, ...);
	BBMRP(rp, bbitmap, ...);

	Given a "view" on a lores screen of about 32 X 64 for the body
	and 32 X 32 for the head at "point blank" range. That would
	only be 2460 bytes/person/distance. Or about 12K/person for
	precomputed image data. (max distance 5 which is from the back
	of one square to the back of an adjacent square.) Of course
	people/monsters not on the current level could be swapped to
	non-chip ram. 

	Protocol on the wire. Use DNet or a MIDI "net" ? 

	I feel we could probably use the Robotron type controls to move
	around (ie two joysticks, one to move one to look)

	Illumination, anyone got a good torch algorithim ?

Other Ideas : 
	
	Players that "exit" the current session turn to stone in the
	dungeon until they return.


Plans :

	The first goal is to get a dungeon generator built that will
	create a dungeon and allow someone to "fly" through it (
	basically view it from any angle). At the same time some
	sort of storage format for the dungeon will need to be
	defined. (a new IFF FORM ? :-))

Anyway, if anyone is interested in contributing either formally or 
informally to the project let me know and I'll set up a mailing list.
It tends to run in spurts so don't expect miracles. :-)


--
--Chuck McManis						    Sun Microsystems
uucp: {anywhere}!sun!cmcmanis   BIX: <none>   Internet: cmcmanis@Eng.Sun.COM
These opinions are my own and no one elses, but you knew that didn't you.
"I tell you this parrot is bleeding deceased!"

jesup@cbmvax.commodore.com (Randell Jesup) (06/08/90)

In article <136840@sun.Eng.Sun.COM> cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) writes:
>Open Issues : 
>	I don't know what resolution the display should run at (probably
>	320 X 200 with lots of colors)

	Probably

>	Should prescaled (and possible antialiased) views be generated
>	of people so that the display algorithim can use something like
>	hbitmap = People[pid]->Views.head[hvec][distance];
>	bbitmap = People[pid]->Views.body[bvec][distance];
>	BBMRP(rp, hbitmap, ...);
>	BBMRP(rp, bbitmap, ...);

	This sounds like a good use for gels (since they also preserve
background, etc).  Otherwise you need to redraw the background, or use
BMBMRP, which causes horrible flashing, or use the blitter directly.

>	Protocol on the wire. Use DNet or a MIDI "net" ? 

	Or SANA.  Go to Dale's talk at Devcon, if you're going to be
there.  (SANA = Standard Amiga Network Architecture, which the Amiga
Network working group run by Dale has standardized on.)  Of course, this
assumes Matt or someone feels like making DNet (or whatever) SANA
compatible.  It has the advantage that this could run over local ethernet,
TSSNet, arcnet, local parallel hookup (with wrapper), whatever.

-- 
Randell Jesup, Keeper of AmigaDos, Commodore Engineering.
{uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.cbm.commodore.com  BIX: rjesup  
Common phrase heard at Amiga Devcon '89: "It's in there!"

guineau@wjg.enet.dec.com (06/08/90)

In article <12411@cbmvax.commodore.com>, jesup@cbmvax 
(Randell Jesup) writes:


> >	Protocol on the wire. Use DNet or a MIDI "net" ? 
> 
>  	Or SANA.  Go to Dale's talk at Devcon, if you're going to be
> there.  (SANA = Standard Amiga Network Architecture, which the Amiga
> Network working group run by Dale has standardized on.)  Of course, this
> assumes Matt or someone feels like making DNet (or whatever) SANA
> compatible.  It has the advantage that this could run over local ethernet,
> TSSNet, arcnet, local parallel hookup (with wrapper), whatever.

Is there documentation on SANA available?

---
W. John Guineau   			guineau@wjg.enet.dec.com
Digital Equipment Corporation
Marlboro MA. 01752

swarren@convex.com (Steve Warren) (06/08/90)

In article <136840@sun.Eng.Sun.COM> cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) writes:
>Eventually, I will begin populating the dungeon with "intelligent"
>(ie other users) beings and "dumb" monsters which are mostly 
>fixed strategy automatons. The plan is that one or more people
>could share a copy of the dungeon database and explore it together.
>Each machine that was participating could generate 0 or more monsters
>that would be present in all replica's of the dungeons. 

                             [...]

This is a great idea!  One problem - this could conceivably kill off
a poor innocent adventurer if some friends pop in, monsters in tow, then
all pop out, leaving the poor guy to fight off the monsters they brought
with them!  Maybe the monsters should leave whenever a player leaves.

>	Protocol on the wire. Use DNet or a MIDI "net" ? 

How about parnet?  That would give you more bandwidth if you needed it...

>	I feel we could probably use the Robotron type controls to move
>	around (ie two joysticks, one to move one to look)

That works well.

>	Illumination, anyone got a good torch algorithim ?
>
>Other Ideas : 
>	
>	Players that "exit" the current session turn to stone in the
>	dungeon until they return.
>

Might be fun to let people "teleport" out of the dungeon temporarilly,
rather than turning to stone.  If two people side-by-side quit together
their stone bodies would block the hallway.

I would like to be on your mailing list.

--
            _.
--Steve   ._||__      DISCLAIMER: All opinions are my own.
           v\ *|     ----------------------------------------------
             V       {uunet,sun}!convex!swarren; swarren@convex.COM

cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) (06/09/90)

In article <12411@cbmvax.commodore.com> jesup@cbmvax (Randell Jesup) writes:
>	...  Go to Dale's talk at Devcon, if you're going to be
>there.  (SANA = Standard Amiga Network Architecture, which the Amiga
>Network working group run by Dale has standardized on.)  ...

[I won't be at DevCON :-( but I will be a dad :-). ]

I'm a little bit confused about this. Since Commodore is using SVR4
for the base of it's AMIX product, why not use the TLI interface 
which is standard in SVR4 to help developers maintain applications
that work both under AmigaDOS and UNIX ?


--
--Chuck McManis						    Sun Microsystems
uucp: {anywhere}!sun!cmcmanis   BIX: <none>   Internet: cmcmanis@Eng.Sun.COM
These opinions are my own and no one elses, but you knew that didn't you.
"I tell you this parrot is bleeding deceased!"

dale@cbmvax.commodore.com (Dale Luck - Amiga) (06/09/90)

In article <136932@sun.Eng.Sun.COM> cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) writes:
>In article <12411@cbmvax.commodore.com> jesup@cbmvax (Randell Jesup) writes:
>>	...  Go to Dale's talk at Devcon, if you're going to be
>>there.  (SANA = Standard Amiga Network Architecture, which the Amiga
>>Network working group run by Dale has standardized on.)  ...
>
>I'm a little bit confused about this. Since Commodore is using SVR4
>for the base of it's AMIX product, why not use the TLI interface 
>which is standard in SVR4 to help developers maintain applications
>that work both under AmigaDOS and UNIX ?
>

The TLI stuff is only a shell over one of the SANA layers. It is just
similar to BSD sockets or whatever libraries are used to write Mac
network applications or DEC VMS applications.

The stuff that sits underneath the interface library is based on exec
devices and ioreqs. This will mean than tli based programs as well as
bsd socket applications can coexist in the same box since the underlieing
interface is common and reentrant, just like all good devices.

I am looking for a volunteer to develop a TLI library along with
the socket library I already have to see if we are missing some critical
functions that are necessary to support TLI properly. Having a TLI based
application you want to port to the Amiga is probably a good start.

Dale Luck
Commodore-Amiga, Inc.

dillon@overload.UUCP (Matthew Dillon) (06/11/90)

>>	Protocol on the wire. Use DNet or a MIDI "net" ?
>
>	Or SANA.  Go to Dale's talk at Devcon, if you're going to be
>there.  (SANA = Standard Amiga Network Architecture, which the Amiga
>Network working group run by Dale has standardized on.)  Of course, this
>assumes Matt or someone feels like making DNet (or whatever) SANA
>compatible.  It has the advantage that this could run over local ethernet,
>TSSNet, arcnet, local parallel hookup (with wrapper), whatever.

    I've got the disk, but whether I can find the time or not .... its
    up in the air (Re: DNet)

				    -Matt

--

    Matthew Dillon	    uunet.uu.net!overload!dillon
    891 Regal Rd.
    Berkeley, Ca. 94708
    USA

new@udel.EDU (Darren New) (06/11/90)

In article <102904@convex.convex.com> swarren@convex.com (Steve Warren) writes:
>Might be fun to let people "teleport" out of the dungeon temporarilly,
>rather than turning to stone.  

A friend of mine designed something like this a while ago. The players would 
turn to stone, but if they (say) left their packs open, or held a wand in their
hands, other player could come along and steal stuff. Also, the sysop played
as a large silver dragon which was usually a statue but could occasionally
seen walking down a cross-corridor carrying a stoned player in its mouth >:->

If you could be robbed while you were stone, I would think most people would go
and hide in a concealed place while not playing or use some sort of intangability
spell (which was easy to obtain in my friend's dungeon, since it worked both ways).

>I would like to be on your mailing list.

Me too!                -- Darren

cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) (06/12/90)

I wrote : 
>	Players that "exit" the current session turn to stone in the
>	dungeon until they return.
>

In article <102904@convex.convex.com> swarren@convex.com (Steve Warren) writes:
> Might be fun to let people "teleport" out of the dungeon temporarilly,
> rather than turning to stone.  If two people side-by-side quit together
> their stone bodies would block the hallway.

Au contrair. There is nothing preventing another player from picking up a 
'stoned' player and moving him/her. In fact, if you had sufficient strength
you should be able to wield the other player like a stone club. This of
course has interesting ramifications when the player "returns". Another use
for statues is that if you and a buddy are carrying one apiece you could
set them up to block the hallway and protect your "rear" while you fight
a forward action. Throwing one would probably pretty effective too but 
given their "weight" you might not send it very far.


>I would like to be on your mailing list.

That you are ...


--
--Chuck McManis						    Sun Microsystems
uucp: {anywhere}!sun!cmcmanis   BIX: <none>   Internet: cmcmanis@Eng.Sun.COM
These opinions are my own and no one elses, but you knew that didn't you.
"I tell you this parrot is bleeding deceased!"