Giter Club home page Giter Club logo

proofps-dd's Issues

Understand Multiplayer WoW

E.g. if actions should be sent to server, server moves player by the actions, sends update back to client(s).
VS
Client mover player by the actions, sends updated position to server, server sends update back to clients.

Basic Weapon Controls

Collision with wpn items makes player pick up wpns.
Ability to switch between weapons.
Shoot (bullets are not needed to collide yet).
Different kind of bullet types (instant like railgun, flying like rocket, etc.), only 1 type is enough for now to work.

Setup Visual Studio 2022 Community Edition for WSL 2 debugging

Install WSL:
https://learn.microsoft.com/en-us/windows/wsl/install

Install GUI package and some GUI apps:
short:

sudo apt install x11-apps
sudo apt install gnome-text-editor -y
sudo apt install gimp -y
sudo apt install nautilus -y
sudo apt install vlc -y
cd /tmp
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt install --fix-broken -y
sudo dpkg -i google-chrome-stable_current_amd64.deb
google-chrome

long:
https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps
https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-11-with-gui-support#5-install-and-use-a-gui-package

Install SSH Stuff:

sudo apt install openssh-server
sudo service ssh start
sudo systemctl enable ssh

Install Wine for Ubuntu 22.04 with usually required libs:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install software-properties-common
wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
sudo apt install software-properties-common
sudo apt-add-repository "deb https://dl.winehq.org/wine-builds/ubuntu/ $(lsb_release -cs) main"
sudo apt update
sudo apt install --install-recommends wine-stable
sudo apt-get install libasound2-dev:i386 libjpeg8-dev:i386
sudo apt install openal-info
sudo apt-get install libpulse0:i386
sudo apt-get install libasound2-plugins:i386
sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport
sudo apt install --install-recommends wine-stable-i386
sudo apt install --install-recommends --fix-missing wine-stable-i386

Install some good-to-have stuff for Wine:

sudo apt install -y dosbox
sudo apt install -y playonlinux
sudo apt install -y winbind
sudo apt install -y wine-binfmt
sudo apt install -y winetricks
sudo apt-get install gstreamer1.0-plugins-good:i386

Run WineCfg to Change its Settings:
winecfg

To add Wine to the list of programs you can open exe files:

mkdir -p $HOME/.local/share/applications/
cp /usr/share/doc/wine/examples/wine.desktop $HOME/.local/share/applications/

Lot of MS fonts should be also installed:
sudo apt-get install ttf-mscorefonts-installer

Prepare Visual Studio to Connect to WSL:

sudo apt install net-tools
ifconfig

Check the IP address of the Ubuntu machine.
Add this IP address as new connection in Visual Studio: Options > Cross Platform > Connection Manager.

Setup VS for WSL:
https://learn.microsoft.com/en-us/cpp/build/walkthrough-build-debug-wsl2?view=msvc-170
In particular these subsections:

  • Install the build tools
  • WSL 2 and MSBuild-based Linux projects

https://learn.microsoft.com/hu-hu/cpp/linux/connect-to-your-remote-linux-computer?view=msvc-170&viewFallbackFrom=vs-2019

Generate Project CMake files:
Install cmakeconverter:
https://github.com/pavelliavonau/cmakeconverter

Run in solution directory, e.g.:

C:\__PR00F__\___developing___\projects\PGE-misc\src
cmake-converter -s PGE.sln

Load the Main Generated CMake files:
In VS, File > Open > CMake ...
Select the main generated CMake file: PGE-misc/src/CMakeLists.txt .
VS will display "CMake Overview Pages", make sure there you see green ticks for:

  • "workload installed"
  • "Windows Subsystem for Linux installed"
  • "have SSH connection".

Set up the CMakeSettings.json to have at least 1 WSL config, e.g.:
Configuration name: WSL-GCC-x86-Debug
Configuration type: Debug
WSL distribution name: Ubuntu
Toolset: linux_x86

Now change the Target System on the Toolbar above to "WSL: Ubuntu", the Configuration to "WSL-GCC-x86-Debug", and the Startup Item to whichever target you want to start debugging, e.g. PRooFPS-dd.
This will initiate the build and debugging.

https://learn.microsoft.com/hu-hu/cpp/linux/cmake-linux-project?view=msvc-170
https://learn.microsoft.com/hu-hu/cpp/linux/configure-a-linux-project?view=msvc-170
https://learn.microsoft.com/hu-hu/cpp/linux/deploy-run-and-debug-your-linux-project?view=msvc-170

Good-to-know for Networking:
https://learn.microsoft.com/en-us/windows/wsl/networking

FTR: DeathMatch Time Limit

DeathMatchMode already supports time limit, but the game should use it differently than frag limit. Because number of frags is always updated across all players, so frag limit cross can be detected instantly by any player, but in case of time limit, only server knows WHEN the game actually started. And I dont want to update remaining time in server -> client direction in every frame. I would just let the server track the remaining time, and send a special packet to every player when time elapsed (in general, it should be a packet saying game ended, and the reason of the end). In this case even frag limit could be handled this way.

Depends on: #314

and

Depends on: #248 .

Basic Player Controls

Look around with mouse (xhair), WASD moves player, space jumps.
Camera follows the player. On the long run, camera should be configurable how smooth it should follow the player.

Network Lib Pre-Study

Browse for open-source libs and understand their pros and cons, then select 1 to use.

Audio Lib Pre-Study

Browse for open-source libs and understand their pros and cons, then select 1 to use.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.