Порядочность — Дотерский показатель ваших внутриигровых действий и общения с игроками.

Порядочность

  • меньше 3000. Нельзя играть рейтинговые игры
  • меньше 5000. Нельзя ставить паузы
  • меньше 10000. Нельзя вызывать и быть тренером

Вежливость 

  • меньше 3000. Ограничение по сигналам и чат фразам
  • меньше 5000. Нельзя рисовать на мини карте
  • меньше 6000. Недоступен текстовый чат
  • меньше 7000. Недоступны типы
  • меньше 8000. НЕдоступен голосовой чат

За что снимают порядочность и как ее повышать?

Valve данный показатель сделали как нейросеть, которая смотрит на огромное количество факторов.

Главный триггер на снижение порядочности это репорты (жалобы). Минимизируйте количество репортов. 

Своевременно покинутая игра. Даже если у вас «уважительная причина» — выключили свет, проблемы с интернетом и тд. Вы получите снижение порядочности и пару репортов вдогонку. 

Комьюнити дотеров максимально токсичное, любой неудачный поступок приводит к получению жалобы. От мата в голосовом чате, до насмешки персонажем. Старайтесь быть терпеливыми.

Никнеймы и профиля делайте нейтральными, за них часто прилетают репорты ещё до старта игры.

Лайки и MVP дают очень маленький коэффициент к увеличению порядочности, но ставить их в конце игры обязательно.

Играем на своей роли и предрасположенным под эту роль героем. 

Старайтесь играть в пати, так шанс получения репорта от вражеской команды в разы меньше. 

Торбо режим не дает преимущества по набору порядочности. 

В рейтинговых играх играем против соло игроков. Если вы попали в пати из четырех игроков, высока вероятность получить сразу четыре репорта. 

Оказаться внизу рейтинга порядочности — то еще удовольствие. Играть становится сложно, люди вокруг — сплошной негатив. 

 Чтобы выбраться, не нужно никаких секретных техник — просто пересмотри свое поведение. Главная задача: получать как можно меньше жалоб. Старайся быть незаметным и вежливым. Система следит за цифрами — если перестанешь давать ей поводы для штрафов, твой уровень порядочности сам поползет вверх.  

Мир и Физические Объекты

Любая игра в Roblox начинается с объекта Part. Это базовый кирпичик вашего мира.

Трансформация Используйте Move (движение), Scale (размер) и Rotate (вращение) для изменения формы блока.
Properties В окне свойств можно изменить Material (вид) и Color (цвет) любого объекта.
Transparency Значение 0 — объект виден, 1 — объект полностью прозрачен (невидим).
Union (Отверстия) Нажмите Negate на одном блоке, соедините с другим и выберите Union, чтобы сделать дырку.

Terrain (Ландшафт)

Используйте Terrain Editor для рисования гор, рек и травы. Это делает карту живой.

Персонажи и NPC

Чтобы изменить стартовый облик игрока, назовите модель StarterCharacter и поместите её в папку StarterPlayer.

Rig Builder Вкладка Avatar -> Rig Builder. Создавайте R6 (классика) или R15 модели.
Анимации Используйте Animation Editor для создания движений. Сохраняйте ID анимации для кода.

Программирование (Luau)

Код пишется в Script (на сервере) или LocalScript (на клиенте).

Пример: Опасная Лава

local part = script.Parent
part.Touched:Connect(function(hit)
    local character = hit.Parent
    local humanoid = character:FindFirstChild("Humanoid")
    if humanoid then
        humanoid.Health = 0 -- Смерть
    end
end)

Пример: Телепорт

local part = script.Parent
local dest = workspace.PartB -- Точка назначения
part.Touched:Connect(function(hit)
    local hrp = hit.Parent:FindFirstChild("HumanoidRootPart")
    if hrp then
        hrp.CFrame = dest.CFrame + Vector3.new(0, 3, 0)
    end
end)

Интерфейс (GUI)

Интерфейс создается в StarterGui. Основные элементы: ScreenGui, Frame, TextButton, TextLabel.

Русский язык: Roblox Studio полностью поддерживает кириллицу. Просто введите текст на русском в свойство "Text".

Экономика (Leaderstats)

Чтобы создать таблицу лидеров с деньгами, поместите этот скрипт в ServerScriptService:

game.Players.PlayerAdded:Connect(function(player)
    local stats = Instance.new("Folder")
    stats.Name = "leaderstats"
    stats.Parent = player
    
    local money = Instance.new("IntValue")
    money.Name = "Money"
    money.Value = 0
    money.Parent = stats
end)

RemoteEvents: Связь

RemoteEvents позволяют LocalScript отправить сигнал на сервер.

-- На клиенте (отправка)
game.ReplicatedStorage.RemoteEvent:FireServer()

-- На сервере (прием)
game.ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(player)
    print(player.Name .. " нажал кнопку!")
end)

Сохранение данных

Используйте DataStoreService, чтобы прогресс игрока не сбрасывался.

Не забудьте включить API Services в настройках игры (Game Settings -> Security).

Визуальные эффекты (VFX)

ParticleEmitter Создает искры, дым, огонь. Настройте Size, Rate и Lifetime.
Lighting Добавьте Bloom для свечения или SunRays для красивых лучей солнца.

Raycasting (Лучи)

Используется для стрельбы или проверки видимости.

local origin = Vector3.new(0, 5, 0)
local direction = Vector3.new(0, 0, 50)
local result = workspace:Raycast(origin, direction)

if result then
    print("Попал в: " .. result.Instance.Name)
end

Умные NPC (Pathfinding)

Чтобы NPC обходил препятствия, используйте PathfindingService.

local path = game:GetService("PathfindingService"):CreatePath()
path:ComputeAsync(npc.Position, target.Position)
local waypoints = path:GetWaypoints()

for _, wp in pairs(waypoints) do
    humanoid:MoveTo(wp.Position)
    humanoid.MoveToFinished:Wait()
end

Безопасность и Анти-чит

Главное правило: Никогда не доверяйте клиенту. Все начисления денег и покупки должны происходить ТОЛЬКО на сервере.

Хакеры могут менять значения в своих LocalScript, но они не могут менять данные на вашем сервере.

Оптимизация

1. Включите StreamingEnabled в свойствах Workspace.
2. Выключите CanCollide у мелких декоративных предметов.
3. Используйте Task.wait() вместо обычного wait() для более плавной работы.

Публикация игры

1. Перейдите в File -> Game Settings.
2. Нажмите Permissions и выберите Public.
3. Нажмите Save. Поздравляем, ваша игра доступна всему миру!

Другие игры