27 Mart 2017 Pazartesi

Kordinat Sistemi


3-D grafikler için kordinat sisteminin iyi algılanması gerekmektedir. Her bir  noktonın 3-D sistemde x, y ve z kordinatlarına sahiptir.
O noktasının kordinatının gösterimi (0,0,0)
Çizgi

Bir çizgi uzayda 2 nokta arasındaki düz bir şerit ile ifade edilir.
İki temel noktası vardır.
Sonuç noktasına vertex adı verilir.
Her bir vertex noktasınında 3-D  bir kordinatı vardır. 3 Boyutlu sistemlerde kullanılan.


Poligonlar

Poligonlar ise 2D şekillerdir vektörlerden oluşuturlar.
Bir dizi vektörün farklı açılarla birleşmesi ile poligonlar ortaya çıkar.




Küp


3D bir obje oluşturmak için 2D olan objeleri bir araya getirmek gerekmektedir.
Örnek olarak bir (3D) Küp oluşturmak için. 6 tane kare (2D) kullanmak gerekmektedir.



Renkler

Bilgisayarda bulunan renkler RGB kırmızı, yeşil  ve mavinin birleşimi ile RGB kodları kullanılarak oluşturulur.
RGB formatı Red, Green and Blue şeklindedi.
Aşağıda bazı temel renk örnekleri gösterilmiştir.
(0,1,0) is green
(1,1,1) is white
(0,0,0) is black
(1,1,0) is yellow




Kamera


Bir resim olması için bazı temel yapıların sistem içerisinde olması gerekmektedir.
Sonrasında kameranın hangi noktada olacağı ve nereye odaklanacağı belirlenmelidir.
Sonrasında ise kullanılan yapılar ile objeler sistem içerisinde oluşturulması gerekmektedir.


Oyun Motorları

Bazı Ücretsiz Oyun Motorları Aşağıdaki Listede verilmiştir.
irrLicht: http://irrlicht.sourceforge.net/
Bu oyun motoru ücretsiz olup. Microsoft Visual C++ ile geliştirilmiştir.
Cube: http://www.cubeengine.com/cube.php4
Ogre: http://www.ogre3d.org/


Oyun Nedir?

Oyun: Bir faliyete ilişkin düşünce ve duyguları ortaya çıkartan eylence odaklı aktivitedir.
Oyunun Temeli
Kurallar bütünü içinde tanımlanmış bir obje olmalıdır.
Gerçek : İnsanlar oyunları oynamayı sever
Nedenmi?Bununla ilgili pek çok teori ortaya atılmıştır fakat hiç biri tam olarak bu olayı açıklayamamıştır. 
Kısa cevap: İnsanlar oyun oynamayı sever çünkü bu eylencelidir.


Oyun Oynamanın Amacı
 
Oyun oynamak duygusal bir tepki uyandırır ve insanlar bu duygusal tepkileri severler bundan dolayı oyun oynarlar
Örneğin: gerginlik, sürpriz, korku, merak, macera, meydan, fantezi
Güvenli bir ortam
Oyuncuların sonuçları gerçek  değildir. Buda bize güvenli bir ortam sağlar (neredeyse)
Oyun içindeki bir karakter 100m den atlaya bilir  ama siz? Buda bize güvenli bir ortamın oluşmasını sağlar.

Oyun geliştiricisin hedefi: insanlar oynarken o oyundan zevk aldıklarında ortaya çıkan mutluluk ve maddi kazanç olacaktır.

Ama Nasıl?

İşte sizin için amaca giden bazı temel ipuçları.

İnsanlar  genellikle hoşlandığı oyunlara bakarar nasıl olduğunu biraz anlayabiliriz
İç deneyimi: Oyunun tarafından sağlanan fantezi, görsel ve deneyimler.
Sabit eğlenceli: Strateji ve zorlu problem çözme keyfi
Kolay eğlenceli: Bazı kolay keşif ve macera keyfi
Sosyal deneyim: Bu ??takım çalışması, rekabet, tanıma, manipülasyon gibi sosyal deneyimler.


