# [Haskell-cafe] How to model outer space for a MUD

Michael Litchard michael at schmong.org
Fri Aug 14 22:44:47 UTC 2015

```The octree looks promising.

On Fri, Aug 14, 2015 at 3:41 PM, Michael Litchard <michael at schmong.org>
wrote:

> I'm looking for unbounded but discrete, but I think conal's blog post can
> help me work this out.
>
> On Fri, Aug 14, 2015 at 3:36 PM, Tikhon Jelvis <tikhon at jelv.is> wrote:
>
>> The problem with just modeling things is that certain questions become
>> difficult. For example, it's often useful to know what thing is closest to
>> some given thing, or what a thing's closest neighbor is.
>>
>> Moreover, while there is certainly a lot of space out there, this is
>> Haskell so we can model all of it lazily. That's what Conal's blog post is
>> about: a practical way to lazily model images with no bounds and no
>> resolution limit.
>> On Aug 14, 2015 3:31 PM, "Jeffrey Brown" <jeffbrown.the at gmail.com> wrote:
>>
>>> I would not model space -- there's too much of it -- rather Things in
>>> space. Each Thing has a 3d coordinate (plus more geometric information,
>>> plus more information). Things can be rooms, and things can have position
>>> defined in terms of other things.
>>>
>>> On Fri, Aug 14, 2015 at 3:23 PM, Michael Litchard <michael at schmong.org>
>>> wrote:
>>>
>>>> Well, thinking more about it, I think I want an 8-regular complete
>>>> graph. I've been doodling and came to the conclusion pretty quickly that
>>>> thinking of this space in terms of a grid wasn't quite right. I *would*
>>>> like to only hold data of populated nodes if possible, to model an infinite
>>>> space as David mentioned. I've been looking at fgl to help me think about
>>>> this problem in terms of a graph. I'll think and tinker over the weekend
>>>> and see if I can come up with something more articulate. Not committed to a
>>>> graph, but I want a discrete structure and this looks like it fits the bill
>>>> at the moment.
>>>>
>>>> On Fri, Aug 14, 2015 at 2:00 PM, KC <kc1956 at gmail.com> wrote:
>>>>
>>>>> I agree with Tikhon
>>>>>
>>>>> But a sparse matrix might be conceptually simpler to start with
>>>>> But are sparse matrices easy to implement in Haskell and then is it
>>>>> easy to change the data structure layer on?
>>>>>
>>>>> --
>>>>> --
>>>>>
>>>>> Sent from an expensive device which will be obsolete in a few months!
>>>>> :D
>>>>>
>>>>> Casey
>>>>>
>>>>> On Aug 14, 2015 1:50 PM, "Tikhon Jelvis" <tikhon at jelv.is> wrote:
>>>>>
>>>>>> It depends on exactly what you want to represent and how you want to
>>>>>> do it.
>>>>>>
>>>>>> The first thing that comes to mind for me would be using an
>>>>>> octtree[1], which is the three-dimensional analog of a quadtree[2]. Conal
>>>>>> Elliott has an interesting point about using quadtrees to represent images
>>>>>> in Haskell[3], and you should be able to adapt the idea to indexing into a
>>>>>> three dimensional world with an octtree.
>>>>>>
>>>>>> [1]: https://en.wikipedia.org/wiki/Octree
>>>>>>
>>>>>>
>>>>>> [3]: http://conal.net/blog/posts/topless-data
>>>>>>
>>>>>> On Fri, Aug 14, 2015 at 1:44 PM, David McBride <toad3k at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> If you are thinking of it as a 3d grid, you might just have a (Map
>>>>>>> (Integer, Integer, Integer) Contents, where every room in this 3d grid that
>>>>>>> has something in it is in the map and every room that is empty space has no
>>>>>>> corresponding entry in the map.
>>>>>>>
>>>>>>> Then when you enter a room you can quickly look up what is in that
>>>>>>> room, then reasonably quickly check the neighbors in every direction to see
>>>>>>> what the ship might be able to sense were it to travel in that direction.
>>>>>>>
>>>>>>> In this case, space is infinite, but the datastructure is only as
>>>>>>> big as the amount of content you have.
>>>>>>>
>>>>>>> On Fri, Aug 14, 2015 at 4:34 PM, Michael Litchard <
>>>>>>> michael at schmong.org> wrote:
>>>>>>>
>>>>>>>> Star Wars MUD has a 3-D coordinate system such that (0,0,0) is some
>>>>>>>> planet. I'm curious as to how one might model this system that could
>>>>>>>> simulate a ship's movement through a 3-D grid. Matrix, 3-D array, graph.
>>>>>>>> None of these? Ideas?
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>>
>>>>
>>>
>>> _______________________________________________