World of Krystal (A 3D Sandbox LOK Themed MMO)

Post and discuss creative ideas

World of Krystal (A 3D Sandbox LOK Themed MMO)

Postby cheddaredgrizzly » Thu Aug 30, 2018 5:37 pm

Hey guys!
I'm putting this in the Discussions page until I feel comfortable enough to change it over to the Non-flash games, but I've been working on an Idea for the past few days.
I been playing around on Unity, and am thinking of making a 3D Sandbox MMO (if not massive, at very least online) LOK game.
WOK 1.png

WOK 2.png
Krystal's Ship


So what would the game, if it comes to fruition, look like?

1. Custom Characters- You can create your own characters as they run around in this world
2. PVP and PVE- As you roam around you might meet other players, but that doesn't mean they will be your friends.
3. Multiple Factions- When the Cornerian council agreed to the reclassification of the Neutral zone, what people realized was that the planet Sauria was never actually in the neutral zone as everyone had previously thought. Because of this mistake in classification, both the Cornerian Army and the last remaining remnants of the Andross empire are now invading the planet Sauria. Sauria has mostly reverted back to a tribal state since the defeat of General Scales, but one tribal faction has become the planets leading powerhouse, and is fighting against both Corneria and Andross in order to keep Saurian independence. The Tribe is being led by former Star Fox pilot Krystal Fox, who was thought MIA after her ship was shot down on the planet.
4. Battle...or chat- The game would be mostly focused on player interactions, which means you can either role play and fight for your chosen faction, or just chat with other players.

How will this get done? In phases my friend, in phases. There is alot that needs to be done for this game to even work, but here is what I plan to focus on for each phase.

Phase 1: Phase 1 will be focused on building the environment of Sauria, implementing the attack options, a few base weapons, implementing online chat, and working on getting servers to run it.
Phase 2: Phase 2 will focus on character creation more implemented items, base RPG stats, character animations and starting the factions, including any additional environment building
Phase 3: Phase 3 will focus on missions, advanced animations with both PCs and NPCs, GUI implementation, and additional stuff such as a guild system
Phase 4: Polish

So far I have been working on Phase 1, and am pretty excited about working on building this game.

If you wish to help that is great. Currently I need help with Character modeling and rigging (because i know crap about it), Ideas on how to implement character creation, and any assistance with Servers would be great.
I'll update this page when I have major updates done, and I will release a offline demo when the enviroment is done, and maybe have an alpha demo for online players.
Last edited by cheddaredgrizzly on Tue Sep 04, 2018 6:59 am, edited 1 time in total.
Morals don't apply to me. I'm a Bear made of Cheese.
User avatar
cheddaredgrizzly
 
Joined: Tue Dec 16, 2014 5:36 pm
Location: The Woods

Re: A 3D Sandbox LOK Themed MMO?

Postby cheddaredgrizzly » Tue Sep 04, 2018 2:29 am

UPDATE:

Decided to work on some small updates on each part I finish so that I get in the habit of constantly informing you of what's happening. I am about 70% ish done with Cape Claw.
Wok 4.png
The Ocean Force point temple is quite intimidating.

Wok 5.png

Wok 6.png

I plan to finish the remaining parts of Cape claw, and then work on Thorntail Hollow. You'll note that the world is closer to a 2:1 scale compared to the original game, which is partially an artistic choice, but the other part is me still trying to figure out how to use Unity. Future maps will be closer to their original size.

Until next time.
Morals don't apply to me. I'm a Bear made of Cheese.
User avatar
cheddaredgrizzly
 
Joined: Tue Dec 16, 2014 5:36 pm
Location: The Woods

Re: World of Krystal (A 3D Sandbox LOK Themed MMO)

Postby Golrim » Tue Sep 04, 2018 6:59 pm

While looking at a picture from a player perspective can be helpful when viewing through the player, an editor view of the level might actually do more good for you if you want to receive feedback from the community. There a lot I see that can be improved and suggest, but I can’t see how the structure are laid out, the landscape is shaped, and the map overall design. I know this is a replica of a game I haven’t played or seen, but I fell that there is a lot missing, and when you scale up an old game that had limitation you’re going to end up creating a lot of void space.