Kurallar

 
Çoğu oyunun kendi içerisinde kuralları vardır.
Kurallar kimi durumlarda belli yada belirsiz olabilir.
Açık kurallar net ve tartışmaya açık olmayan herkes tarafından anlaşılır biçimdedir
Belirsiz kurallar ise çoğu durumda oyuncunun oyuna olan ilgili kaybetmesine neden olur. (Neden Angry Bird Çok tuttu? Kural Belli)
Örnek: Eğer uçurumdan düşerse oyun sona erer.
Belirsiz Kurallar Bağlayıcı Değildir. Bundan dolayı bu kurallar formalde değildirler.
Bazı durumlarda ise gizli kurallar oyuncular arasında rekabetin artmasına yol açaar bu sayede oyunun oynanma isteyini arttırada bilir.
Bazı durumlarda örtülü kurallar oyunun temelini oluşturabilir.
Bu gizli yada örtülü kural oyun içeriğine bağlı olarak oluşturulmalıdır.

Öncül Model
 
Her oyunun bir dayanak noktası vardır.
Oyun kendi içerisinde bir hayal dünyasına sahiptir.
Bir araba yarışının temel dayanak noktası arabayı kullanıp bitişe ilk sırada varmaktır.
Yada bir spor oyununda oyuncuları kontrol edip amaca ulaşmak.
Yada diğer oyunlarda verilen görevi başarmak.
Her oyunun bir modeli vardır ve bir oyun bir model oluşturur.
Model ile konu arasında bazı farklılıklar olsada aralarında derin bağlantılar vardır.
Örneğin bir tuş ile bir oyuncu kontrol edilirken bir oyunda diğer bir oyunun modelinde aynı tuş ile çöp atılabilir.
Normalde bir insan çöp atmayı sevmezken Sims oyununda bu iş ona zevkli gelebilir.


Belirsizlik ve Rasgelelik
 
Belirsizliklerin olmaması için, her zaman aynı giriş ve çıkış durumu göz önüne alındığında, aynı şekilde yanıt veren bir sistem olmamalıdır.
Bir oyun belirleyici(deterministik) olmalı mı?
Belirsizlik çok olursa oyun sıkıcı olurmu?
Cevap: Belirleyicilik bazı durumlarda avantajdır. Genelliklede istenilen bir durumdur.


Oyun Platformları

Oyun Pilatformları:
Kişisel Bilgisayar
Konsol (PlayStation, Nintendo, Xbox)
El Konsolları (Game Boy, PSP, PSPVita)
Mobile Cihazlar (Cell phone)
PC ile Diğer Konsolları Karşılaştırması
PC oyunları konsollarla aynı platformda geliştirilebilmektedir.
Diğer platformlarda oyun geliştirmek için ise özel geliştirme kitleri gerektirebilir.
Konsolların bazı özellikleri pclere kıyasla daha avantajlı olsada konsollar için oyun geliştirmek daha maliyetlidir.

Oyunun Kaydetmek
 
Tüm platformlarda  oyunu kaydetmek önemlidir. Ama bazı konsollarda (Oyun salonları Gibi yeni jeton atmak için) yeni aşamaya geçilmesini zorlaştırmak için oyun kaydetme özelliği yoktur.
Oyun Kaydetmek İçin Farklı Yollar
Otomatik Olarak oyunun belli bir yerindeyken oyunu kaydetmek.
Dezavantajı: Oyuncun sahip olduğu özelliği azaltır.
Heryerde Kayıt: Oyunu oynayan kişiye oyuunun herbir noktasında kayıt özelliği verir.
Dezavantajı: Sistem ihtiyaçları ve global değişkenlerin kaydı zordur. Aynı zamanda oyunun kullanıcı için çok kolaylaştırır.
Oyunun bazı noktolarınında kayıt.
Dezavantajı: Oyunu zorlaştır.
Bir kayıt yöntemi tasarlarken, bunu uygulamak için kaynağa sahip olup olmadığının da oyun için neyin uygun olduğunu belirlemek gerekir.


Oyuncuların Özellikleri

Hedef Kitleniz Nedir?
Yaş,cinsiyet, gelir durumu
Hedef Kitlenizin Bilgi Durumu Nedir?
Hedef Kitlenizin Talepleri Nelerdir?
Oyun Sektöründe İki çeşit oyuncu grupu vardır.
Oyun  Bağımlıları
Uzun Süre ile oyun oynayanlar
Sürekli olarak Oyunlar Hakkında bağsediyorlar
Oyunlar hakkında çok bilgileri var.
Son oyunlara sahipler
Oyunlardaki her bir öğeye dikkat eden.
Bazı oyunların Bağımlıları
Sadece bazı oyunları oynayan ve o oyunlardaki gelişmeleri takip edenler.
Klasik oyuncular:
Boş zamanlarda az sıklıkla oyun oynayanlar. Oyun oynamasada her hangi bir oyun oynama isteği istemeyenler.

