project-imprimis / imprimis Goto Github PK
View Code? Open in Web Editor NEWImprimis, the team based destroyable world shooter game
Home Page: https://project-imprimis.github.io/www/
Imprimis, the team based destroyable world shooter game
Home Page: https://project-imprimis.github.io/www/
With the game pivoting to having the server managed by a standalone application, keeping singleplayer code (which does not have to connect to any server at all) is a recipe for having to maintain separate, nearly identical codebases. No client functionality should be lost by instead having a dedicated server always spooled up on 127.0.0.1 to takes the local server's place.
C
should open the class selection menu by default, however it currently does not seem to do anything.
Changing class with commands works fine.
Melee is useless in gameplay and unwieldy to use, so the game should drop it.
Is your feature request related to a problem? Please describe.
The Windows version of Imprimis has previously been prone to being unbuildable due to the solution project not being maintained properly. Adding continuous integration will make it easier to find and fix Windows build errors.
Describe the solution you'd like
Using Github CI, Windows builds can be automated
Describe alternatives you've considered
Manually building has been what Imprimis has historically done, but it is prone to human error and wastes valuable contributor time.
Other CI providers tend to not have Windows options available or cost a decent amount.
Additional context
N/A
Player may suddenly find themselves unable to do damage despite hitting opponents.
It appears to be a problem with networking, the solution is to restart the game.
The notepad/text editor is a bloated feature that has no place in a project whose goal is to simplify and concentrate the building blocks of a game.
It and the files that create it should be destroyed.
Describe the issue
After spectating, for example, choosing the "Spectate" button from the main menu during a game, the weapon indicator in the HUD's bottom-right does not disappear.
Expected behavior
The weapon indicator should be hidden while spectating because the spectator is not holding any weapons. Alternatively, it could show the currently selected weapon when the spectating mode is set to follow a specific player.
The engineer is able to partially or fully trap himself within newly built geometry.
In this example, on a new map, I was able to completely enter the mesh with first person camera by building just three cubes while walking towards them:
Partially embedding the player character in the wall does not allow walking further into it, but the model/weapon nonetheless clips into it.
It looks like the game so far only relies on the weapon's push-back to prevent this.
It should instead check whether the player is standing where the new cube will appear in relation to the player, either pushing them further, refusing to build, or building it up as if someone was extruding the face (animated to provide a visual cue for the pushing effect, or simply stopping when the player is reached leaving behind a partial cube).
Describe the issue
GitHub Actions is currently emitting warnings about outdated dependencies using Node 12 instead of 16, and pending sunsetting of a feature a dependency seems to use.
Expected behavior
We should be regularly updating our actions dependencies.
Important Information:
Dependabot has a feature for this, perhaps we can automate CI updates?
Since the game's current theme means rather bright colors on the maps, the white UI can be hard to read at a glance. To improve this, we could:
put drop shadows behind all the elements,
add gradient bars (I personally find this option to be least intrusive),
add permanent vignette, and only color it red when receiving damage,
How exactly they should look is up for debate (sizing, gamma…).
Apologies for small glitches in the images, I didn't notice them when working in a smaller window.
Is your feature request related to a problem? Please describe.
The Linux platform should receive the same amount of continuous integration build support as the Windows platform, preferably hosted on the same platform (GitHub Actions)
Describe the solution you'd like
Add a build workflow for Linux builds
Describe alternatives you've considered
Semaphore CI currently exists, but build artifacts are not made available afterwards, reducing the convenience of this feature.
Describe the issue
The launcher script for Imprimis on Windows refers to the executable as tesseract.exe
, even though a new build of the game produces imprimis.exe
.
Expected behavior
The script should launch the executable under its new name.
Important Information:
I replaced the clipped-to-hell hit sound, but I think its harmonics are too strong and its fundamental frequency is too high. A replacement would make it easier on the ears while making hits obvious.
Due to the inability to cd
into the execution directory, as a workaround, snaps must use the snap directory as their home directory for now. Because snaps are read only, nobody can actually save settings or screenshots if they are using the snap version of the game. The solution to this is to allow setting a media and home directory separately, rather than the hardcoded path currently used of .
Describe the issue
In the installation instructions, the user is told to clone the libprimis repository when it appears that cloning the imprimis repository is what is actually intended.
Expected behavior
The provided clone command should refer to the imprimis repository instead.
Important Information:
found in 865d305
Describe the issue
When a player dies with their weapon hot and respawns shortly after, their rate of fire is still inhibited.
How to reproduce
Expected behavior
Physically, it does not seem natural for your weapon to retain the characteristics of the previous one, especially since you can often see your ragdoll carrying that weapon, implying you are provided a new one every time you respawn. If this behavior is an intentional gameplay mechanic, perhaps the user should be presented with a different death scheme visualization for consistency.
Currently there's the normal crosshair, additional hit marker, and a circle to indicate weapon heat. Unfortunately they all look different and the heat indicator is not easily readable.
My suggestion is to:
The current authentication system has numerous architectural flaws and needs to be addressed from scratch. This change includes aspects of the master, client, and server sides of the program.
Occurs when bots begin to move.
Imprimis vers.:
commit 30d787e
Libprimis vers.:
commit a1033bb8e7686e31571b00edc3a8407c25bf8219
gdb output:
Starting program: /home/doudmg/imprimis/native_client
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff5a32640 (LWP 14729)]
[New Thread 0x7fffe98c8640 (LWP 14732)]
[New Thread 0x7fffe8f86640 (LWP 14733)]
[New Thread 0x7fffe3fff640 (LWP 14734)]
[New Thread 0x7fffe37fe640 (LWP 14735)]
[New Thread 0x7fffe2ffd640 (LWP 14736)]
[Thread 0x7fffe2ffd640 (LWP 14736) exited]
[New Thread 0x7fffe2ffd640 (LWP 14737)]
[Thread 0x7fffe2ffd640 (LWP 14737) exited]
[New Thread 0x7fffe8185640 (LWP 14739)]
[New Thread 0x7fffe2ffd640 (LWP 14740)]
[Thread 0x7fffe2ffd640 (LWP 14740) exited]
[New Thread 0x7fffe2ffd640 (LWP 14741)]
[New Thread 0x7fffe21f9640 (LWP 14742)]
[Thread 0x7fffe8185640 (LWP 14739) exited]
[New Thread 0x7fffcffff640 (LWP 14743)]
[New Thread 0x7fffcf7fe640 (LWP 14744)]
[New Thread 0x7fffceffd640 (LWP 14745)]
[New Thread 0x7fffce7fc640 (LWP 14746)]
[New Thread 0x7fffcdffb640 (LWP 14747)]
[New Thread 0x7fffcd7fa640 (LWP 14748)]
[New Thread 0x7fffccff9640 (LWP 14749)]
[New Thread 0x7fffaffff640 (LWP 14750)]
[New Thread 0x7fffaf7fe640 (LWP 14751)]
[New Thread 0x7fffaeffd640 (LWP 14752)]
[New Thread 0x7fffae3fc640 (LWP 14761)]
Thread 1 "native_client" received signal SIGSEGV, Segmentation fault.
0x00005555555c1cd0 in ai::waypointai::hasrange(gameent*, int) ()
System information:
AMD® Ryzen 7 5825u with radeon graphics × 16
RENOIR (renoir, LLVM 15.0.6, DRM 3.42, 5.15.0-60-generic)
Ubuntu 22.04.1 LTS 64-bit
Gnome vers. 42.5
Wayland
Dell Inc. Inspiron 14 7425 2-in-1 16.0 GiB
Four entities have been removed since the project forked from Tesseract, and three .cfg
files need to be updated to no longer show dialogs for these obsolete entities.
Line numbers were created as of commit 9246716.
Keep in mind that if you delete lines, the subsequent line numbers will be inaccurate, so it would be advisable to work from the bottom of each file up to the top.
default.cfg
fkey.cfg
jumppad
(28, 124–157)teleport
and teledest
(31–32, 173–211)flag
(38, 39)looplist
call (53)stedit.cfg
teledest
from line 1500
in line 151The game does not have real support for on-world items, so the remnants of code (kept around from the engine's legacy as an arena shooter platform) implementing world entities no longer need to be there. The realtime modification of the world makes the existing support untenable, anyways.
Functions to remove include:
entities.cpp: spawnitems()
putitems()
ai.cpp itemspawned()
dointerest()
cserver.cpp canspawnitem()
The function game::spawnbouncer takes a vector vel
which presumably encodes velocity, but it doesn't get used for anything. The intended purpose of this argument should be found if possible, but if not, the argument should be removed to prevent confusion.
The AI code is an ideal choice for object orientation, as its functions are only used by a limited part of the program (making the bot do bot things) and is used in multiple instantiations (one AI for each bot).
Players who leave the playable area (most notably by flying out of it using a parachute) become invisible while still being able to attack.
Possible solutions include making an invisible wall on the map's perimeter, as well as making the water area much larger (that is already planned for other maps).
Is your feature request related to a problem? Please describe.
As of right now, on every iteration of the CI flow, the flatpak builder has to re-download and re-build all dependencies, including SDL and GLEW. Due to the fact that we are not frequently updating these libraries, we are wasting compile time on cacheable artifacts.
Describe the solution you'd like
We can have GitHub actions cache flatpak build artifacts, so libraries can be reused.
Describe alternatives you've considered
None
Additional context
Sorry for forgetting to file an issue until after it was done - I had been pondering this for a few months but only got around to implementing just now
As-is, the engineer does not propose very interesting or enjoyable gameplay. In particular:
It's quite hard to build walls properly quickly, especially from cover. My suggestion would be to, instead of just gluing a cube to the face hit, have it follow some simple physics-like rules, such as:
The weapon does not seem to affect enemies. If it's not supposed to have actual damage, I'd suggest knocking enemies back (perhaps causing damage if they hit a wall).
Describe the issue
After a user dies with the engineer Block Layer equipped, a wireframe cube still appears where the camera is "aimed."
Expected behavior
The game should not display effects for a weapon that cannot be used (in this case because the player is dead).
Important Information:
Describe the issue
Upon compilation using make, it fails with the following:
game/game.h: In member function 'virtual void game::clientmode::pickspawn(gameent*)':
game/game.h:791:46: error: 'findplayerspawn' was not declared in this scope
791 | virtual void pickspawn(gameent *d) { findplayerspawn(d, -1, modecheck(gamemode, Mode_Team) ? d->team : 0); }
| ^~~~~~~~~~~~~~~
In file included from game/cserver.cpp:1:
game/game.h: In member function 'virtual void game::clientmode::pickspawn(gameent*)':
game/game.h:791:46: error: 'findplayerspawn' was not declared in this scope
791 | virtual void pickspawn(gameent *d) { findplayerspawn(d, -1, modecheck(gamemode, Mode_Team) ? d->team : 0); }
| ^~~~~~~~~~~~~~~
In file included from game/edit.cpp:1:
game/game.h: In member function 'virtual void game::clientmode::pickspawn(gameent*)':
game/game.h:791:46: error: 'findplayerspawn' was not declared in this scope
791 | virtual void pickspawn(gameent *d) { findplayerspawn(d, -1, modecheck(gamemode, Mode_Team) ? d->team : 0); }
| ^~~~~~~~~~~~~~~
In file included from game/client.cpp:3:
game/game.h: In member function 'virtual void game::clientmode::pickspawn(gameent*)':
game/game.h:791:46: error: 'findplayerspawn' was not declared in this scope
791 | virtual void pickspawn(gameent *d) { findplayerspawn(d, -1, modecheck(gamemode, Mode_Team) ? d->team : 0); }
| ^~~~~~~~~~~~~~~
Inspecting the code, it seems like the function is declared in "entities.cpp" but not added to the correct header files, thus causing the error.
I'd fix this myself but I have no idea what to touch
Important Information:
Describe the issue
The block layer can build blocks directly where the player is standing. Completely building around a player's collision model allows the player to clip through walls and floors.
Expected behavior
A block should not be able to be placed where a player is standing
The current UI system utilizes many magic constants in its padding and object sizes which should be standardized to modifiable constants. Using proper constants for this behavior should make it possible to clearly standardize UI forms and make uniform UX design simpler.
One of the ways that Imprimis can reach a broader audience is by having support for multiple languages in its UIs and interfaces.
There are two main distinct parts of the game that need to be handled separately, and they are as follows:
The CubeScript based UIs, which needs:
The C++ based console interfaces, which needs:
In the long term, revisions to tessfont
may be needed to expand language support beyond the Latin-based alphabets currently supported. However, without this, it is still possible to add support for most Romance and Germanic languages.
How to reproduce
c
to copy it.v
to paste the geometry.Game crashes and console says:
inconsistent msg size for 45 (14 != 15)
This appears to come from the following:
Lines 1177 to 1180 in 2af7aa8
Expected behavior
Whatever geometry was in the selection when copying should be duplicated in the selection when pasting.
Important Information:
Describe the issue
For a long time, the Visual Studio solution file has failed to build due to the fact that many files were not registered as source code files.
Expected behavior
The files should be registered in the solution.
Important Information:
Describe the issue
The weapon recoil animation seems to be played whenever the attack button is pressed, not whenever the weapon actually shoots. This leads to visual inconsistency and even confusion if playing without sound.
How to reproduce
Expected behavior
Recoil animation only plays when the weapon fires.
could reproduce on 865d305
When switching away from the standard display window to another teletypewriter, the game times out and disconnects. This may be caused by the networking update code being tied to the refresh rate, which is not happening because the X environment is not being shown.
This is an incredibly niche issue and should affect almost nobody, since using the teletypewriters is fairly uncommon and usually completely avoidable.
Of course, since only Linux installations even have teletypewriter terminals, this issue only affects Linux users.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.