Now have you tried blocking out technique before when 3D modeling or level designing before? If not I would suggest you try out Unity SabreCSG tool. I use Unreal Engine BSP so I’m not familiar with Sabre CSG, but using simple primitive shapes to plan out the level can not only help fill up the space, but also sell what the level might look like in a rough version.
Golrim
 
Joined: Mon Feb 19, 2018 8:16 am

Re: World of Krystal (A 3D Sandbox LOK Themed MMO)

Postby cheddaredgrizzly » Wed Sep 05, 2018 5:48 am

Golrim Wrote:While looking at a picture from a player perspective can be helpful when viewing through the player, an editor view of the level might actually do more good for you if you want to receive feedback from the community. There a lot I see that can be improved and suggest, but I can’t see how the structure are laid out, the landscape is shaped, and the map overall design. I know this is a replica of a game I haven’t played or seen, but I fell that there is a lot missing, and when you scale up an old game that had limitation you’re going to end up creating a lot of void space.

Now have you tried blocking out technique before when 3D modeling or level designing before? If not I would suggest you try out Unity SabreCSG tool. I use Unreal Engine BSP so I’m not familiar with Sabre CSG, but using simple primitive shapes to plan out the level can not only help fill up the space, but also sell what the level might look like in a rough version.


That is completely fair. I have restructured the landscape again since the last post (probably will be the closest to the final, but here is the total landscape.
Spoiler (click to show/hide):

wok 7.png
Over head map
wok 7.png (264.51 KiB) Viewed 1756 times
wok 8.png
wok 9.png
wok 10.png
wok 11.png
12.png
Main entrance


I haven't done blocking out before, but after working on this map, I am definitely going to do that from here on. I'll see how this SabreCSG tool works, hopefully it will help alot.

Thank you.
Morals don't apply to me. I'm a Bear made of Cheese.
User avatar
cheddaredgrizzly
 
Joined: Tue Dec 16, 2014 5:36 pm
Location: The Woods

Re: World of Krystal (A 3D Sandbox LOK Themed MMO)

Postby OwnerOfSuccuby » Sun Sep 23, 2018 7:19 am

Sorry for long answer, if you decided to make MMO may be it will help.

It is some really old version but i can not find my newer cods - do not know where did i hide flash with it )

The idea is simple - for exemple by sockets you write inormation about stage to server (coordinates angles actions)
On server or some how you calculate it and resend to all players.

For example it is a really simple realization on PHP sockets (server part) - but it is easy to understand on simple sample.

Player nter server - server activate him and resend to game socket wehere calculations work.

You can resend players from one scocket to another like rooms for example or calculate on in 1 socket.

Socket php scripts must work all the time on server - so you need servers that let your script work not limited by time. If you have direct white IP you can use your own PC as server.

You always can experement on your own PC - if you install PHP server on it like WAMP / XAMP / WAMP and etc.

Login server

Code: Select All Code
<?php
     // header('Content-Type: text/plain;');
      set_time_limit(100);
     // ob_implicit_flush();     
      echo "-= Server =-\n\n";
     
$NULL           = NULL;
$adres          = "localhost";
$port           = 843;
$max_clients    = 10;
$sockets_clients = array();
$creat         = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$rez            = true;
$msg = file_get_contents('http://localhost/crossdomain.xml') . "\x00";
$starttime=time();

   echo 'Create socket ... ';
    if(!$creat){
      die("socket_create() failed\n") ;
    }else{
      echo "OK\n";
    }
     
$rez &= @socket_bind($creat, $adres, $port);
   echo 'Bind socket ... ';
    if(!$rez){
      die("socket_bind() failed\n") ;
    }else{
      echo "OK\n";
    }


