Giter Club home page Giter Club logo

proofps-dd's Introduction

PRooFPS-dd

Click to see the video!

Summary

This game is the successor of the original PR00FPS made in 2007.
It uses my open-source game engine.

This game is still under development.

Version History
Kanban Board View for 2024 to Reach Public Beta 1
Roadmap View for 2024 to Reach Public Beta 1
Known Bugs
Known Network Performance Issues
Other Performance Issues
Full Backlog

You can follow the project on my facebook page.

Try the Game

The latest available download version v0.2.3 Private Beta is here.
If the game cannot start due to missing DLL files, this Visual C++ Redistributable Package should be installed.

Version history is here.

Run the Game

Simply run PRooFPS-dd.exe.
From the main menu, you can either start a new server or join to an existing one.

Keyboard, Mouse

Movement

  • A/D, LEFT/RIGHT: strafe: move the player in either left or right direction;
  • LSHIFT: toggle move speed: walking or running;
  • SPACE: jump;
  • LCTRL: crouch/duck.

On-the-ground somersault: hold crouch/duck key down, then press the appropriate strafe key twice (depending on in which direction you want to perform the somersault).

In-air salto/somersault: jump-crouch-jump or jump-jump combo, depending on server configuration of CVAR sv_somersault_mid_air_auto_crouch.

Weapons

  • 2,3,4 / Mouse Wheel: change weapon (pistol, machine gun, bazooka);
  • R: reload current weapon;
  • Mouse Click: attack (fire weapon).

Misc

  • TAB: show frag table;
  • M: switch to next map based on mapcycle.txt (server only);
  • ENTER/RETURN: if testing=true CVAR is defined, it makes a dump of testing data into RegTestDumpServer.txt or RegTestDumpClient.txt;
  • T: if instance is server, it respawns the player to a random spawnpoint and dumps debug data to console window.

Debugging

If you have any problem with the game, it is always recommended to save the latest generated log file(s) from the game's main directory.
Their file name format is: log_<hostname>_<date>_<time>.html .
Since they are saved in HTML format, it is easy to open and read them in your favourite web browser, but what is better is if you send them to the developer.

If you have performance issues and you are running the server instance of the game, pressing 'T' key anytime during the game saves extra information into the HTML log file.

If you have network related issue, you can check real-time network statistics by displaying the frag table by pressing the 'TAB' key.
Note that some network statistics are also saved into the HTML log file whenever a client- or server instance disconnects.

FAQ

Mouse Cursor is Not Visible in Fullscreen Menu when OBS Studio is Running, How to Fix It?

This seems to be an issue which does not happen on all computers but when it happens then most probably you have a "Display Capture" set as Source in OBS Studio.
Sometimes simply switching to another application and then switching back to the game (ALT+TAB, then ALT+TAB again) resolves the issue, so this should be the first thing you try.
As a next idea to resolve this issue, go to the Properties of your "Display Capture" Source and try to change the Capture Method to "DXGI Desktop Duplication", also make sure "Capture Mouse" is checked.
If this does not help, remove "Display Capture" from Sources, start the game, then switch to OBS Studio (ALT+TAB), add a "Window Capture" Source and select the game window. You might also need to change the Capture Method too.
If the issue still persists, try to upgrade OBS Studio, your video card driver, or just simply turn Fullscreen mode off in game settings when you are using OBS Studio in parallel.

Why the Compressed Release is So Big?

At this point of development, I'm not really concerned about the disk space usage of my game. We are talking about a ZIP file less than 10 MiBytes.
I'm also fully aware of the existence of a big UNUSED texture file in map_warhouse directory, and I also know that textures could be downscaled a bit.
Believe it or not but there is also a build configuration issue that results in unnecessary big executable size.
Look at the version number and you will understand why disk space usage is really not my number 1 priority at this point.

Build

You must have the Visual Studio solution file including other relevant projects as well in PGE-misc repo.
Follow the build instructions in PGE-WoW.txt.
As described in that file, you need to build other projects before PRooFPS-dd can be built.

proofps-dd's People

Contributors

elmisto avatar proof88 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

elmisto

proofps-dd's Issues

Network Lib Pre-Study

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

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 .

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.

Audio Lib Pre-Study

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

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.

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

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.