Jump to content
  • Advertisement

Project: Unsettled World

More Progress with Design and Project Organization

Septopus

822 views

Instead of one big ugly image, this time I'll give you lots of smaller ugly ones. :D

UnsettledWorld_VServersNode_MM.png.278b376842b6d7ed5c1289b2213476f6.png

I added a new main branch to the old Mind Map, this one describes how the actual servers will be configured.  This is a general overview of course, I'm building for a single (Physical/Virtual) server installation first then I'll add in data replication and failover capabilities later.

UnsettledWorld_socialserverNode_MM.png.c1c21d307c9725d83b76fbe17482d900.png

A new server type was added as well, the Social Server, it does some fairly obvious types of things.. ;)

After looking at the big picture and, well spending some time painting it first, I started to see some ways to optimize and organize things better.  For example I've completely moved the main "Player Attitude Network Relay" or Position/Attitude Reflector (the thing that makes network player character coordinates propagate to other player clients on the internet..blah!).  It was going to just live in the Avatar Server, but that handles Authentication and quite a few other very crucial game play roles.. So now it lives where it makes way more sense, at the point in the system where its data is needed the most.  In the Action Server, this server handles all of the fast action related decision making.  The Avatar Server still handles propagating the player character's Data(features, wardrobe,etc), just not the deluge of player movement data.  This makes it far easier to design this part of the system to scale, which is important because this is one of the critical points for concerns of scale.  As long as EVERY Action Server maintains accurate positional buffers, then it doesn't matter WHICH Action Server processes the client's messages.  Keeping the positional buffers in sync will probably require the addition of high speed intermediary "Data Base" Servers  and all that jazz.

UnsettledWorld_actionserverNode_MM.thumb.png.b05a26fd90ebb110c6eb3a03d723dde5.png

I ramble, but I'm making some good progress towards a cohesive plan, and it's making everything start to feel like it's coming together.

The hacknplan data entry is still much in progress, I've started adding tasks to keep myself on track with adding data to it.. haha, sounds redundant but it's helping me stay on track.

hacknplanmetrics101718.thumb.png.83629b9079c0223f185a67fa460a8220.png

Here's the Game Design Model I was talking about in my last thread, I'm enjoying the simplicity of it all.

hacknplangdm101718.png.36d57d9afb269c86b708bf2005d48931.png

It's essentially just the tree structured view of my Mind Map, so it's pretty easy to keep these two tools in sync.  I add child items where necessary and attach tasks to whatever branch/child I want.

The main "Board" view is just a standard KanBan style system, but it's simple and easy to work with, it integrates well with the Game Design Model and seems to be fairly stable.

hacknplankanban101718.thumb.png.56b42b4a5686af80ffa77ce2cc500161.png

Here I'll attach the whole of the latest Mind Map revision, for the curious and/or gluttons of punishment.

UnsettledWorld_101718_MM.thumb.png.51b03eb6038f0ed7cb742dbd38eb0df8.png

I'm happy with my progress so far.  Slowly approaching the Maintenance point.  Then the full code sprint starts again.  I'm still coding, so I don't lose my place, just not at the pace I would like with all the admin work I've given myself.  Anyhow, enough talking about stuff I've already done, I've got stuff to do! :D




