Skip to content

Commit 0c8c185

Browse files
committed
Added bases for client-server architecture
1 parent e88c4d4 commit 0c8c185

File tree

5 files changed

+110
-0
lines changed

5 files changed

+110
-0
lines changed

.idea/libraries/gson_2_9_0.xml

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

JavaGameEngine.iml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@
1414
<orderEntry type="sourceFolder" forTests="false" />
1515
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
1616
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-script-runtime:1.6.10" level="project" />
17+
<orderEntry type="library" name="gson-2.9.0" level="project" />
1718
</component>
1819
</module>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package javagameengine.networking;
2+
3+
import javagameengine.msc.Vector2;
4+
5+
import java.util.LinkedList;
6+
7+
class Header
8+
{
9+
String clientId;
10+
String custom; // Pack data into a string.
11+
}
12+
13+
class Body
14+
{
15+
LinkedList<obVec> deltaPos = new LinkedList<obVec>();
16+
}
17+
18+
class obVec
19+
{
20+
String ID;
21+
Vector2 vec;
22+
}
23+
24+
public class BufferData {
25+
Header h;
26+
Body b;
27+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package javagameengine.networking;
2+
3+
import com.google.gson.Gson;
4+
5+
import java.io.BufferedReader;
6+
import java.io.IOException;
7+
import java.io.InputStream;
8+
import java.io.InputStreamReader;
9+
import java.net.ServerSocket;
10+
import java.net.Socket;
11+
12+
public class Tcp_server extends Thread {
13+
public ServerSocket socket; // Socket to listen on
14+
public Socket i_socket; // Start listening on socket
15+
16+
public Tcp_server()
17+
{
18+
try {
19+
socket = new ServerSocket(8074);
20+
i_socket = socket.accept();
21+
} catch (IOException e) {
22+
throw new RuntimeException(e);
23+
}
24+
}
25+
26+
public InputStream input;
27+
public BufferedReader reader;
28+
29+
public BufferData read_client()
30+
{
31+
String data;
32+
BufferData parsed = new BufferData();
33+
try {
34+
input = i_socket.getInputStream();
35+
36+
reader = new BufferedReader(new InputStreamReader(input));
37+
data = reader.readLine();
38+
39+
Gson json_parser = new Gson();
40+
41+
parsed = json_parser.fromJson(data, BufferData.class);
42+
} catch (IOException e) {
43+
throw new RuntimeException(e);
44+
}
45+
return parsed;
46+
}
47+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
############################################
3+
MULTIPLAYER
4+
############################################
5+
6+
[Client - Server]
7+
8+
-> Start server (create socket)
9+
-> Create buffer listener on socket
10+
11+
**********
12+
{READER}
13+
-> Read string from client
14+
-> Convert from JSON to class
15+
{{{ (Aforementioned class):
16+
{
17+
Header: {
18+
ClientID: ...
19+
Custom: /* Anything the developer would like to know which is separate from the game events */
20+
}
21+
Body: {
22+
deltaPos: [{objectID, vector2}] /* To include changes in objects position (Update) */
23+
}
24+
}
25+
}}}
26+
// The aforementioned class is the same one used for sending data

0 commit comments

Comments
 (0)