News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_zhulien

Who wants to make a MMOG for CPC?

Started by zhulien, 20:31, 10 July 20

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

zhulien

I actually want to make some type of dungeon crawler - i know it is ambitious.


I know a chess game or a turn based game like that will 'just work'.


A dungeon crawler can 'just work' also depending on the design.  Imagine a dungeon crawler with many locations, many objects, a story, many players but... a turn-based fighting mechanic?  I would prefer a more action oriented dungeon crawler - but that depends on how many fetches per second a CPC can achieve <-- that is the constraining factor (of course we don't want 100% CPU time to achieve those fetches).

sigh

Quote from: zhulien on 01:31, 08 August 20
I actually want to make some type of dungeon crawler - i know it is ambitious.


I know a chess game or a turn based game like that will 'just work'.


A dungeon crawler can 'just work' also depending on the design.  Imagine a dungeon crawler with many locations, many objects, a story, many players but... a turn-based fighting mechanic?  I would prefer a more action oriented dungeon crawler - but that depends on how many fetches per second a CPC can achieve <-- that is the constraining factor (of course we don't want 100% CPU time to achieve those fetches).
Action RPG sounds like a good idea. I also think that having it real time would also be a great test too, as turn based will (as you say) 'just work' like a chess game. Would the dungeons have elements of being randomly generated or would there be fixed locations? I haven't really played a dungeon crawler (only played through, Bloodborne Chalice Dungeons and Dragons Dogma BitterBlack Isle), but it sounds like you would want something quite open world and doesn't have an ending.

Poliander

Schneider CPC 664 • X-MEM • Vortex F1-X Drive • CTM 644 • DMP 2160
Schneider CPC 6128 • Z-MEM • M4 Board • MultiPlay + Amiga Mouse • OSSC

zhulien

source for the JS proof of concept if someone wants to code a CPC Assembler proof of concept:


http://8bitology.net/poc/vdu/js/game-mmogdemo.js


zhulien

#29

MMOG Protocol WIP

The below API is to allow a MMOG game to be server-driven but the client-side to be as realtime as possible.



description:   return viewport tile map, effectively a mask of which tiles to render
allows the map to be maintained server-side but viewport displayed client-side
this should be called as often and as fast as possible, if the area_id changes
we should immediately call this again without rendering the viewport
cachable:      *NO*
api:         getViewPortTileMap
parameters:      area_id=<area_id> (if not provided we are back to home)
player=<player_id>
result:       <status>::<area_id>|<tileset_id/flush>|<viewporttilemap>|<npc_ids/flush>|<item_ids/flush>|<player_ids/flush>|<eventdescription>

----------------------------------------------------------------------------------------------------

description:   downloads tileset graphics for given tileset_id
cachable:      YES, should never change but server can force a flush
api:          getTileSetGfx
parameters:      tileset_id=<tileset_id>
result:       <status>::<tileset graphics bitmaps>

----------------------------------------------------------------------------------------------------

description:   downloads NPC graphics for given npc_ids
cachable:      YES, should never change but server can force a flush
api:          getNPCGfx
parameters:      npc_id=<npc_id>
result:       <status>::<npc graphics bitmaps>

----------------------------------------------------------------------------------------------------

description:   downloads items graphics for given item_ids
cachable:      YES, should never change but server can force a flush
api:          getItemsGfx
parameters:      item_id=<item_id>
result:       <status>::<item graphics bitmaps>

----------------------------------------------------------------------------------------------------

description:   downloads players graphics for given player_ids
cachable:      YES, should never change but server can force a flush
api:          getPlayersGfx
parameters:      player_id=<player_id>
result:       <status>::<player graphics bitmaps>

----------------------------------------------------------------------------------------------------

description:   downloads NPC static data for given npc_ids
this provides details of actions that can be performed with the npc
if the provided conditions are met (evaluated client-side)
cachable:      YES, should never change but server can force a flush
api:          getNPCData
parameters:      npc_id=<npc_id>
result:       <status>::<description>|list of <action_id/action/condition>

----------------------------------------------------------------------------------------------------

description:   downloads items static data for given item_ids
this provides details of actions that can be performed with the item
if the provided conditions are met (evaluated client-side)
cachable:      YES, should never change but server can force a flush
api:          getItemsData
parameters:      item_id=<item_id>
result:       <status>::<description>|list of <action_id/action/condition>

----------------------------------------------------------------------------------------------------

description:   downloads players static data for given player_ids
this provides details of actions that can be performed with the player
if the provided conditions are met (evaluated client-side)
cachable:      YES, should never change but server can force a flush
api:          getPlayersData
parameters:      player_id=<player_id>
result:       <status>::<description>|list of <action_id/action/condition>

----------------------------------------------------------------------------------------------------

description:   downloads NPC stats for given npc_id
this is the current stats of the npc to display
cachable:      *NO*
api:          getNPCStats
parameters:      npc_id=<npc_id>
result:       <status>::list of <stat/value>

----------------------------------------------------------------------------------------------------

description:   downloads items stats for given item_id
this is the current stats of the item to display
cachable:      *NO*
api:          getItemsStats
parameters:      item_id=<item_id>
result:       <status>::list of <stat/value>

----------------------------------------------------------------------------------------------------

description:   downloads players stats for given player_id
this is the current stats of the player to display
cachable:      *NO*
api:          getPlayersStats
parameters:      player_id=<player_id>
result:       <status>::list of <stat/value>

----------------------------------------------------------------------------------------------------

description:   perform an action
cachable:      *NO*
api:          performAction
parameters:      action_id=<action_id>
item_id=<item_id>
npc_id=<npc_id>
player_id=<player_id>
result:       <status>::<description>

----------------------------------------------------------------------------------------------------

description:   client-side render function using cached graphics
api:          renderViewPort

Powered by SMFPacks Menu Editor Mod