Firstly about name: it’s my third (and yet very successful) attempt to create this type game, firstly it was made on Unity and named “SHOT”. Then Unreal Engine 4 came out with it’s power-of-native-code with C++ and I’ve tried to merge to UE4. I used blueprints to make Actor bullets and got… big performance problems. I plunged headlong into C++ programming and created 1st Bullet System. There was a huge problems with it, because it was a first time I was using OOP in C++, so this project (still named “SHOT”) is abandoned: it’s extremely hard to change anything due to VERY bad OOP model. But it worked somehow… After 3-4 months I started to recreating Bullet System MUCH more accurately and now it is still beautifully written code easy to complete or change. But now, as it became more advanced I called it “Shot: Advanced”.
Current features:
- Extreme bullet count in scene (AMD Phenom II X6 1090T averagely handles 4500 bullets at the same time on one thread with no optimization, what is the worst or even impossible scenario)
- Advanced physical projectile reinterpretation (the only thing not used is gyroscopic moment)
- Full and unlimited firearm customization
- 100% Projectile path synchronized between clients (absolutely same path, but not guaranteed that with the same timing due to unstable ping)
- Possibility to save and load gun/bullet setup to and from disk, easily exchange with other people.
Planned features:
- Projectile types: bullet (material point), explosive (sphere with subemitters), rocket (discards gravity, accelerates by the time, subemitters), gas (effect-driven, like paralyze, electric damage, slow etc.)
- (Not sure it is possible for me) Different player characters: Cabot (capsule bot, very simple character, armored, just like a tank), Simple biped (walks, climbs, better handles recoil, runs very fast, harder to hit), Winged (same as biped, but with ability to fly, fragile, hates recoil, cloak)
- Game modes: DM, TDM, Last man standing, Last man standing teams, Platoon wars, Mission (PvE and PvP).
- Vehicles.
Current task list (28 Feb 2016) :
- Client-side shot, ping considering bullet resimulation.
- Make bullet penetration accurate and working. It’s implemented, but it causes almost no damage and has very strange behaviour.
- Balance, energy distribution (current limit 1000 Joules of heat energy, but for e.g. Barett M107 has shot energy 18000 Joules), recoil power, bullet explosion nerf (it currently has no dependencies and can be freely used without any side-effects, what is must not be)
- Make main menu already!
- Complete HUD: Make tuples for presets shortcuts (0-9 on keyboard), this is really uncomfortable to chose every time bullet and gun from library. Use numpad to directly input numbers, sliders are not very helpful. Use ‘+’ and ‘-’ to change value, for axis-type controls (gamepads).
- Tracers. Still don’t know how, because of their count, but tracers… yep, tracers…
- Create other projectiles, not only bullet.
- After task above implement subemitters, to allow exploding projectiles (like explosive or rocket) to emit bullets or gas.
- To be very continued…
Server connect:
Server: tilde of F10 (opens console); enter “Travel Map_Name?listen”, where Map_Name can be DM_Minimal or TDM_Range.
Client: open console; enter “Travel ip”, where ip - IP address of server (127.0.0.1 if on the same machine) without port.
Play!
You can use 2 instances of game at the same machine.
Setups/presets folder: System_Disk:/Users/Your_Username/Documents/sa/Setups/
How do I quit? Well… Alt + F4…
Actual stable build: OneDrive
Controls:
WASD - move;
LMB - shoot;
F - open/close gun/bullet setup menu;
T - open/close library;
R - cycle setup menu;
Note: to stop camera from rotating after menu was opened press RMB, I still figuring out how to make it through blueprints.
Setup menu usage: you have different setups for gun and bullet, gun determines how projectile will be fired, bullet - what is this projectile, these are different objects.
Gun has 3 sliders:
Projectile velocity - velocity of projectile in moment of shot. Affects output heat and recoil.
Fire Delay (must be used as RPM) - delay between shots. If 0 then gun is semi-automatic.
Bullet count - how many bullets will be fired in one shot. First bullet always flies directly in direction of gun/camera. Other bullets will be spread out according to resulting recoil. Acts like a direct multiplier to output heat.
Bullet has 4 sliders (2 merged) and 2 switches:
Energy multiplier - direct multiplier of damage. Affects output heat.
Mass - mass of the bullet in kg. Affects output heat and recoil.
Explosive - makes bullet able to explode.
Explosion radius - How far bullet can be explosive damage. Affects literally nothing, what needs to be fixed.
Sharp/Bouncy - Will bullet be sharp/bouncy?
Next slider - If it Bounce amount (switch above is bouncy) then it determines how much of velocity will remain after collision with the wall. If it Sharp amount then it determines how easily will bullet go through objects with some tricky formula.
Buttons:
“Save current setup to library” - If this setup has been selected from library, then this button will save changes to this setup in library (including name change).
“Save individual” - Actually saves/replaces by name - the basis of making new setups.
Library:
Force Load - forcefully reloads setup if something gone wrong.
Using library icons:
Click directly on icon - load and use.
Small red button - deletes current setup with validation popup window.
Small blue button - opens current setup for edit and applies to current loadout.
Yaaay! That’s all, finally!
Warning: 18+. Gun sometimes saying bad things…
Little showcase: Unavaliable due to database error I managed to upload two small screenshots, but can’t upload 4 more. There is no graphics in my game still, anyways, this is the last thing I will do.