Jaa


Varför ska jag prova XNA?

Jag fortsätter att åka runt i Sverige och visa och berätta om XNA Game Studio och XNA Framework för de som visar intresse, och det blir fler och fler. Om du känner dig tveksam och vill har några ytterligare konkreta skäl till varför även du bör prova på XNA Game Studio så läs gärna den här artikeln som summerar det mesta.

Jag finner speciellt kommentaren om prestanda som riktigt intressant, alltså att C# och .NET skulle vara så mycket långsammare än ren C++. Den tesen utmanas genom att jämföra eller åtminstone berätta att de flesta spel-motorer som existerar idag använder något sorts skript-språk för logik, vilket är interpreterande medans C# är kompilerat.

Comments

  • Anonymous
    August 28, 2008
    PingBack from http://informationsfunnywallpaper.cn/?p=2780

  • Anonymous
    August 28, 2008
    Men de flesta spelmotorer idag som använder script, låter ju fortfarande C++ knuffa trianglar och pixlar mellan cpu:er och grafikkort etc. Och det minst cpu intensiva delarna är de som körs i script. Tror jag i alla fall. Varför måste man föresten enbart köra C# med xna? Det är ju .NET. Borde inte IronPython och VB fungera precis lika bra?

  • Anonymous
    August 29, 2008
    Det som några säkert missar är att även XNA Framework och XNA Game Studio använder shaders och då alltså GPU'n för att transformera alla trianglar till skärmens koordinater, med andra ord även där samma teknik som de "kommersiella motorerna". För att svara på din fråga om C# så valde XNA Game Studio-teamet att fokusera på C# och speciellt Visual C# Express i första versionen för att kunna få ordning på distributionen till Xboxen, och det är den miljö som i viss mån lever kvar. Jag har själv gjort åtminstone demonstrationer av XNA Framework där jag använt både F# och C++/CLI, men då har jag hållit mig på Windows-sidan! I XNA Game Studio 3.0 går det att skapa så kallade "Content"-projekt som jag antar borde kunna möjliggöra att all kod och logik läggs i valfritt hanterat språk, och att Content-Pipeline separeras. Men det är bara en tanke som jag sitter på, jag har inte testat eller fått det verifierat. Vilket språk önskas ytterligare stöd för? Vi har en del möjligheter att påverka! Johan

  • Anonymous
    August 29, 2008
    Noterade att när jag publicerade mitt förra inlägg så öppnades ett IE8 fönster (för förhandsgranskning)

  • Anonymous
    August 31, 2008
    Vet du något mer om Microsoft kommer att uppdatera XNA så att vi får det lite lättare att använda det tillsammans med D3DImage som nu finns med .Net 3.5sp1 ? Framför allt möjligheten injicera en IDirect3DDevice9Ex om man tänkt köra på Vista.

  • Anonymous
    August 31, 2008
    Ted: Ambitionen med XNA Framework är inte att ha ett ramverk som exponerar de absolut senaste teknikerna och komponenterna för grafik och mediautveckling utan istället erbjuda ett gemensamt ramverk för PC, XBox 360 och Zune. Men jag har sett en del exempel på hur XNA Framework har nyttjats i andra lösningar. Låt mig undersöka och se vad jag kan hitta!

  • Anonymous
    September 01, 2008
    Ted: Har nu fått reda på att integrationen mellan XNA och D3DImage inte är löst ännu, men ligger på bordet med saker som teamet vill ha in i produkten framöver.

  • Anonymous
    September 01, 2008
    Det går att skriva C++ kod som är snabbare än C# kod, men få person (team) klarar det för ett större projekt (att optimera en for-loop är inte ekvivalent med att optimera en hel motor). Det tar mer tid att optimer C++ kod än en liknande kodbas i C#, det är iaf min erfarenhet. Fokus bör istället ligga på att jämföra hur man optimerare C# kod gentemot C++; det är rätt stora skillnader. @Smetad Anarkist: Att skicka trianglar till GPUn är IO och har lite att göra med vilket språk du använder. För vår motor har vi oftast behövt optimera pixel/vertex-shaders och Draw-calls (dvs. GPU intensiva saker) och aldrig haft problem med att vi fått ur för lite av CPUn. På Xboxen ser vi till att använda alla kärnor då vår fysikmotor kräver en del CPU, skulle tro att vi kanske kunnat få den 5-10% snabbare med C++ med en utvecklingstid på Tid_Nu x 4.

  • Anonymous
    September 02, 2008
    Det låter ju lysande Johan, något att se fram emot då. :)

  • Anonymous
    September 09, 2008
    Nå är det dumt att fråga om C#.NET verkligen är bättre än C++ ? Någon som kan eller gjort jämförelser? Microsofts VC++ och Microsofts VB (gamla) var ju en skillnad. Men hur förhåller sig C#.NET och MS VC++ idag tro? .NET är ju som bekant ett framework (egentligen), klart att alla rutiner inte är så hyperoptimerade. Men kan detta verkligen vara så påverkande och avgörande för prestanda i C# då. Och hur bra kompilerar MS Visual Studio just C# i jmf med VC++ ?. Många frågor och förväntansfulla svar blev det.

  • Anonymous
    September 09, 2008
    Anders: Jag tycker din fråga är högst relevant och något som kontinuerligt diskuteras i olika forum och diskussionsgrupper. .NET Framework är som sagt en "runtime" med stöd för exempelvis automatisk minneshantering, men också med möjligheten att optimera koden baserat på den underliggande arkitekturen utan att behöva kompilera om koden. I och med att C# koden kompileras till IL (Intermidiate Language) som i sin tur vid exekvering kompileras till maskinkod så finns möjligheten att uppdaterar "runtimen" i efterhand när nya processorer kommer ut med nya instruktioner osv och omedelbart nyttja dessa funktioner i den "gamla" applikationen. Med C++ så krävs en omkompilering från grunden, och naturligtvis också kompetensen från utvecklaren att förstå hur dessa nya processorinstruktioner kan nyttjas. Frågan är hur mycket tid vi har att lägga ned på att följa denna utveckling (multi-core exempelvis) om möjligheten finns att låta "runtimen" hantera skalbarheten åt oss?

  • Anonymous
    September 09, 2008
    Du har nog en viktig poäng där Johan. Det verkar ha varit som tradition mer eller mindre att man alltid ska programmera spel (framförallt) i C++. Det har inte funnits några riktiga kompetenta språk förräns kanske nu. Gillar verkligen skarpt C# mer och mer. Det verkar som "de" tagit fram det bästa ur de flesta vanliga språken ändå. Men en viss orolighet ligger ju i att det ska bli lika sävligt som VB var för ett par år sedan, att man förlorar en hel del i prestanda så frågan om det är värt. Åt andra sidan så är ju dagens datorer mer och mer prestandainriktade, och vi kan med god min ändå köra i det favoritspråk vi föredrar oss. De flesta kompilatorerna kanske har blivit så väl programmerade så de håller en bra överföring till maskinkod också. Jag står i val och kval att strikt köra mina apps i C# i fortsättningen eller att åtminstonde köra vissa saker i C++ ändå. Bra nu har jag mer beslutsångest än tidigare. Hoppas någon kan inspirera mig att ta mig vidare.