$rez &= @socket_listen($creat);
   echo 'Listen socket ... ';
    if(!$rez){
      die("socket_listen() failed\n") ;
   }
    else{
      echo "OK\n";
    }
   echo "Accepting of socket ... OK\n";

$abort = false;
$read = array($creat);
     
while(!$abort){
      $num_changed = socket_select($read, $NULL, $NULL, 0, 10);
     $currenttime=time();
      /* Изменилось что-нибудь? */
      if ($num_changed){
          /* Изменился ли главный сокет (новое подключение) */
          if(in_array($creat, $read)){
                  if(count($sockets_clients) < $max_clients){
                          $sockets_clients[]= socket_accept($creat);
                          echo " Accept socket (" . count($sockets_clients)  . " of $max_clients clients)\n";
                         // socket_write($sockets_clients[count($sockets_clients)-1], "Hello, Client!", 15);
                         // echo "  Say to ".count($sockets_clients)." client: Hello, Client!\n";
                  }
          }       
          /* Цикл по всем клиентам с проверкой изменений в каждом из них */
          foreach($sockets_clients as $key => $client){

              /* Новые данные в клиентском сокете? Прочитать и ответить */
              if(in_array($client, $read)){
                  $input = socket_read($client, 1024);
              //echo ("---");
            if ($input===false){echo "false";
              socket_close($client);
              if(($arrkey = array_search($client, $read)) !== FALSE){
                    unset($read[$arrkey]);
                  }
               unset($sockets_clients[$key]);
            }
             else {
             if ($input!=""){
              $starttime=$currenttime;
              echo ("---");
              print_r("peremennaya=".$input."/");
                   
                  /*Блок отправления данных клиентам*/
              if ($sockets_clients){
            
                 print_r($sockets_clients);
                 foreach ($sockets_clients as $temp){
                  if ($temp==$client){
                    socket_write($temp,"$msg");
                    unset($temp);
                       break;   
                  }
                 }
                //    }
               
            
              */
                    /*close socket, if message = bye*/                     
                    if($input == 'bye'){
                        echo "Close socket ... OK\n";
                        socket_close($creat);
                        $abort = true;
                    }
             
              }
             }      
             else {
               if ($starttime+5<$currenttime){
                     socket_close($client);
                 if(($arrkey = array_search($client, $read)) !== FALSE){
                       unset($read[$arrkey]);
                     }
                 unset($sockets_clients[$key]);
                echo ("close socket");
               }
             }
            
            
             }
            
              }// END IF in_array           
           
          } // END FOREACH
         
      } // END IF ($num_changed)
       
                     
      $read = $sockets_clients;
      $read[] = $creat;
} // END WHILE
   
?>


Main server

Code: Select All Code
<?php
     // header('Content-Type: text/plain;');
      set_time_limit(100);
     // ob_implicit_flush();     
      echo "-= Server =-\n\n";
     
$NULL           = NULL;
$adres          = "localhost";
$port           = 1024;
$max_clients    = 10;
$sockets_clients = array();
$curID = 10;
$sockets_clientsID = array();
$creat         = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$rez            = true;
//$msg = file_get_contents('./crossdomain.xml') . "\x00";
$starttime=time();

   echo 'Create socket ... ';
    if(!$creat){
      die("socket_create() failed\n") ;
    }else{
      echo "OK\n";
    }
     
$rez &= @socket_bind($creat, $adres, $port);
   echo 'Bind socket ... ';
    if(!$rez){
      die("socket_bind() failed\n") ;
    }else{
      echo "OK\n";
    }


$rez &= @socket_listen($creat);
   echo 'Listen socket ... ';
    if(!$rez){
      die("socket_listen() failed\n") ;
   }
    else{
      echo "OK\n";
    }
   echo "Accepting of socket ... OK\n";

$abort = false;
$read = array($creat);
     
