Work on networking

This commit is contained in:
satellite 2021-04-06 20:33:07 -04:00
parent 0f8609079a
commit 992bd92d5f
8 changed files with 183 additions and 21 deletions

View File

@ -30,7 +30,14 @@ public class MainConfig {
//
//Networking related
//
//should we run a server at all?
public boolean runServer;
//
//Rendering related
//
//should the renderer run at all?
public boolean runRenderer;
@ -45,6 +52,9 @@ public class MainConfig {
/**
* Generate a localconfig.json and save it to our resources dir
*/
public static void generateMainConfig(){
System.out.println("localconfig.json either doesn't exist or is out of date");
System.out.println("Would you like to generate a new one?(1-y/0-n)");

View File

@ -0,0 +1,9 @@
package electrosphere.game.simcell.physical;
/**
*
* @author satellite
*/
public class PhysicalCell {
}

View File

@ -0,0 +1,9 @@
package electrosphere.game.simcell.virtual;
/**
*
* @author satellite
*/
public class VirtualCell {
}

View File

@ -13,6 +13,7 @@ import electrosphere.cfg.MainConfig;
import electrosphere.entity.Entity;
import electrosphere.entity.EntityManager;
import electrosphere.game.cell.CellManager;
import electrosphere.net.client.Connection;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
@ -38,6 +39,14 @@ public class Globals {
//
//Client connection to server
//
public static Connection connection;
//
//Generic OpenGL Statements
//

View File

@ -12,6 +12,8 @@ import electrosphere.entity.Entity;
import electrosphere.entity.EntityUtil;
import electrosphere.game.cell.CellManager;
import electrosphere.game.terrain.TerrainManager;
import electrosphere.net.client.Connection;
import electrosphere.net.server.Server;
import electrosphere.renderer.ModelUtils;
import electrosphere.terraingen.TerrainGen;
import electrosphere.terraingen.models.TerrainModel;
@ -89,8 +91,8 @@ public class Main {
public static boolean CAMERA_IS_ORBIT = true;
public static float camera_Orbit_Length = 1.0f;
static final int playerStartRealX = 580 * 200;
static final int playerStartRealY = 900 * 200;
static int playerStartRealX = 580 * 200;
static int playerStartRealY = 900 * 200;
// public static Camera cam_Player_Orbit;
//Camera angles using theta-phi system
@ -114,23 +116,29 @@ public class Main {
//
//
if(Globals.mainConfig.runServer){
forkServer();
}
//run initialization stuff
initTerrainManager();
initWorld();
//Create opengl
RenderUtils.createOpenglContext();
if(Globals.mainConfig.runRenderer){
//Create opengl
RenderUtils.createOpenglContext();
}
//init global variables
Globals.initGlobals();
if(Globals.mainConfig.runRenderer){
forkConnection();
}
initWorld();
initCellManager();
if(Globals.mainConfig.runRenderer){
initCellManager();
}
initSkybox();
@ -148,10 +156,10 @@ public class Main {
Camera camera_player_chase = new Camera();
Camera cam_Player_Orbit = new Camera();
boolean running = true;
//main loop
while (!glfwWindowShouldClose(Globals.window)) {
while (running) {
/*
Frame calculation
@ -278,6 +286,10 @@ public class Main {
//check and call events and swap the buffers
glfwSwapBuffers(Globals.window);
glfwPollEvents();
if(glfwWindowShouldClose(Globals.window)){
running = false;
}
}
//Terminate the program.
glfwTerminate();
@ -340,7 +352,7 @@ public class Main {
static void initWorld(){
static void initTerrainManager(){
float[][] elevation;
terrainManager = new TerrainManager(2000,200,100);
@ -393,6 +405,9 @@ public class Main {
}
}
playerStartRealX = playerStartX * chunkSize;
playerStartRealY = playerStartY * chunkSize;
Globals.player = new Entity();
Globals.player.putData("position", new Vector3f(playerStartX*chunkSize,terrainManager.getHeightAtPosition(playerStartX*chunkSize, playerStartY*chunkSize),playerStartY*chunkSize));
@ -403,12 +418,12 @@ public class Main {
}
public static void initServer(){
public static void forkServer(){
Server.startServerThread();
}
public static void initClient(){
public static void forkConnection(){
Connection.startConnection();
}
}

View File

@ -1,6 +1,10 @@
package electrosphere.net.client;
import electrosphere.main.Globals;
import java.io.IOException;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.crypto.stream.CryptoInputStream;
import org.apache.commons.crypto.stream.CryptoOutputStream;
@ -9,11 +13,59 @@ import org.apache.commons.crypto.stream.CryptoOutputStream;
* @author amaterasu
*/
public class Connection {
enum ConnectionState {
HANDSHAKE_START,
HANDSHAKE_SUCCESS,
HANDSHAKE_FAILURE,
}
ConnectionState state;
static int port = 42536;
Socket socket;
CryptoInputStream inputStream;
CryptoOutputStream outputStream;
public Connection(String address, int port){
try {
this.socket = new Socket(address,port);
} catch (IOException ex) {
System.err.println("Failed to connect!");
ex.printStackTrace();
System.exit(1);
}
}
public void processAllPackets(){
}
public static void startConnection(){
Globals.connection = new Connection("localhost",port);
}
class ConnectionProtocol implements Runnable {
Connection connection;
public ConnectionProtocol(Connection conn){
connection = conn;
}
@Override
public void run() {
boolean running = true;
// while(running){
// if(connection.inputStream.read)
// }
}
}
}

View File

@ -8,7 +8,7 @@ import org.apache.commons.crypto.stream.CryptoOutputStream;
*
* @author satellite
*/
public class Client {
public class Client implements Runnable {
Socket socket;
@ -17,4 +17,14 @@ public class Client {
CryptoOutputStream outputStream;
public Client(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
System.out.println("aaaaaaaaaaaeoiu");
}
}

View File

@ -1,6 +1,11 @@
package electrosphere.net.server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
@ -8,9 +13,52 @@ import java.net.ServerSocket;
*/
public class Server {
static int port = 42536;
ServerSocket serverSocket;
public Server(int port){
HashMap<String,Client> clientMap;
void initServer(){
clientMap = new HashMap();
}
Server(int port){
initServer();
try {
serverSocket = new ServerSocket();
} catch (IOException ex) {
System.err.println("Failed to start server socket!");
ex.printStackTrace();
System.exit(1);
}
boolean running = true;
while(running){
Socket newSocket;
try {
newSocket = serverSocket.accept();
Client newClient = new Client(newSocket);
clientMap.put(newSocket.getInetAddress().getHostAddress(), newClient);
new Thread(newClient).start();
} catch (IOException ex) {
System.err.println("Socket error on client socket!");
ex.printStackTrace();
}
}
}
public static void startServerThread(){
Thread t = new Thread(){
@Override
public void run(){
Server s = new Server(port);
}
};
t.start();
}
}