fbpx
In: Mobil Uygulama Blog

Codea Nedir? ve Nasıl Uygulama Geliştirilir?

Codea iPadleriniz için oyunlar ve simülasyonlar yaratmanıza ya da sahip olduğunuz herhangi bir görsel fikri oluşturmanıza yardım eden bir aplikasyondur. Düşüncelerinizi Multi-Touch ve ivmeölçer gibi iPad özelliklerinden yararlanarak etkileşimli kreasyonlara dönüştürmenizi sağlar.

Codea, kodunuza dokunmanıza izin verecek şekilde tasarlanmıştır. Yani bir rengi değiştirmek isterseniz sadece dokunun ve sürükleyin. Bir görüntü ya da sesin nasıl olacağına karar verirken, tam olarak ne istediğinizi seçmenize izin veren görsel düzenleyicileri kullanmanız için kodunuza dokunmanız yeterli!

Codea, Lua programlama dili üzerine kurulmuştur. Sembollere çok fazla güvenmeyen, basit ve zarif bir dil olarak iPad için mükemmel bir uygulama!

Codea, Two Lives Left şirketi tarafından yapılan iOS cihazları için bir Lua kod editörüdür. Görsel fikirleri, özellikle oyunlar ve simülasyonları hızla prototiplemek için tasarlanmıştır. Bitmiş projeler doğrudan uygulamadan Xcode‘a aktarılabilir. İşleme bölümünde bulunan çizim işlevleri için aynı yöntemlerin çoğunu kullanan İşleme programlama dili ile yakından ilgilidir.

Codea, 2011’in sonlarında App Store’da piyasaya sürüldü ve ilk iOS Lua editörlerinden biri oldu. Nisan 2012’de, tamamen Codea‘yı kullanan ilk oyun App Store‘da piyasaya sürüldü.

Mart 2014’te, 64 Bit mimarisi, yeniden tasarlanan kod düzenleyicisi ve çeşitli API geliştirmeleri ekleyen Codea 2.0 piyasaya sürüldü.

Ana Arayüz

Arayüz oldukça sade ve basit. Codea‘yı yüklediğinizde, bu sayfa karşınıza çıkacak:

Araçlar

En tepede örnekler, alt kısımda projeleriniz bulunmakta. Mevcut projeleri çoğaltabildiğinizden dolayı bir örneği bir projeye kolayca kopyalayabilirsiniz. Sol üstte dikkat ederseniz, sağında bir ok bulunan bir çubuk var. Bu, araç panelini ortaya çıkarır.

Yukarıdan aşağıya doğru:

Referans: Entegre yardım dosyalarını getirir

Shader Lab: Bir etkileşimli (ve mükemmel) GLSL shader editörü

Assets (Varlıklar): Varlık yönetimi (grafikler, sesler, gölgelendiriciler, vb.)

AirCode: Bir web tarayıcısına sahip bir bilgisayar kullanarak düzenlemek için Codea’yı etkinleştirir.

Ayarlar

Sağ üstteki ayarlar panelidir. Burada tema ve yazı tipi boyutlandırmayı ayarlayabilir ve en önemlisi Dropbox‘ınızı bağlayabilirsiniz. Bu, Codea‘ya Dropbox hesabı açmanıza olanak tanır ve Codea’nın içine ve dışına kolayca erişebilmenizi sağlar ki bu iOS cihazlarda kolayca yapılmayan bir şey.

Kod Düzenleme

En tepede, projenizdeki dosyaları temsil eden sekmeler vardır. Yeni bir sınıf veya dosya oluşturmak için sağ üstteki + ‘ya basın. Gördüğünüz gibi, ekran klavyesinin üst kısmında, programlamayı kolaylaştırmak için birkaç anahtar eklenmiştir. Bunlar, bir imleci sağa ve sola hareket ettirmek içindir. Entegre bir Bul ve Yardım düğmeleri de vardır. Bir USB klavyeyi bağlarsanız, ekran klavyesi kapanır.

Ve daha da önemlisi, entegre yardım dosyaları görseldeki gibidir:

Parametreler bölümü, uygulamanızla etkileşimde bulunmak için kullanışlı UI denetimleri oluşturmanızı sağlar. Çıktı temel olarak bir metin konsoludur. Simgeler, uygulamanızı duraklatmanıza, yeniden başlatmanıza, uygulamanızın bir anlık görüntüsüne ve video kapağına sahip olmanızı sağlar. Aircode‘u çalıştırdığınızda, iPad‘iniz bu ekrana geçerek düzenleme kodunu canlı tutmanıza ve gerçek zamanlı olarak çalıştığını görmenize izin verir. Ve kodunuzu çalıştırmak isterseniz (sağ altta Play simgesini tıklatarak) de karşınıza bu ekran gelir:

GLSL Editor

Burada Vertex ve Fragment komut dosyalarını düzenleyebilir ve sonucu sağdaki gerçek zamanda görebilirsiniz. Bindings ise gölgelendiricinize parametreler girebileceğiniz yerdir.

Bir Örnek

Mesela bir su dalgası efekti oluşturmak istiyorsunuz. Bunu Codea ile aşağıdaki kod satırları ile yapabilirsiniz.

Görseli şöyle;

Kod satırları ise şöyle;

— Water Test

