KOD KÜTÜPHANESİ

Geliştirdiğim Mekanikler

Oyunlarımda uçtan uca tasarlayıp uyguladığım oynanış sistemleri.

01 // Boss Yeteneği Devralma Sistemi Deadly Seven

Oyuncu, yendiği her boss'un imza yeteneğini kalıcı olarak devralıyor.

Bu mekaniğin kısa gösterim videosu buraya eklenecek.

public class BossAbility : ScriptableObject { public string abilityId; public AbilityEffect effect; // called once, when the boss dies public void GrantTo(PlayerAbilities inv) { if (!inv.HasAbility(abilityId)) { inv.AddAbility(this); EventBus.Raise(new AbilityUnlocked(abilityId)); } } } public class PlayerAbilities : MonoBehaviour { readonly List<BossAbility> slots = new(); public void AddAbility(BossAbility a) { slots.Add(a); a.effect.Bind(gameObject); // runtime hook } }

02 // Melee Vuruş Durdurma & Combo Zinciri Midnight Katana

Her isabetli saldırıda kısa bir hitstop ve ekran sarsıntısı tetiklenir.

Bu mekaniğin kısa gösterim videosu buraya eklenecek.

public void OnHitConfirmed(Hit hit) { combo++; comboTimer = comboResetTime; damageMultiplier = 1f + combo * 0.08f; StartCoroutine(HitStop(0.05f)); cam.Shake(0.12f, 0.15f); } IEnumerator HitStop(float duration) { Time.timeScale = 0.02f; yield return new WaitForSecondsRealtime(duration); Time.timeScale = 1f; }

03 // Sipariş & Diyalog Seçim Sistemi Spicy Turnip

Müşteri siparişleri, zamanlayıcılı bir kuyruk sisteminde üretiliyor.

Bu mekaniğin kısa gösterim videosu buraya eklenecek.

USTRUCT(BlueprintType) struct FDialogueNode { FText Line; TArray<FDialogueChoice> Choices; }; void AOrderManager::ResolveChoice(int32 ChoiceIndex) { const FDialogueChoice& Choice = Current->Choices[ChoiceIndex]; ActiveOrder.Modify(Choice.OrderDelta); Satisfaction += Choice.SatisfactionDelta; Current = Choice.NextNode; // data asset, no code change needed }

04 // Kelime Eşleştirme & Yazım Motoru Code Crush

Ekrana düşen kelimeler karakter karakter oyuncunun girdisiyle eşleştiriliyor.

Bu mekaniğin kısa gösterim videosu buraya eklenecek.

void AWordTarget::OnCharTyped(TCHAR Ch) { if (Word[MatchedChars] == Ch) { MatchedChars++; HighlightUpTo(MatchedChars); if (MatchedChars == Word.Len()) { OnWordDestroyed.Broadcast(this); Destroy(); } } else { ResetHighlight(); // wrong key, no penalty — just resets } }