I’m making a 1v1 fighting game and I wanna have a single-player mode for practicing that will use a bot as the second player, however, I don’t have much experience with this so I’m not too sure of a good way to go about it. For clarification, I’m not asking how to do AI since I know that’s a big topic and I already have an idea of how to do that, I’m just trying to figure out how I can create/spawn a bot player and have some basic control over it like killing it, respawning, changing it’s position, etc
This is my current code on the server it’s a pretty bare-bone version of what you can find on the Chickynoid github. The thought process for me was basically being able to create a real player by passing a player instance when creating the player object or creating a bot by not passing one.
local Server = {}
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local Player = require(ServerScriptService.Modules.Player)
local playerObjects = {}
local function addConnection(userId, player)
if playerObjects[userId] ~= nil then
warn("Player was already connected.", userId)
-- disconnect them
end
local playerObject = Player.new(userId, player)
playerObjects[userId] = playerObject
return playerObject
end
local function playerConnected(player)
local playerObject = addConnection(player.UserId, player)
end
local function playerDisconnected()
end
function Server.initialize()
Players.PlayerAdded:Connect(playerConnected)
Players.PlayerRemoving:Connect(playerDisconnected)
local dummyPlayerObject = addConnection(0, nil) -- Makes a dummy/bot player
end
return Server
local Player = {}
Player.__index = Player
local ReplicatedStorage = game:GetService("ReplicatedStorage")
function Player.new(userId, player)
local self = setmetatable({}, Player)
self.player = player
self.userId = userId
self.dummy = not player
self.characterType = nil -- will determine what the character/figher they're playing as
if self.dummy then
self.character = ReplicatedStorage.Assets.Models.Dummy:Clone()
self.character.Parent = workspace
elseif not self.dummy then
self.character = player.Character or player.CharacterAdded:Wait()
end
return self
end
function Player:setCharacterType(characterType)
self.characterType = characterType -- or getRandomCharacter() (not implemented yet)
end
return Player