← Back to Portal Hub

Roblox Görev Mimarisi: DAG Çizgeleri, Durum Makineleri & Dallanan Diyalog Ağaçları

By DopaBrain Roblox Systems Engineering Team • 2026-09-29 • Technical Guide

Görev ve diyalog sistemleri Roblox'taki RPG ve macera oyunlarının omurgasını oluşturur. Zayıf mimariler ani bağlantı kopmalarında oyuncu ilerlemesini siler.

Önkoşullar için DAG grafikleri, modüler olay veriyolu (event bus), dallanan konuşma ağaçları ve DataStore bit sıkıştırma teknikleriyle hatasız görev sistemleri inşa edilebilir.

1. Yönlendirilmiş Döngüsüz Çizgeler (DAG) Olarak Görevler

Kısır döngü kilitlenmeleri olmadan zengin hikayeler kurgulama:

2. Sonlu Durum Makinesi (FSM) ile Görev Döngüsü

Hileleri engelleyen katı durum geçiş kuralları:

ServerScriptService.QuestSystem.QuestManager
-- FSM Görev Yöneticisi
local QuestManager = {}
QuestManager.__index = QuestManager
local QuestDatabase = require(game.ReplicatedStorage.QuestDatabase)

function QuestManager.new(player, profileData)
    local self = setmetatable({}, QuestManager)
    self.Player = player
    self.ActiveQuests = profileData.ActiveQuests or {}
    self.CompletedQuests = profileData.CompletedQuests or {}
    return self
end

function QuestManager:CanStartQuest(questId)
    local data = QuestDatabase[questId]
    if not data then return false end
    if self.CompletedQuests[questId] or self.ActiveQuests[questId] then return false end
    for _, prereqId in ipairs(data.Prerequisites) do
        if not self.CompletedQuests[prereqId] then return false end
    end
    return true
end

function QuestManager:AcceptQuest(questId)
    if not self:CanStartQuest(questId) then return false end
    self.ActiveQuests[questId] = {
        Step = 1,
        Counters = table.create(#QuestDatabase[questId].Steps[1].Objectives, 0)
    }
    return true
end

return QuestManager

3. Olay Veriyolu (Signal Bus) ile Hedef Takibi

Oyun içi eylemleri görev kodundan tamamen ayırma:

4. Dallanan Diyalog Ağaçları & Karar Mantığı

Oyunun akışını değiştiren etkileşimli NPC konuşmaları:

5. ProfileService ile Bitfield Kayıt Sıkıştırması

Yüzlerce tamamlanmış görevi neredeyse sıfır yer kaplayarak kaydetme:

Frequently Asked Questions

Görevler neden DAG çizgeleriyle tasarlanmalıdır?

Görevlerin birbirini sonsuz döngüde beklemesini önlemek ve mantıksal önkoşulları hatasız kurmak için.

Olay veriyolu (event bus) performansı nasıl artırır?

Her karede kontrol yapmayı bırakıp sadece ilgili eylem gerçekleştiğinde tetiklenerek CPU kullanımını sıfıra indirir.

Ani bağlantı kopmasında görev kaybı nasıl önlenir?

Oturum kilitlemeli ProfileService kullanarak sayaçları bellekte anında güncelleyip güvenle diske yazarak.

Diyalogdan güvenli ödül nasıl dağıtılır?

Diyalog istemcide oynatılır ancak ödül düğümüne basıldığında sunucu RemoteFunction ile koşulları onaylayıp eşyayı verir.

Explore More Interactive Tests & Guides

Discover personalized cognitive assessments, stress evaluations, and game psychology tools on DopaBrain.

Go to Portal Hub