Game Oyun Geliştirme Süreci


Iterating: Doğru ve istenilen sonuca ulaşmadan önce yapılması gereken adımları kapsar. Tekrar ve tekrar kodun ve yapının düzenlenmesi.
Prototyping: Ürünün erken aşamada oluşan o anki durumunu kapsayan hali. Bu aşamada performans önemli değildir.
Software testing: Hataların mümkün olan en az seviyeye indirilmeye çalışıldığı testleri kapsamaktadır.
Play-testing: Oyuncuların oyun piyasaya çıkmadan yapılan testtin olduğu kısımdır.



Pisikoloji İle İlgili Durumlar

Oyun tasarımı sırasında akılda tutulması gereken bazı insan ile ilgili psikolojik sorunları kapsamaktadır.
Working memory: İnsanlar genellikle akıllarında 7+ / -2 tane olayı akılllarında tutmaktadırlar bir an içinde.
Artı ve Eksi durumlar: İnsanlara oyun içerisinde verilen bazı ödüllerle kişinin pisikolojik olarak bağlı olmasını sağlar. Eksi durumda ise bu bağ tam olarak sağlanamaz ve sonuç olarak kişinin oyuna bağlılığı azalır.



Mimarinin Birleşenleri

Bazı iyi modüllerin yada işleyen pratiklerin yanında, oyunun mimariside oyunun oluşması önemlidir. Ayrıca mimarinin oluşması için seçilen oyun motoruda sistem için çok önemlidir.
Oyun Motor Kodu:
Birçok oyun tarafından kullanılacak
Grafik işleme, çarpışma algılama kodu, yol bulma vb
Bazen daha fazla grafik motoru, AI motoru, fizik motoru vb bir oyun motoru olabilir
Oyunla ilgili detaylı kodlar:
Sadece bu oyunda kullanacak kodları baarındıran yapılardır.

Oyun Programlama

Temel Bilgiler
 
Francois Dominic Laramee’in Oyun İşletme Sırları
Oyun Geliştirme Pastası Dünyadaki Durumu (Yıllık 20 Milyar Dolar Harcanmaktadır.)
Çok az oyun büyük kazançlar elde etmiştir. Oyunların Kazançlarının %95’i oyunun isminden gelmiştir. (NFS, Fifa, Halo, WoW, Call of Dutf, AgeOfEmpires, TotalWar,vb.)
Sektör büyük oyuncular tarafından domine edilmektedir. Örnek Olarak Electronic Arts gelirlerin 20%  kısmını almaktadır.
Piyasada korsanlık yaygındır. Oyunların çoğu kaçar olarak kullanılmaktadır. Çin ve Kore'de hemen hemen tüm oyun yazılımı korsandır. Bu nedenle online oyun piyasası oluşmuştur. (Diablo3 gibi)
Bir oyun için tipik üretim ücreti: $ 10 milyon dolardır. (CNN rapor, Sep 24, 2005)

Oyun Türleri

3D Oyun Programlama Kenneth Finney tarafın hazırlanan All-in-One isimli yazıda oyun türleri ve örnekleri kısmında...
Action: Half Life 2, Rainbow Six
Adventure: King’s Quest
Role-Playing Games (RPG): Dungeons and Dragons
Puzzle/Maze: Pac-Man, Tetris
Simulator: Falcon 4, Grand Prix Legends
Sports
Strategy


En Önemli Konular


EĞLENCE!
Eğlenceli nedir?
Survival, tehlike: Ceza, polis, asker
Spor
Kaçış Oyunları (Pac-Man)
Öykü ve sosyal
Iyi bir oyun Esasları:
Kısa vadeli ve uzun vadeli hedefler her zaman farkında Oyuncu
Anlamlı ve ilginç
Açık ve zorlayıcı hedefler
Eğer hayali bir dünyada oyun oluşturma işi varsa: O dünyanın etkileyici olamsı gerekmektedir.


Eğlence ve Anlamlı Çıktılar
Ne olursa olsun aynı şeyi yapmak ve aynı sonuçlara ulaşmak eylenceli değildir. Oyun içindeki çeşitliliği arttırmak gerekir. (Aynı hedef ve aynı silah yerine farklı hedef ve farklı silah kullanımı gibi.)
Bazı oyunlarda belirgin seçenek vardır, ama sonunda aynı sonuca yol açar bu kimi zaman istenmeyen bir durum olabilir. Buda eylence olgusunun azalmasına yol açar
Sınırlı bütçe: Biz kullanıcılar her şeyi keşfetmek ve her şeyi kullanmak istiyoruruz buna izin veren şablonlar program içinde tanımlanmalı.
Her zamanki stratejisi, yol boyunca bazı yakınsamalar oluşturarak oyuncuyu manipüle edilmesi eylenceyi arttırır.

