ukendio / game Goto Github PK
View Code? Open in Web Editor NEWLicense: Mozilla Public License 2.0
License: Mozilla Public License 2.0
The map has simple walls as barriers, But these can easily be crossed over.
Example:
Almost anyone can just go over these obstacles to get over the walls.
There is another one here.
I could go on and on finding locations where this is possible. If someone were to cross over the walls there is no way back and they would be stuck there. The problem is that there should be something there to stop them, either making the obstacles shorter or farther, or the easier solution, creating map barriers by placing invisible walls right above the visible walls, that way if someone were to try and jump over the wall, they would hit the invisible brick and fall straight to the ground.
This game has zero direction at the moment, but I am thinking we can make a some cool first-person shooter game, because why not? Who doesn't like making a FPS.
All spawn locations needs to be neutral for the smart spawn code to work. Therefore there needs recolouring of the spawns and possibly a redesign. I suggest all spawns are just invisible spawn locations.
Despite the CFrame clearly changing, the bullet is not updating?
import { RunService, Workspace } from "@rbxts/services";
import { copyShallow } from "./tableUtil";
interface Options {
overrideDistance?: number;
stepDistance: number;
currentPosition: Vector3;
currentNormal: Vector3;
currentDistance: number;
maximumDistance: number;
bullet: BasePart;
filter: Instance[];
}
function step(options: Options) {
const rayCastParameters = new RaycastParams();
rayCastParameters.FilterDescendantsInstances = options.filter;
rayCastParameters.FilterType = Enum.RaycastFilterType.Blacklist;
let currentPosition = options.currentPosition;
const currentNormal = options.currentNormal;
const direction = currentNormal.mul(options.overrideDistance ?? options.stepDistance);
const result = Workspace.Raycast(currentPosition, direction);
const position = result?.Position ?? currentPosition.add(direction);
const laser = options.bullet;
laser.Size = new Vector3(0.4, 0.4, position.sub(currentPosition).Magnitude);
laser.CFrame = new CFrame(currentPosition.Lerp(position, 0.5), position);
print(options.currentPosition, laser.CFrame);
const oldPosition = currentPosition;
currentPosition = position;
if (result) {
const normal = result.Normal;
const reflect = currentNormal.sub(currentNormal.mul(currentNormal.Dot(normal)).mul(2));
const newOptions = copyShallow<Options>(options);
newOptions.currentPosition = position;
newOptions.overrideDistance = options.stepDistance - position.sub(oldPosition).Magnitude;
newOptions.currentNormal = reflect;
print(newOptions.currentPosition === options.currentPosition);
step(newOptions);
return;
}
const newOptions = copyShallow<Options>(options);
newOptions.currentDistance += position.sub(oldPosition).Magnitude;
const currentDistance = newOptions.currentDistance;
const maximumDistance = newOptions.maximumDistance;
if (currentDistance > maximumDistance - 75) {
const d = (currentDistance - (maximumDistance - 75)) / 75;
laser.Transparency = d;
}
if (currentDistance < maximumDistance) {
RunService.RenderStepped.Wait();
step(newOptions);
}
}
export function ricochet(startPosition: Vector3, startNormal: Vector3, filter: Instance[]) {
const laser = new Instance("Part");
laser.CanCollide = false;
laser.Size = new Vector3(0.2, 0.2, 0.2);
laser.Anchored = true;
laser.Parent = Workspace;
laser.Name = "Laser";
print("ricochet");
const maximumDistance = 200;
const currentDistance = 4;
const stepDistance = 4;
step({
stepDistance: stepDistance,
currentPosition: startPosition,
currentNormal: startNormal,
currentDistance: currentDistance,
maximumDistance: maximumDistance,
bullet: laser,
filter: filter,
});
laser.Destroy();
}
Need some backend that to validate hits, make bullets be smooth no matter the delay, possibly look at FastCast.
The gun feel is pretty monotone without recoil changing the camera angle
imagine if you could throw a boomerang, that would be epic
the boomerang would fly straight and then fly straight back, it would of course go in a straight line and it would obv spin while doing it
also what if we had a grenades in the game, epic!
I could work on the two models or script them if you want π
We already have a gun, but how about a knife? A knife would be a good option to give someone a better option at close range, there could be a hotkey on your keybord to use it, or a number such as 2.
Currently it is awkward to join the game without a main menu, I was thinking something along the lines of Boxing league, where the camera orients around the movement of the mouse.
Tob made something that could be implemented
local MAX_MOVE_X = 5
local MAX_MOVE_Y = 5
local defaultCF = CFrame.new(0, 10, 5)
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
camera.CFrame = defaultCF
camera.CameraSubject = nil
game:GetService("UserInputService").InputChanged:Connect(function(inputObj)
print(inputObj)
if inputObj.UserInputType == Enum.UserInputType.MouseMovement then
local xOffsetFromCenter = (inputObj.Position.X / camera.ViewportSize.X) - 0.5
local yOffsetFromCenter = -((inputObj.Position.Y / camera.ViewportSize.Y) - 0.5)
camera.CFrame = defaultCF * CFrame.new(MAX_MOVE_X * xOffsetFromCenter, MAX_MOVE_Y * yOffsetFromCenter, 0)
end
end)
Some of the parts on the map I've created have castshadow needlessly on, The map has 2800 parts and every part that CastShadow isn't required on should be turned off to improve performance.
hey what if we could unlock weapon parts like a scope or letβs say a knife attachment in game
ik phantom forces has this but I think we can make it unique by doing it differently
example what if you unlock parts by completing challenges instead of buying them
maybe you can unlock parts in secret parts of the game
also if this is added I feel like we should have unique attachments for each weapon so they are not always the same
what do you guys think?
Right now there is one gun and thats it, I think weapon skins would give the game more of a visual variety to already current weapons. Maybe keep players in the game longer? Such as skins as a reward for doing something ingame, Like kills, play time, or anything else. After all whats better then grinding for hours to get a skin for your favourite weapon? I think skins would be a good addition to the game in the future for these reasons.
We need something to display how much we damaged the enemy player and the amount of damage that was applied.
it is awkward seeing a floating gun, need some camera arms
The luck unit should be able to dynamically be able to attach onto other units and by chance reject the client predictive layer somehow.
At further distances, hitmarks are barely visible.
We want to reference something like TF2 or Arsenal.
https://youtu.be/VdV7Yvwd-u0?t=228
But the only way to do that is spawning an instance with a billboardgui & scale & sizeconstraint? Not so keen that every shot spawns a new instance.
There should be a crosshair that is specifically tailored for fps gameplay
imagine if you could change how the UI would feel if we added themes
we can add different colors or maybe even styles to the UI
also what if we had a custom chat so we could mess with UI even better
that would be pretty nice
Need to fix this upstream. Will ask suyoin to update the npm package
The game will need some unique features to Roblox. I haven't seen a game on Roblox with Titanfall movement before, and it would be a nice addition. We can start this by making an engine that will replicate Arsenal's wacky movement, and then add features that will be unique to our game. Features that I would like to see are wall runs, grabble, air strafing.
In this FFA game, we want players that die to respawn at a location with the least enemy players around.
We have a set of spawn locations which are essentially just positions stored in an intrinsic set. A naive O(mn) approach would be iterate through the set and add all players distance relative to the position and compare with last spawn in the set. Another solution could be using Region3 which is relatively expensive, only check players within a certain radius of the spawn and add amount of players to that value in the set.
Need some test models for production, maybe take something from reddit.
The framework doesn't seem robust enough to scale, so will consider rework.
There's an ability of wyverns to deploy a shield that makes all bullets bounce off it
Players shouldn't be thrown into battle as soon as they join, rather prompt them with a button so that they can actively deploy into the map and battle.
We need sound assets for gun and heal units, currently the game isn't immersive without any sounds
Very arbitrary data but first few shots usually are okay and then as the fabric reactor gets pushed > 3 times, shots stops rendering
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.