Skip to content

Instantly share code, notes, and snippets.

View Srushtika's full-sized avatar
:octocat:

Srushtika Neelakantam Srushtika

:octocat:
View GitHub Profile
@Srushtika
Srushtika / server.js
Created June 9, 2020 20:15
Code snippet 16 - For multiplayer space invaders article
function startDownwardMovement(playerId) {
let interval = setInterval(() => {
if (players[playerId] && players[playerId].isAlive) {
players[playerId].y += PLAYER_VERTICAL_INCREMENT;
players[playerId].score += PLAYER_SCORE_INCREMENT;
if (players[playerId].y > SHIP_PLATFORM) {
finishGame(playerId);
clearInterval(interval);
}
@Srushtika
Srushtika / server.js
Created June 9, 2020 17:13
Code snippet 15 - For multiplayer space invaders article
function subscribeToPlayerInput(channelInstance, playerId) {
channelInstance.subscribe("pos", (msg) => {
if (msg.data.keyPressed == "left") {
if (players[playerId].x - 20 < 20) {
players[playerId].x = 20;
} else {
players[playerId].x -= 20;
}
} else if (msg.data.keyPressed == "right") {
if (players[playerId].x + 20 > 1380) {
@Srushtika
Srushtika / server.js
Created June 9, 2020 17:02
Code snippet 14 - For multiplayer space invaders article
function startGameDataTicker() {
let tickInterval = setInterval(() => {
if (!gameTickerOn) {
clearInterval(tickInterval);
} else {
bulletOrBlank = "";
bulletTimer += GAME_TICKER_MS;
if (bulletTimer >= GAME_TICKER_MS * 5) {
bulletTimer = 0;
bulletOrBlank = {
@Srushtika
Srushtika / server.js
Last active June 9, 2020 20:34
Code snippet 19 - For multiplayer space invaders article
function startShipAndBullets() {
gameOn = true;
world = new p2.World({
gravity: [0, -9.82],
});
shipBody = new p2.Body({
position: [shipX, shipY],
velocity: [calcRandomVelocity(), 0],
});
@Srushtika
Srushtika / server.js
Last active June 9, 2020 20:25
Code snippet 13 - For multiplayer space invaders article
function startGameDataTicker() {}
function subscribeToPlayerInput(channelInstance, playerId) {}
function startDownwardMovement(playerId) {}
function finishGame(playerId) {}
function resetServerState() {}
@Srushtika
Srushtika / server.js
Created June 9, 2020 14:38
Code snippet 12 - For multiplayer space invaders article
deadPlayerCh.subscribe("dead-notif", (msg) => {
players[msg.data.deadPlayerId].isAlive = false;
killerBulletId = msg.data.killerBulletId;
alivePlayers--;
if (alivePlayers == 0) {
setTimeout(() => {
finishGame("");
}, 1000);
}
});
@Srushtika
Srushtika / server.js
Created June 9, 2020 14:33
Code snippet 11 - For multiplayer space invaders article
gameRoom.presence.subscribe("leave", (player) => {
let leavingPlayer = player.clientId;
alivePlayers--;
totalPlayers--;
delete players[leavingPlayer];
if (totalPlayers <= 0) {
resetServerState();
}
});
@Srushtika
Srushtika / server.js
Created June 9, 2020 14:06
Code snippet 10 - For multiplayer space invaders article
gameRoom.presence.subscribe("enter", (player) => {
let newPlayerId;
let newPlayerData;
alivePlayers++;
totalPlayers++;
if (totalPlayers === 1) {
gameTickerOn = true;
startGameDataTicker();
}
@Srushtika
Srushtika / server.js
Last active June 9, 2020 13:53
Code snippet 9 - For multiplayer space invaders article
realtime.connection.once("connected", () => {
gameRoom = realtime.channels.get("game-room");
deadPlayerCh = realtime.channels.get("dead-player");
gameRoom.presence.subscribe("enter", (player) => {});
gameRoom.presence.subscribe("leave", (player) => {});
deadPlayerCh.subscribe("dead-notif", (msg) => {});
});
@Srushtika
Srushtika / server.js
Last active June 9, 2020 13:39
Code snippet 8 - For multiplayer space invaders article
const realtime = Ably.Realtime({
key: ABLY_API_KEY,
echoMessages: false,
});
//create a uniqueId to assign to clients on auth
const uniqueId = function () {
return "id-" + totalPlayers + Math.random().toString(36).substr(2, 16);
};