0 Comments


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Advertisement
  • Blog Entries

  • Similar Content

    • By Mapet
      Hi, I started implementing 2D board game. I have concept of how to write rules, controlls etc, but i dont want to write another all-in-app. So i decided to do it "right". I divided my code into reuseable modules - ResourceManager, Renderer, Core, Math (for now). All modules use SDL2.
      ResourceManager(RM) - loads textures, audio etc without duplicating them in memory. Resources are gathered in TextureResource, AudioResource (...) objects, handled by std::shared_ptr. For textures I have prepared Texture class that wraps SDL_Texture and I RM serves this Texture objs for Core module.
      Core - The main game module, contains game loop, gameobject / component implementation and event handling. Core requests for data from RM and sends them to right components.
      Renderer - Creates window and knows about render range (in core represented by camera). Takes info about texture, position, rotation and scale to render images (just this for now).
      Its time for my questions:
      is this architecture good? After I end this board game I want to extend renderer module for example for rendering 3D objects.  Loading resources while ingame is good idea? I mean single textures, models, sounds etc.  As I said, for handling resources I am using shared_ptr, is it good cleaning cache every (for example) 3 minutes? By cleaning i mean removing not used resources (counter =1). And the hardest thing for me right now - take a look at this flow: Core create a T1 token Component Renderer2D is connected to T1. Core requests a texture /textures/T1.png from RM. RM checks if /textures/T1.png is in map, if not, loads it. RM returns a std::shared_ptr<Texture> to Core. Core assign texture to T1 Renderer2D component.
      Now i want to pass this object to renderer. But I wont pass all gameObjects and checks which have renderer2D component (i also cant, because only Core know what is gameObject and component). So i had an idea: I can create Renderable interface (in Renderer module) and inherit from it in the renderer2D component. Renderable will contain only pointers to position data. Now i am able to pass renderer2D component pointer to Renderer and register it.

      Is this good way to handle this? Or im overcomplicating things? If point above is right I had last question - registering object in Renderer module. I dont want to iterate over all objects and check if I can render them (if they are in render range). I wanted to place them in "buckets" of - for example - screen size. Now calculating collisions should be faster - i would do this only for objects in adjacent buckets. But for 2D game i have to render objects in correct order using Z index. Objects have to be placed in correct bucket first, then sorted by Z in range of bucket. But now i have problem with unregistering objects from Renderer module.
      I think I got lost somewhere in this place... Maybe You can help me? Of course it this is correct way to handle this problem. I would love to read your comments and tips about what can I do better or how can i solve my problems.
      If i didnt mention something but You see something in my approach, write boldly, I will gladly read all Your tips :).
    • By Seer
      Currently if I was to program a game using C++ with SFML or Java with LibGDX I would render game objects by calling "object.render()" on the game object. Although this makes it easy to access the information necessary to render the game object, it also couples rendering to the game logic which is something I would like to move away from. How can rendering be implemented so that it is decoupled from the game objects?
      I wish to know how this can be done in the standard object oriented paradigm, so please don't suggest that I use an ECS. Thank you.
    • By Wolfebytes
      I am currently an undergrad several months from graduation. My major is in Game Programming and Development. During the course of my studies, we've had a few modeling classes and I really took to it and feel that is the direction I really want to go, specifically I would love to become a character artist. I keep hearing about your portfolio being super important, but I've really never been able to find out what kind of work is best to put into my portfolio. There's no "put 2 of these and 1 of those in," kind of tips. I get that I'll want to put some characters I've modeled in there, but I guess what I really want to know is, if I want my portfolio to be noticed and taken seriously for a character artist position, what is the best way to present it? Since most of my courses have dealt more with programming, I need to build everything for my modeling portfolio on the side, outside of class on my own time. I know there are no specific numbers like: put 3 realistic humans, 2 robots, a creature, and a stylistic character in your portfolio. But as a general rule is there some kind basic guideline or tips for what to make to get your portfolio off to a good start?
    • By Kjell Andersson
      Genifect 2.0 OpenFX plugin has been released by Dual Heights Software.
      New in 2.0 is the Materialized Bevel filter which creates bevel and lighting effects for texts and symbols. Using MatCap textures you can create advanced and realistic lighting effects on 2D-text and logos to make it look like it was made out of gold, copper or any other material that you can find a MatCap texture for on the Internet.

      Genifect is an OpenFX plugin that works with the major compositing software for video and animation including Nuke, DaVinci Resolve/Fusion, Vegas Pro and Natron to name a few.
      Visit the official Genifect page to learn more: https://www.dualheights.se/genifect/
       

      View full story
    • By Kjell Andersson
      Genifect 2.0 OpenFX plugin has been released by Dual Heights Software.
      New in 2.0 is the Materialized Bevel filter which creates bevel and lighting effects for texts and symbols. Using MatCap textures you can create advanced and realistic lighting effects on 2D-text and logos to make it look like it was made out of gold, copper or any other material that you can find a MatCap texture for on the Internet.

      Genifect is an OpenFX plugin that works with the major compositing software for video and animation including Nuke, DaVinci Resolve/Fusion, Vegas Pro and Natron to name a few.
      Visit the official Genifect page to learn more: https://www.dualheights.se/genifect/
       
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!