function setup()

    local vertices = {}

    resolution = 19 — decrease for more fps, increase for slowlyness 😀

    displayMode(FULLSCREEN)

    t=0

    Size=150

    parameter(“Speed”,0,5,1.5)

    parameter(“CamHeight”, -1000, 1000, 19.5)

    parameter(“Angle”,-360, 360, -30)

    parameter(“FieldOfView”, 10, 140, 90)

    parameter(“NoiseScale”, 0,1,0.23)

    parameter(“Scale2”, 1,100,15)

    the3DViewMatrix = viewMatrix()

    watch (“fps”)

    fpscount=0

    fpsamount = 0

    for i=1,resolution do

        vertices[i] ={}

        for j=1,resolution do

            vertices[i][j] = vec3(-75 +i*Size/resolution,0,-75+j*Size/resolution)

        end

end

    cubeverts = {}

    for i=1,(resolution-1) do

        for j=1,(resolution-1) do

        table.insert(cubeverts, vertices[i][j])

        table.insert(cubeverts, vertices[i+1][j])

        table.insert(cubeverts, vertices[i][j+1])

        table.insert(cubeverts, vertices[i+1][j])

        table.insert(cubeverts, vertices[i][j+1])

        table.insert(cubeverts, vertices[i+1][j+1])

        end

    end

    ms = mesh()

    ms.vertices = cubeverts

    print(“Using “..table.maxn(cubeverts)..” vertices”)

    — init colortable

    triCol = {}

    for i=1,((resolution-1)*(resolution-1)*6) do

           tst = math.random(0,255)

       table.insert(triCol, i, color(tst, tst, 255, 255) )    

    end

   ms.colors = triCol

end

function draw()

    perspective(FieldOfView, WIDTH/HEIGHT)

    — Position the camera up and back, look at origin

    camera(0,CamHeight,-10, 10,0,10, 0,1,0)

    — This sets a dark background color

    background(40, 40, 50)

    translate(50,-Size/2,70)

    rotate(Angle,0,1,0)

    counter = 0

    for i=1,(resolution-1) do

        for j=1,(resolution-1) do

        counter = counter + 1

        if counter > 2 and j> 1 and i>1 then

            ms:vertex(counter, ms:vertex(counter).x, ms:vertex(counter-2).y, ms:vertex(counter).z)

        else

            ms:vertex(counter, ms:vertex(counter).x,noise((i+t)*NoiseScale,(j+t)*NoiseScale)*Scale2, ms:vertex(counter).z)

            end

        if counter > 2 then

        newcol = (ms:vertex(counter).y)*10

        ms:color(counter, color(newcol, newcol, 255+newcol))

        end       

        counter = counter + 1       

        if counter > 2 and j> 1 and i>1 then

            ms:vertex(counter, ms:vertex(counter).x, ms:vertex(counter-2).y, ms:vertex(counter).z)

        else

            ms:vertex(counter, ms:vertex(counter).x,noise((i+t+1)*NoiseScale,(j+t)*NoiseScale)*Scale2, ms:vertex(counter).z)

        end

        newcol = (ms:vertex(counter).y)*10

        ms:color(counter, color(newcol, newcol, 255+newcol))                       

        counter = counter + 1     

            ms:vertex(counter, ms:vertex(counter).x,noise((i+t)*NoiseScale,(j+t+1)*NoiseScale)*Scale2, ms:vertex(counter).z)               

        newcol = (ms:vertex(counter).y)*10

        ms:color(counter, color(newcol, newcol, 255+newcol))      

        counter = counter + 1

        if counter > 2 and j> 1 and i>1  then

            ms:vertex(counter, ms:vertex(counter).x, ms:vertex(counter-2).y, ms:vertex(counter).z)

        else

        ms:vertex(counter, ms:vertex(counter).x,noise((i+t+1)*NoiseScale,(j+t)*NoiseScale)*Scale2, ms:vertex(counter).z)

        end

        newcol = (ms:vertex(counter).y)*10

        ms:color(counter, color(newcol, newcol, 255+newcol))       

        counter = counter + 1

        ms:vertex(counter, ms:vertex(counter).x,noise((i+t)*NoiseScale,(j+t+1)*NoiseScale)*Scale2, ms:vertex(counter).z)

        newcol = (ms:vertex(counter).y)*10

        ms:color(counter, color(newcol, newcol, 255+newcol))  

        counter = counter + 1

        ms:vertex(counter, ms:vertex(counter).x,noise((i+t+1)*NoiseScale,(j+t+1)*NoiseScale)*Scale2, ms:vertex(counter).z)

        newcol = (ms:vertex(counter).y)*10

        ms:color(counter, color(newcol, newcol, 255+newcol))

        end

    end

    ms:draw()

    t = t + (DeltaTime*Speed)

    fpscount = fpscount + 1

    fpsamount = fpsamount + DeltaTime  

    if fpscount == 10 then

        fps = fpsamount /10

        fps = 1/fps

        fpsamount =0

        fpscount=0

    end

end

function touched()

    if CurrentTouch.state==BEGAN then

    if displayMode() == FULLSCREEN then

        displayMode(STANDARD)   

    else

        displayMode(FULLSCREEN)

    end

    end

end

Bir yanıt yazın

Ready to Grow Your Business?

We Serve our Clients’ Best Interests with the Best Marketing Solutions. Find out More