Zorluk Seviyeleri

Yardımcı Kaynaklar

AI Game Engine Programming by Brian Schwab
AI for Game Developers by David M Bourg and Gleen Seemann
Physics for Game Developers by David M Bourg
3D Game Programming All-in-One by Kenneth Finney
Teach Yourself Game Programming in 24 Hours by Michael Morrison


Bir Oyun Nasıl Yapılır?
 
Temel Fikir
Hikaye ve Hikaye Süreci
Garafikler
Sesler ve Kontroller
 
 

20 Mart 2017 Pazartesi

Ionic Framework ile Kolayca Mobil Uygulamalar Geliştirin

Ionic Framework; AngularJs bilenlerin kolayca mobil uygulamalar hazırlaması için geliştirilmiş oldukça yararlı bir frameworktür. Tabi bu uygulamaları geliştirmek için AngularJs'in yanında Html, Css ve Js bilgisinede ihtiyaç vardır. Microsoft'un Studio kullanılarak kurulum yapılabilir. Sublime kullanılarakta kodlar yazılabilir. Framework hakkında daha detaylı dilgiyi edinmek ve ücretsiz olarak framework'ü indirmek için aşağıdaki linki kullanabilirsiniz. https://ionicframework.com/products/

  


 Ionic Eğitim Videoları 21 Adet (ingilizce)
 

Code.io ile Projesyonel Tasarımlı Web Siteleri

Birbirinden farklı, kaliteli ve oldukça değişik özelliklere sahip onlarca Css, Html-5 ve JS projesini içerisinde barındıran Code.io sitesi; web tasarımı yada web programlama ile ilgilenenlerin ziyaret etmesi gereken güzel ve kullanışlı bir web sitesidir. Site içerisinde oluşturulmuş yüzlerce projeyi inceleyebilir, kodlarını kendi bilgisayarınıza keydedebilirsiniz. Kendi yaptığınız projeleride site üzerinden yayınlama imkanıda veren Code.io sitesinin web adresi http://codepen.io

Site üzerinde Html-5 ve Js kullanılarak geliştirilmiş oldukça fazla sayıda oyunda bulunmaktadır.
Örnek : http://codepen.io/coderontheroad/details/Fbfjh 
Örneğin kodları http://codepen.io/anon/pen/vEZOOb






Google & Biz

Google'ın hakkımızda ne kadar çok şey bildiğinin bir göstergesi olan MyActivity sitesi; sizin Google üzerinden hangi günde hangi veriyi arattığınızın datalarını loglamaktadır. Siteye giriş yapmak için tek ihtiyacınız olan şey kendi Google hesabınıza girip aşağıdaki linki tıklamak.  

19 Mart 2017 Pazar

HTML Editörleri

Geliştirilmiş çok sayıda HTML editörü bulunmaktadır. Bunlar arasında sıklıkla kullanılanları aşağıda listelenmiştir. Bu editörler sadece HTML betik dili için değil diğer pek çok web tabanlı dil içinde kullanılabilir. Örnek (JS,PHP,CSS,vb)

