# C4 Engine
C4 Engine. Terathon Software tarafından Microsoft Windows XP/Vista/7, Apple Mac OS X (10.5, 10.6, 10.7), Linux ve Sony PlayStation 3 platformları için üç boyutlu oyun, simülasyon ve interaktif uygulamalar üretmek üzere geliştirilmiş, tescilli bir oyun motorudur.


## Geliştirme tarihçesi.
C4 Engine, bilgisayar grafikleri hakkında kitaplar yazmış, Sierra Entertainment dahil birçok yazılım şirketinde grafik programcısı olarak çalışmış Eric Lengyel liderliğindeki Terathon Software tarafından geliştirilen bir oyun motorudur. İlk kurumsal sürümü 2005 Mayıs'ında piyasaya sürülmüş ve o zamandan bu yana sık aralıklarla güncellenmiştir. 2011 yılı sonu itibarıyla toplam 60 yükseltme sürümü çıkarılmıştır. Bu ortalama sene başına dokuz yükseltme sürümü demektir.
Oyun motorunun baş geliştiricisi Eric Lengyel tarafından 2020 yılı içinde 7.0 sürümüyle aktif olarak geliştirilmeye devam edileceği duyurulmuştur.


## Temel yetenekler.
C4 Engine, katmanlı yazılım bileşenlerinden oluşur. Motor, en düşük katmanda bilgisayar donanımı ve işletim sistemiyle ilgili işleri yürütürken, en yüksek katmanda platform bağımsız çalışabilmesini sağlayan işlevleri yerine getirir. Oyun motorunun çok önemli bir kısmı üç boyutlu grafik işleri için geliştirilmiş olmakla birlikte, gerçek bir oyun motoru işlevselliği kazanmak amacıyla gelişmiş ses, ağ, fizik, giriş aygıtı ve scripting desteğini de sağlamaktadır.
Motorun API belgelerine ve Wiki sayfasına kendi sitesindeki bağlantılardan çevrimiçi olarak ulaşılabilir.


### Grafik.
C4 Engine, OpenGL grafik kütüphanesini kullanır ve bu sayede Windows, Mac OS ve Linux üzerinde çalışabilir. Render modeli olarak "one-pass-per-light forward rendering" kullanmaktadır. Farklı türde ışık kaynaklarını ve gölgeleme yöntemlerini desteklemektedir. Birincil yöntem olarak dinamik gölgeleme kullanmakla birlikte, büyük dış mekan sahneleri için gölge haritalama yapabilmektedir.
Farklı shader türlerini kombine olarak destekler ve bunları iki yöntemle kullanmaya izin verir. Her iki yöntem de, kullanıcının temel grafik kütüphanesi kullanmasını gerektirmeyecek şekilde tasarlanmıştır. Birinci yöntem de kod yazılır, diğerinde motorda tümleşik olarak bulunan gelişmiş Shader Düzenleyici kullanılır.
Motor, doku haritalarından - texture map - bilgi almak suretiyle basit shader etkileri üretebilir. Bu yöntemle "normal map", "parallax map", "horizon map" ve tümsekli yansıma ve kırılma etkileri elde edilebilir. Daha karmaşık shader etkileri üretilmek istendiğinde motora entegre edilmiş grafiksel shader düzenleyici yazılım kullanılabilir.
C4 Engine arazi yetenekleri voxel teknolojisini temel almaktadır. Bu sayede "height map" tabanlı arazi üretim yönteminde üretimi mümkün olmayan kemerler, çıkıntılar ve dik uçurumlar gibi arazi yüzey modelleri üretilebilmektedir. Voxel verileri kullanılarak üretilen üçgen kafes - triangle mesh - arazi modelleri, farklı ve çok çözünürlüklü olsalar bile Transvoxel Teknolojisi ile sorunsuz bir şekilde birleştirilebilir.
C4 Engine, çok çeşitli özel efektleri (parçacık sistemi, ateş, elektrik, hacimli sis, hava olayları) gerçekleştirebilir. Bununla birlikte tüm sahne hareket bulanıklığı - motion blur - desteği de bulunmaktadır. Motor özelleştirilmiş post-processing efektlerinin tasarlanması için destek vermez.


### Ses.
Motor WAV biçiminde kaydedilmiş, 16-bit mono ya da stereo sesleri çalabilir. Ses verilerini bellekten ya da diskten çalabilir. Sesleri çalarken özelleştirilmiş karıştırıcı ile "doppler", "reverberation", "atmospheric absorption" gibi frekans kayması efektleri üretilebilir.


### Ağ.
C4 Engine, çok oyunculu oyun geliştirme desteği sağlamaktadır. Bunun için UDP protokolü üzerine tasarlanmış çift katmanlı mesajlaşma sistemini kullanmaktadır.


## Araçlar.
C4 Engine, oyun geliştirmek için gerekli birçok araçla birlikte gelir. Her araç motordan bağımsız ve ayrı bir eklenti modülü şeklinde paketlenmiştir. Çoğu araç kapsamlı olmasının yanı sıra motorun kendi arabirimi ile kullanıcıya sunulur. Bu sayede tüm araçlar platform bağımsız olarak her yerde çalışabilir.


### Dünya düzenleyici (World Editor).
Bu araç, C4 Engine için üç boyutlu içeriğin yaratılması amacıyla kullanılmaktadır. Motor tarafından görüntülenecek tüm sahne bu araç sayesinde oluşturulabilir. Çalışma zamanında ışık, ses, tetikleyici ve özel efektler oluşturabilmenize olanak sağlar. Araç, üç boyutlu tasarım yazılımlardan COLLADA biçiminde ihraç edilmiş modelleri ve sahneleri ithal edip kullanmayı da kolay hale getirir.


### Grafiksel betik düzenleyici (Script Editor).
Betik düzenleyici, dünya düzenleyici içerisinden erişilebilen bir araçtır. Sanatçı ya da programcıların, eylem/olay tasarlamasını kolaylaştıran ve grafiksel olarak düzenlenebilen, anlaşılır yöntemler sağlar. Tekrarlı eylemleri, koşullu eylemler destekler ve bunların graf yapısında sembolize edilerek oluşturulmasını sağlar. Motorla birlikte birden çok hazır basit betik gelmektedir. Örneğin: Işık aç/kapa ya da daha matematiksel ifadelerin işletilmesi gibi karmaşık betikler.


### Panel düzenleyici.
Panel düzenleyici, üç boyutlu sahne içerisinde iki boyutlu panel oluşturulmak üzere, dünya düzenleyici içerisinden erişilebilen bir alt araçtır. İçerisinde düğme, metin kutusu, resim gibi birçok GUI bileşeni bulunur ve sahnenin diğer parçaları gibi render edilir. Oyun karakteri oluşturulan iki boyutlu panellerle etkileşime girebilir, scroll kaydırabilir, döndürme, renk değiştirme gibi işlemler yapabilir. Etkileşime girilecek panellerdeki eylemler için özel betikler yazılarak oldukça karmaşık sonuçlara ulaşılabilir.