Dungeons and Dragons – video and alpha brainstorming

Hi folks,

I just thought that I would provide a brief update as to my current thinking on my dungeons and dragons project.  As mentioned in a previous post, a key barrier to progress here was having access to a good in game level editor.  At first I thought opened was the best thing that there was in order to work with, and found it quite limited when I played around with it.  However, I recently discovered that it is possible to obtain runtime level editors from the unity asset store, relatively affordably.  So I followed through and purchased one, downloaded the data, and then ran it locally in Unity 4.6.2.  You can see the results of my investigations below:

As you can see, it is possible to raise and lower terrain, and add objects to the scene, such as buildings, trees, and jeeps, etc.  So basically everything that I was after, and more.  Furthermore, the package provides complete access to the underlying source, so it is eminently feasible to plumb additional functionality into the program, which I think is quite exciting.

Hence, it now becomes possible to start working towards a first version of my dungeons and dragons dungeon master style multiplayer game.  In particular, I think there are a number of things that I’d now like to do:

  • Plumb in the multiplayer functionality from my previous project.
  • Introduce a simple and straightforward database model for players and dungeon masters.
  • Allow players to spawn in a world in an appropriate way (without falling forever).
  • Allow the dungeon master to move players around.
  • Allow the dungeon master to switch their camera to a creature under their control and move it around.

There are other things I’d like to do, but will probably defer for a later release:

  • Allow the dungeon master to switch their view to a player, default: passive (optional: override player controls, and notify player that their controls are overriden).
  • Saving and loading levels.  The runtime level editor that I acquired does have a save and load functionality (it encodes levels as text files), but it doesn’t work quite the way I’d like it to currently.  Ideally levels should be written as blobs to a database with a secondary key being the user who generated the level so that they only have access to their level list.
  • Give the dungeon master access to master database controls, eg, a switch to reset player positions (if some of them have started to fall forever, for instance).  I’d probably like to give players a reset switch, too (but limited to themselves only, of course).

And then, in a release after that:

  • Enable persistence of player position in each of the worlds in which they have played.  So for instance if player Rodriguez has played Bob’s level ‘OrcTown’ and Jill’s level ‘CottageIndustry’, if either respective DM loads said levels and then Rodriguez logs back in, Rodriguez should appear with the position and rotation coordinates he last held while playing that level.

Plumbing in the multiplayer functionality should be relatively straightforward.  I will need to create prefabs for the players, of course, or at least migrate the ones in my earlier project across.  I will need to create any necessary prefabs for creatures that the dungeon master is to introduce into the world.  I will need to reintroduce a lobby, the ability to log in, have passwords authenticated, and create a game (to become the DM of that game) or join a game (that a player has created).  A messaging server will need to be created (using smartfox, for instance, though that may change with Unity 5), and some sensible database structure built.

On creating a game, a player should have their ‘DM’ flag in the player table set to ‘true’.  If a player joins a game, their ‘DM’ flag should be set to false.

A game should not be joinable (in the lobby) if a terrain has not been deployed.  In this instance the CanJoinGame flag in the player table for a DM who is preparing a level should be set to false, and the game should not appear in the list of available games in the lobby.  If a game is full (eg, 4/4 players), it should not appear in the list of games in the lobby either, but that is something that can be deferred until later (also, one might want to distinguish between ‘public’ and ‘private’ games.  If a game is public, anyone can join, if a game is private, only users who have been added to the dungeon master’s campaign list in PlayerCampaign should have visibility of the game.  Ultimately, too, one would like to be able to filter games in progress so that one could find the one one wished to play exclusively.

Once a player has joined a game, they should spawn just above the terrain say in the centre of the map.  Since terrain can be raised and lowered, this will be an interesting (but important) problem to solve.  Alternatively, perhaps the players could appear as tokens that the dungeon master could place (or they could place) at their will and leisure.  This might be a better way to go, where players would have a trimmed down version of the dungeon master’s interface, but they would still be able to drag and drop themselves, once, into the game.  Then they could jump between the global map view, and first person perspective from any of the creatures they control (the default being just one, their character).

This leads to the need for a fairly important feature in the first version of the game: the ability to toggle between the global controller / camera, and to avatar into a currently controlled token, and use its controller / camera.  This may be difficult to do but I think that the payoff will be worth it.

Moving tokens and objects around should be relatively straightforward, as that is already built into the base template.


Tags: , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: