Skip to content

Commit

Permalink
🎉 v5.0 release!
Browse files Browse the repository at this point in the history
  • Loading branch information
evolutionleo committed Mar 6, 2023
1 parent 2f3220f commit 0c1c3dc
Show file tree
Hide file tree
Showing 36 changed files with 1,065 additions and 516 deletions.
44 changes: 35 additions & 9 deletions JavascriptServer/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ const args = minimist(process.argv.slice(2));
* @property {string} meta.compatible_game_versions
* @property {string} meta.server
*
* @property {Object} server
* @property {number} server.max_connections
* @property {number} server.max_ws_payload
*
* @property {object} lobby
* @property {number} lobby.max_players
* @property {boolean} lobby.addIntoPlayOnFull
Expand All @@ -25,6 +29,9 @@ const args = minimist(process.argv.slice(2));
* @property {string} room.starting_room
* @property {number} room.rest_timeout
*
* @property {object} party
* @property {number} party.max_members
*
* @property {number} tps
*
* @property {boolean} timestamps_enabled
Expand All @@ -34,6 +41,7 @@ const args = minimist(process.argv.slice(2));
* @property {boolean} rooms_enabled
* @property {boolean} entities_enabled
* @property {boolean} ssl_enabled
* @property {boolean} logging_enabled
*
* @property {string} ssl_cert_path
* @property {string} ssl_key_path
Expand All @@ -54,7 +62,7 @@ const args = minimist(process.argv.slice(2));

const common_config = {
meta: {
game_name: 'OnlineGame',
game_name: 'Warp Game',
game_version: 'v1.0.0',
warp_version: 'v5.0.0',

Expand All @@ -63,6 +71,11 @@ const common_config = {
server: 'unknown'
},

server: {
max_connections: 1000,
max_ws_payload: 2 * 1024 * 1024 // 2 MB
},

// some fundamental lobby settings
lobby: {
max_players: 100,
Expand All @@ -74,15 +87,26 @@ const common_config = {
room: {
// .yy room loading
rooms_path: '../Client/rooms',
warn_on_unknown_entity: true,
warn_on_unknown_entity: false,

use_starting_room: true,
use_last_profile_room: false,
use_persistent_position: false,

starting_room: 'Test Room',
rest_timeout: 5 // (seconds) - prevents rooms from processing entities
rest_timeout: 5,
// when no players are present for a certain amount of time
// set to -1 to disable this feature
// (!!! setting to 0 might cause problems and unexpected behaviour !!!)

recently_joined_timer: 2 // (seconds) - time
},

tps: 60,
party: {
max_members: 5 // max party size
},

tps: 20,

// Disable some of the features that you don't need in your game
// true = enabled, false = disabled
Expand All @@ -92,7 +116,9 @@ const common_config = {
shell_enabled: false,
rooms_enabled: true,
entities_enabled: true,
dt_enabled: true,
ssl_enabled: false,
logging_enabled: true,
verbose_lag: false,

necessary_login: false,
Expand All @@ -119,7 +145,7 @@ const prod_config = {
ssl_cert_path: '/etc/letsencrypt/live/example.com/cert.pem',
ssl_key_path: '/etc/letsencrypt/live/example.com/privkey.pem',

db: args.db || 'mongodb://127.0.0.1:27017/online-game',
db: args.db || 'mongodb://127.0.0.1:27017/warp-game',
// you can add a postfix at the end of the name to separate them
shell_enabled: false,
verbose_lag: false,
Expand All @@ -142,12 +168,12 @@ const dev_config = {
ssl_cert_path: '',
ssl_key_path: '',

db: args.db || 'mongodb://127.0.0.1:27017/online-game',
db: args.db || 'mongodb://127.0.0.1:27017/warp-game',

shell_enabled: true,
verbose_lag: true,

initial_lobbies: 1
initial_lobbies: 3
};


Expand All @@ -171,7 +197,7 @@ else {
}


trace(chalk.blueBright('Config loaded! environment: ' + config.env_name));

global.config = config;
export default config;

trace(chalk.blueBright('Config loaded! environment: ' + config.env_name));
81 changes: 41 additions & 40 deletions JavascriptServer/custom/handlePacket.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import trace from '#util/logging';
import { findLobby } from '#util/lobby_functions';
import MatchMaker from '#util/matchmaker';
import { Account } from '#schemas/account';
import { lobbyExists } from '#concepts/lobby';
import semver from 'semver';
import chalk from 'chalk';
import { partyExists } from '#concepts/party';

/**
* @param {Client} c
Expand Down Expand Up @@ -58,12 +57,12 @@ export default async function handlePacket(c, data) {
c.sendMessage(data.msg + ' indeed');
break;
case 'ping':
c.sendPong(data.t);
c.sendPong(data.T);
break;
case 'pong':
let t = data.t;
let t = data.T;
let new_t = new Date().getTime();
let dt = new_t - t;
let dt = new_t - t - global.start_time;

c.ping = dt;

Expand All @@ -74,44 +73,25 @@ export default async function handlePacket(c, data) {
// preset commands
case 'login':
var { username, password } = data;
Account.login(username, password)
.then(function (account) {
// this also sends the message
c.login(account);
}).catch(function (reason) {
c.sendLogin('fail', reason);
});
c.tryLogin(username, password);
break;
case 'register':
var { username, password } = data;
Account.register(username, password)
.then(function (account) {
// this also sends the message
c.register(account);
}).catch(function (reason) {
trace('error: ' + reason);
c.sendRegister('fail', reason.toString());
});
c.tryRegister(username, password);
break;

case 'lobby list':
c.sendLobbyList();
break;
case 'lobby info':
var lobbyid = data.lobbyid;
c.sendLobbyInfo(lobbyid);
if (lobbyExists(lobbyid))
c.sendLobbyInfo(lobbyid);
break;
case 'lobby join':
var lobbyid = data.lobbyid;
var lobby;
if (lobbyid) {
lobby = findLobby(lobbyid);
}
else {
lobby = MatchMaker.find_nonfull_lobby(c);
}

// it also sends the response
lobby.addPlayer(c);
if (lobbyExists(lobbyid))
c.lobbyJoin(lobbyid);
break;
case 'lobby leave':
var lobby = c.lobby;
Expand All @@ -120,20 +100,43 @@ export default async function handlePacket(c, data) {
}
break;

case 'room transition':
if (!c.room) {
case 'party join':
var partyid = data.partyid;
if (partyExists(partyid))
c.partyJoin(partyid);
break;
case 'party leave':
if (!c.party)
return;
}
c.partyLeave();
break;
case 'party disband':
if (!c.party)
return;
if (!c.party.isLeader(c))
return;

c.party.disband();
break;
case 'party invite':
var profileid = data.profileid;
var user = global.clients.find(u => u.profile.id === profileid);

var room_to_name = data.room_to;
var room_to = c.lobby.rooms.find(room => room.map.name === room_to_name || room.map.room_name === room_to_name);
c.room.movePlayer(c, room_to);
if (user)
c.partyInvite(user);
break;

case 'server timestamp':
c.sendServerTime(data.t);
break;

// #######################
// Add your commands here:

case 'player controls':
if (!c.entity)
break;

c.entity.inputs = {
move: data.move,
keys: {
Expand All @@ -147,8 +150,6 @@ export default async function handlePacket(c, data) {
kjump_press: data.kjump_press
}
};
c.entity.send();
// c.sendPlayerControls(data);
break;


Expand Down
Loading

0 comments on commit 0c1c3dc

Please sign in to comment.