Daily Post Image from Upsplash

March: 19

Notes

2024

Proxy

Proxy Paths and URL Mapping

In their notes, I noticed that they would require Static IP Addresses, this will not be a major problem as of right now but it could be in the future.

const protocol = `https`;
const clientId = '<YOUR CLIENT ID>';
const proxyDomain = 'discordsays.com';
const resourcePath = '/foo/bar.jpg';
const url = new URL(`${protocol}://${clientId}.${proxyDomain}${resourcePath}`);

This is an example of the full url construction.

We might run into an issue where we might have to patchUrlMappings, when trying to use the react helmet!

An example of wrapping it using patch-package:

import { DiscordSDK } from '@discord/embedded-app-sdk';
const discordSdk = new DiscordSDK(YOUR_APP_ID);
const isProd = process.env.NODE_ENV === 'production'; // Actual dev/prod env check may vary for you

async function setupApp() {
	if (isProd) {
		discordSdk.patchUrlMappings([{ prefix: '/foo', target: 'foo.com' }]);
	}
	// start app initialization after this....
}

And the warning, for future cases:

Note: patchUrlMappings is modifying your browser’s fetch, WebSocket, and XMLHttpRequest.prototype.open global variables. Depending on the library, you may see side effects from using this helper function. It should be used only when necessary.


Three

Going to take a quick break from the proxy note taking and now I am going to focus on setting up the Three-webGL application!

This is just to test case the three and phaser integration but keeping notes of it as well.

The initial command would be: pnpm nx g @nx/react:app react-phaser-three --bundler=vite

Afterwards I just quickly merged those changes with ernie and his changes, thus creating a complete set of changes.

Libraries we would need to install:


enable3d A standalone 3D Framework on top of three-graphics.
@enable3d/phaser-extension Allows to integrate the three-graphics package into your Phaser 3 Games.
@enable3d/ammo-physics The core Physics package. Wraps ammo.js physics.
@enable3d/ammo-on-nodejs Enables you to run ammo.js on your node.js server.
@enable3d/three-graphics The core 3D Objects package. A beautiful API for many three.js elements.
@enable3d/three-wrapper Wraps the three.js library and some of its examples in one package.
@enable3d/common Some common code used by almost every package.

To install all the libraries that we would need:

Run this command: pnpm install enable3d @enable3d/phaser-extension @enable3d/ammo-physics @enable3d/ammo-on-nodejs @enable3d/three-graphics @enable3d/three-wrapper @enable3d/common

Afterwards! We went ahead and tested the Enable3D Engine!

Build Command: ./kbve.sh -build react-phaser-three Serve Command: ./kbve.sh -nx react-phaser-three:serve


Buildathon

Lets start the generic buildathon for this test casing!

The first package we will need is the colyseus.js, which we can just run pnpm install colyseus.js and we should be save.

Next we add in the backend packages.



  "dependencies": {
    "@colyseus/monitor": "^0.14.22",
    "@colyseus/schema": "^1.0.34",
    "@colyseus/uwebsockets-transport": "^0.14.28",
    "@colyseus/ws-transport": "^0.14.21",
    "colyseus": "^0.14.23"

  },

To add these, we will run this: pnpm install colyseus @colyseus/monitor @colyseus/schema @colyseus/uwebsockets-transport @colyseus/ws-transport

The next libraries we might need are :


"dependencies": {

    "cross-fetch": "^3.1.5",
    "dotenv": "^16.0.1",
    "express": "^4.17.1",
    "http-proxy-middleware": "^2.0.6",
    "uwebsockets-express": "^1.2.2"
}

Next would be the devDependencies that we could include:


  "devDependencies": {
    "@types/express": "^4.17.11",
    "@types/node": "^14.14.22",
    "nodemon": "^3.0.3",
    "npm-run-all": "^4.1.5",
    "rimraf": "^3.0.2",
    "ts-node": "^10.9.1",
    "typescript": "^5.2.2"
  }

For now, I will skip these and switch gears back to the enabled3d for Phaser.

Perfect! We can start to mess around with the library now!


Prettier

It seems that the prettier plugin was crashing because of an astro override, I think I was able to get it resolved.


	"plugins": ["prettier-plugin-astro"],
	"overrides": [
	  {
		"files": "*.astro",
		"options": {
		  "parser": "astro"
		}
	  }
	]


Ammo

The next move would be to use ammo for the front and backend!