while(!$abort){
      $num_changed = socket_select($read, $NULL, $NULL, 0, 10);
     $currenttime=time();
      /* Изменилось что-нибудь? */
      if ($num_changed){
          /* Изменился ли главный сокет (новое подключение) */
          if(in_array($creat, $read)){
                  if(count($sockets_clients) < $max_clients){
                          $sockets_clients[]= socket_accept($creat);
                          echo " Accept socket (" . count($sockets_clients)  . " of $max_clients clients)\n";
                         // socket_write($sockets_clients[count($sockets_clients)-1], "Hello, Client!", 15);
                         // echo "  Say to ".count($sockets_clients)." client: Hello, Client!\n";
                  }
          }       
          /* Цикл по всем клиентам с проверкой изменений в каждом из них */
          foreach($sockets_clients as $key => $client){

              /* Новые данные в клиентском сокете? Прочитать и ответить */
              if(in_array($client, $read)){
                  $input = socket_read($client, 1024);
              //echo ("---");
            if ($input===false){echo "false";
              socket_close($client);
              if(($arrkey = array_search($client, $read)) !== FALSE){
                    unset($read[$arrkey]);
                  }
               unset($sockets_clients[$key]);
            }
             else {
             if ($input!=""){
                if ($input!="connectionisalive"){
                  $starttime=$currenttime;
                 // echo ("---");
                 // print_r("peremennaya=".$input."/");
                   
                      /*Блок отправления данных клиентам*/
                  if ($sockets_clients){
                   //echo ((string)$input);
                   //if ($input===true){echo("FUUUUUUUUUUUUCCCKKKKK");}
                    if (trim($input)!=""){
                    if ($input==client_connected){
                      socket_write($client, "NewId=".$curID);
                      $curID=$curID+1;
                    }
                    else {
                       foreach ($sockets_clients as $temp){
                         //echo("GetData/SendData");
                           if ($temp!=$client){
                            socket_write($temp,"$input");
                         }
                       }
                    }
                   }
               
                        /*close socket, if message = bye*/                     
                        if($input == 'bye'){
                           echo "Close socket ... OK\n";
                           socket_close($creat);
                           $abort = true;
                        }
                  }
                }
              }      
              else {
                if ($starttime+5<$currenttime){
                      socket_close($client);
                  if(($arrkey = array_search($client, $read)) !== FALSE){
                        unset($read[$arrkey]);
                      }
                  unset($sockets_clients[$key]);
                 echo ("close socket");
                }
              }
            
            
             }
            
              }// END IF in_array           
           
          } // END FOREACH
         
      } // END IF ($num_changed)
       
                     
      $read = $sockets_clients;
      $read[] = $creat;
} // END WHILE
   
?>
OwnerOfSuccuby
 
Joined: Fri Jun 11, 2010 9:33 pm

Re: World of Krystal (A 3D Sandbox LOK Themed MMO)

Postby FrozenFurry » Thu Nov 08, 2018 3:26 am

This is a great concept that I highly recommend, though this project would take quite a big backing. I am not a game dev, so I probably don't have any idea what I'm talking about. I am very excited about this and will be willing to help in any case... if I learn how. As I said, I'm not a dev, so I don't really have any skill with any of the essential components besides, of course, just playing the game. I hope other people can see this thread, so they can help contribute.
FrozenFurry
Newly Registered
 
Joined: Thu Nov 08, 2018 3:15 am

Re: World of Krystal (A 3D Sandbox LOK Themed MMO)

Postby TheDoubleDeuce » Mon Nov 26, 2018 7:37 am

Hey, Cheddar. I like this idea. I have a history of coding in Unity/Flash and know the ins and outs of 3d game development. I unfortunately know little about multiplayer implementations and shaders, but I know general structures. I'm willing to back you and purchase assets (even commissioning for custom 3d characters if need be). If you want to send me a wish list of sorts, I'd be glad to assist you in development of your multiplayer LoK game. Just send me a pm and maybe I can add some steam to your project.

On top of that I am willing to work as a coder/debugger if you'll have me. I hope to hear from you and look forward to future submissions of this game.
User avatar
TheDoubleDeuce
 
Joined: Mon Jun 18, 2018 3:10 am


Return to Discussion



Who is online

Users browsing this forum: No registered users