Ücretsiz HTML editörleri
Notepad++ (https://www.notepad-plus-plus.org)
Atom (https://atom.io/)
Sublime (https://sublime-text.en.softonic.com/download)

Ücretli HTML editörü
CofeCup Html Editör (www.coffeecup.com/html-editor)

17 Mart 2017 Cuma

Sinyalin yorumlanması

Bireyin görmesi fiziksel ve algısal sınırlara sahip olan yüksek düzeyde karmaşık bir etkinliktir ve ortalama bir insan için temel bilgi kaynağıdır. Görme kabaca 2 aşamaya ayrılabilir:
Dış dünyadan gelen uyarıcıların fiziksel karşılanması, görsel algılanması Bu uyarıcıların işlenmesi ve yorumlanmasıdır. Görme ışıkla başlar. Göz ışığı alan ve elektrik enerjisine dönüştüren bir mekanizmadır. Dünyadaki ışık nesnelerden yansır ve görüntüsü gözün arka tarafında retina üzerinde baş aşağı şekilde odaklanır. Gözdeki algılayıcılar bu görüntüyü beyine iletecek olan elektrik sinyallerine dönüştürür.

Gözün boyut, derinlik ve göreli uzaklıkları nasıl algıladığını anlamak için retina üzerinde görüntünün nasıl oluştuğunu bilmemiz gerekir.

Nesneden yansıyan ışık retina üzerinde baş aşağı bir görüntü oluşturur. Bu görüntünün boyutu görüş açısı olarak belirlenir. Eğer gözün önündeki bir noktadan nesnenin üstündeki bir noktaya bir doğru, aynı noktadan nesnenin altındaki bir noktaya bir doğru çizersek, bu iki doğru arasındaki açı bize görüş açısını verir.

Görüş açısı hem nesnenin büyüklüğünden hem de göze olan uzaklığından etkilenir. Eğer iki nesne aynı uzaklıkta ise büyük olan daha büyük görüş açısına sahiptir. Benzer şekilde aynı büyüklükte fakat farklı uzaklıktaki nesnelerden ilerideki daha küçük görüş açısına sahiptir.

Bir nesnenin görüş açısı büyüklüğünü algılamamızı etkiler. Eğer görüş açısı çok küçükse bütünü algılamamız zorlaşır.

Parlaklığı Algılama
Işık düzeylerine gösterilen öznel tepkidir.
Nesnenin yüzeyine düşen ışık miktarı ve yansımadan yani parlaklığından etkilenir.
Göze çarpan farklılıklar ölçülebilir.
Görüş keskinliği titreşerek değişen parlaklıkla artar. Göz bunu sabit olarak bir ışığın hızlıca açılıp kapanması olarak algılayacaktır.
Rengi Algılama
Renk yoğunluk ve doyumdan oluşur.
Renk ışık tayfının dalga boyu tarafından belirlenir(mavi kısa, yeşil orta, kırmızı uzun)
150 farklı rengi ayırt edebiliriz.
Yoğunluk rengin parlaklığı, doyum ise renkteki  beyazlığın miktarıdır. Yoğunluk ve doyumun çeşitlenmesiyle 7 milyon farklı rengi algılayabiliriz.
Kadınların %1’i erkeklerin%8’i renk körüdür ve en çok kırmızı ile yeşili ayırt edememektedirler.

 



İnsan Bilgisayar Etkileşimi Nedir?

İnsanların bilgisayarla etkileşimini inceler. Disiplinler arası bir alandır. İnsanın ve bilgisayarın etkileşimi arayüzler aracılığı ile sağlanır. Kavram tarihsel adlandırma sıralaması ile insan makine etkileşimi, bilgisayar insan etkileşimi ve son olarak da insan bilgisayar etkileşimi ile adlandırılmaktadır. Bilgisayar bilimlerinin yanında pek çok alanla ilgilidir. (Tasarım,antropoloji, psikoloji,felsefe,yapay zeka gibi) Bu arayüzler yazılımın bir aracı olabileceği gibi çeşitli donanım bileşenleri de olabilir.

İnsanlar bilgiyi işlemede kapasiteleri ile sınırlıdırlar ve tasarım için bu önemli bir unsurdur. İnsan etkileşimli sistemler ile ilgili bütün tartışmaların merkez karakterinin insan olduğunu söyleyebiliriz.
Burada geçen insan kavramını sadece tek bir kişi olarak  düşünmemeliyiz. Herhangi bir kurumda çalışan ve aynı işle uğraşan insanlar, çalışma grupları gibi bir dizi insan da bu kavramı belirtebilir.

Bilişsel psikolojinin alt basamağında yer alan insan psikolojisi her ne kadar etkileşimli tasarım konuları ile ilgili değilmiş gibi dursa da ve bu konuya uzak görünse de aslında oldukça ilgilidir. Çünkü etkileşimli bir tasarım yapabilmek için öncelikle kullanıcının becerilerini ve sınırlılıklarını bilmek gerekmektedir.
İnsanlar dünyayı nasıl algılıyor?
Bilgiyi nasıl işliyor ve nasıl saklıyorlar?
Problemleri nasıl çözüyorlar?
Fiziksel olarak nesneleri nasıl kullanıyorlar?

Bu konuda mevcut modellerin olduğunu söyleyebiliriz. Örneğin 1983 yılında Card,Moran ve Newell’ın tanımladığı “İnsan İşlemci Modeli”dir. Bu modelde algısal sistem, hareket sistemi ve bilişsel sistem bulunmaktadır ve bütün bu sistemlerin her biri kendi işlemci ve belleklerine sahiptir.