Coder Social home page Coder Social logo

game's People

Contributors

dionysusnu avatar howmanysmall avatar jxl-s avatar prodmarrow avatar ukendio avatar web-flow avatar x5tb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

game's Issues

Map has no barriers

The map has simple walls as barriers, But these can easily be crossed over.
image
Example:
Almost anyone can just go over these obstacles to get over the walls.
image
There is another one here.
image
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.

Let's make it into an FPS.

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.

Spawn locations needs to be neutral

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.

bullet not visually updating

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();
}

Gun framework

Need some backend that to validate hits, make bullets be smooth no matter the delay, possibly look at FastCast.

Add recoil

The gun feel is pretty monotone without recoil changing the camera angle

boomerang/grenade

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 πŸ™ƒ

More tools!

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.

We need a main menu

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)

Needless CastShadow on parts

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.

Structures not accounting for player height

When roaming around, there are a few places which makes gameplay awkward.

image
The "window" here is placed too far up, making it awkward to see through it with the crosshair placed in the middle

image
Here the window is way too narrow height wise making it difficult to shoot enemies

Customizable Weapon Parts

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?

Weapon skins

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.

Damage Indicator

We need something to display how much we damaged the enemy player and the amount of damage that was applied.

Luck Unit

The luck unit should be able to dynamically be able to attach onto other units and by chance reject the client predictive layer somehow.

UI themes and custom chat

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

Custom Physics (Enhancement)

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.

Smart spawns

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.

Gun models

Need some test models for production, maybe take something from reddit.

Deploy

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.

Sound assets needed

We need sound assets for gun and heal units, currently the game isn't immersive without any sounds

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.