Gå til innhold

Anbefalte innlegg

Hei

 

Jeg vil gjerne starte et prosjekt om å lage en spillmotor i C#, noe lignende Unity, eller et mer domenespesifikt. Idéen er at det skal kjøre på Mono, med OpenGL, OpenAL samt en eller annen fysikkmotor, og scripting skal gjøres med C# igjennom mono. Alle script skal kunne lastes inn og ut on-demand, og kompileres når nødvendig, slik at en enkelt kan lage et IDE.

Nettverksstøtte burde være nesten gjennomsiktig.

Men jeg vil gjerne diskutere hvordan den skal legges opp, og jeg har en del idéer selv.

Blant annet synes jeg hele systemet skal være "self contained" gjennom én spillmotor. Editoren burde være mulig å endre i editoren (slik som at de fleste programmeringsspråk kompileres i seg selv)

 

Noen som er interessert perhaps? Eneste "krav" er egentlig dugelig med kompetanse innen C# og .NET. Trenger ikke kunne noe spesifikt om 3D grafikk, lyd etc. En av grunnene er for å lære.

 

edit: trenger forøvrig folk på Mac OS X og Linux også

 

Send PM til meg med gmail konto dersom det kan være interessant å bidra.

Endret av GeirGrusom
Lenke til kommentar
Videoannonse
Annonse

Jeg har begrenset kunnskap innen C# (Har aldri tatt kurs eller lest bøker om det, alt jeg kan har jeg tilegnet meg fra internett), men har en god stund hatt lyst til å gjøre akkurat dette. Hvis jeg kan være med, tror jeg at jeg ville hatt mest å bidra med innen partikkel bevegelse (Har begynt på et partikkel system som gjerne kan innlemmes i dette prosjektet), men jeg er også interessert i å lære om scripting, AI, og dialog systemer. Har en Windows PC, og to Macer til disposisjon (Macene er dog ikke mine).

Lenke til kommentar

Perfekt! Jeg har såvidt begynt på grafikken, men det trengs mye planlegging, og da hjelper det godt å være flere :)

 

Hvis du har noen innspill om hva du synes trengs, så er det bare å komme med det.

Det er noe i retningen Unity jeg kunne tenkt meg å lage det, men open source. Jeg tror ikke vi vil få like høy kvalitet som Unity har klart, men ihvertfall noe som kan være like enkelt, eller enklere, i bruk.

Lenke til kommentar

Har skrevet litt grunnleggende kode når det gjelder scenegraph. Holder på med å få serialisering til å takle deltakomprimering.

Nå er scenen delt opp i et tre, hvor grunnoden er Scene (som også er en node) men alle baseObject må høre til en Scene for å kunne serialiseres skikkelig. Dette har med referanser og slikt å gjøre.

En node trenger ikke nødvendigvis bare ha Node som underobjekter, det kan være alt som arver ifra BaseObject. Men oftest vil en ha enten Modifier eller Node der. Node arver fra Transform som inneholder posisjon, rotasjon og skalering for objektet og alle underobjekter.

Modifier er for å endre oppførselen til objektet, for eksempel AI, rendering, particle system, fysikk etc.

Lenke til kommentar
Gjest Slettet+9871234

Regner med at du er god nok programmerer. Hva med å få fatt i en designer?

 

3D-simulering med data blir mer og mer viktig. Så et interessant program på NrK 2 i går med noen som undersøkte vulkaner i Etiopia.

 

De kombinerte bilder tatt fra ulike vinkler med 3D datagrids av krateret bestående av millioner av noder (punkter).

 

Det å kombinere bilder / filmer (egentlig bilder) av virkeligheten med datamodeller blir mer og mer viktig og avansert. Hva med spill som kombineres med en videofilm? Vi ser det jo på noen spill konsol som for eksempel spillplatformer med Formel 1 baner. Banene og omgivelsene, bakgrunnen om du vil, er basert på filmer / bilder fra virkeligheten. Avansert bilde / filmmanipulering kan gjøre det enda mer spennende.

 

Disse http://www.stormstudios.no setter vel en god standard man kan strekke seg etter.

Endret av Slettet+9871234
Lenke til kommentar

Hehe.

 

Akkurat nå holder jeg på med flertrådstøtte. Det er laget slik at det er én logikktråd, som utfører all behandling av objekter, scripting osv. men en renderingtråd som tegner all grafikk, en tråd som laster ressurser og en tråd som fikser lyd etc. Kan være at den etterhvert belaster litt annerledes, men starter i det helt enkle.

Hver tråd har hver sin "callstack" som her er en queue som fylles med delegates. Dette gjør at en lett kan flytte oppgaver til forskjellige tråder med DispatchRenderCall for eksempel.

Dette er i bunn og grunn tråder som venter til callstacken deres er fyllt opp med oppgaver å gjøre, for så å utføre dem en etter en.

 

3D grafikken har jeg forsåvidt fått til nå, med OpenGL 3.2 støtte, Vertex buffer Objects, VertexArray Object, Vertex shader, Fragment shader, Geometry shader, rendertargets, texture1d, texture2d, texture3d (cube texture mangler fremdeles, men etter det jeg så har OpenTK en funksjon for å laste DDS) og frame buffer objects. Jeg har laget vertex buffer og vertexarray object slik at den bruker reflection for å binde vertex data til hver attribute, så den skal være veldig enkel i bruk. Fortsatt mye lavnivå greier altså.

 

Skal se om jeg får lagt det på code.google.com, men trenger et navn først ^^

Lenke til kommentar

Takker for interessen i det minste.

 

Har lagt kode på google code.

http://code.google.com/p/foundry/

 

for de som er interessert.

 

Har lagt til flere ting nå, blant annet så kalles funksjoner nå i riktig tråd. Det funker litt som i Unity: altså det er ikke noen override for rendering for eksempel. Grunnen til dette er å hindre at tomme funksjoenr blir lagt til i callstacken for objekter som ikke tegner.

Eksempel fra en testklasse i prosjektet:

 

namespace Foundry.Graphics
{
public class TestRenderer : Engine.Modifier
{
	VertexArray<PositionNormalTexture> array;
	void Initialize()
	{
		array = new VertexArray<PositionNormalTexture>();
		array.Buffer.Allocate(GenerateVertices(12));
		array.Buffer.BufferData(OpenTK.Graphics.OpenGL.BufferUsageHint.StaticDraw);
	}

	void Draw()
	{
		array.MakeCurrent();
		GL.DrawArrays(BeginMode.Triangles, 0, 12);
	}

	private static readonly Random rnd=new Random();

	private IEnumerable<PositionNormalTexture> GenerateVertices(int count)
	{
		for(int i = 0; i < count; i++)
		{
			yield return new PositionNormalTexture()
			{
				Pos = new Vector4((float)rnd.NextDouble(), (float)rnd.NextDouble(), (float)rnd.NextDouble(), 0),
				Normal = new Vector3(0, 1, 0),
				TexCoord = new Vector2(0, 0)
			};
		}
	}
}
}

 

Her vil Draw bli kalt av Rendering tråden for hver frame, mens Initialize vil bli kalt av Resource tråden etter objektet er opprettet.

Skal bli flere slike spesielle funksjoner etterhvert.

Denne koden vil ikke fungere da det ikke er bundet noen shader, men det spiller ingen rolle foreløpig.

Lenke til kommentar
Gjest Slettet+9871234

Kjempespennende. Legg gjerne til mitt navn på det prosjektet. Må jo relateres til en norsk OOP Guru. :dribble:

 

Interessant å se hvor enkelt det er å bruke navnerom i C#. OpenTK og Mono, skulle gjerne visst mer om dem.

 

Er det meningen at du skal lage noen spill med utgangspunkt i det prosjektet? Forslag, skriv en bok om det om du har tid. Drit oppi nordmenn som dukker deg. Aschehough, Gyldendal, ... de slikker ... pengemakten og kjendiser. Der finnes et mye større verdensmarked og utlendinger som konkurrerer så busta fyker om å få kloa i gode prosjekter. Jeg er sikker, hadde du tatt kontakt med utenlandske forlag, så ville det ikke vært vanskelig å få fatt i en seriøs utgiver.

 

Motivasjon: Diktet "følg kallet av Wergeland". Han sammenlignet seg med en ørn hvis vinger var bundet fordi det norske språk begrenset hans rekkevidde.

 

Ibsen: "Så langt min diktning tenner sinn i brann, så langt går grensen for mitt fedreland."

 

Er det noe vi kan i Norge, så er det Janteloven og dukke hverandre. Nordmenn er altfor tilbakeholdne. Det er ikke typisk norsk å være god. Det er typisk for noen nordmenn (meg inklusiv) å være selvgod og andre å stå med lua i hånden hos den norske pengemakten. Vi lever i den digitale, den sosiale media og i Facebook revolusjonen. Dinosaurenes og forhåpentligvis de rosa bloggenes tid er snart over. :roll:

 

Objekt orientert programmering ble oppfunnet i Norge. Avanserte spill krever objekt orientering, multitasking og design mønstre. Etter det har vi stort sett vært tause og utlendinger (spesielt dansker som oppfant C# og C++) har tatt fullstendig over. Der skrives drøssevis av engelspråklige bøker av meget varierende kvalitet. Noen blir betalt for antall sider og ikke kvalitet.

 

La prosjektet munne ut i en engelskspråklig bok og lag en nettside for prosjektet / boken.

Endret av Slettet+9871234
Lenke til kommentar
Gjest Slettet+9871234

Det er bare å kikke på kildekoden hvis du vil.

Det er litt vanskelig å forstå hva som gjøres i et språk / bibliotek man ikke kjenner. Jeg skal snart på ferie og kjøpte for en tid siden boken http://www.sitepoint.com/books/aspnet3/index-B.php Det er tredje utgave. Jeg har første utgave, men noe får jeg vel ut av å lese den første utgaven?

 

Synes prosjektet ditt er veldig spennende, så setter meg gjerne inn i det. Husk at de beste spill programmerererne kan få jobb hos NASA.

 

Når jeg søker på C# her http://accu.org/index.php?module=bookreviews&func=search får jeg opp 45 resultater hvor denne "Extreme Programming Adventures in C#" som første treff og "highly reccomended".

 

http://accu.org/index.php?module=bookreviews&func=search&rid=484

 

er den første og høyt prioritert.

 

Ron being Ron, the project is undertaken in an eXtreme Programming style, though the limitations of the book project mean that he has not employed all the practices "as written"; he is his own customer, and he doesn't always manage to find a pair, for example. As you follow Ron through the project, with the aid of the lessons he pulls out, you get a better understanding of the way he develops software, and are given an opportunity to judge how it compares to what you would have done. You might also learn a little C# along the way, as Ron explains each new language feature when he first uses it, though this is not the key focus of the book.

 

Kjenner du til extrem programmering XP? Du skulle satt opp et slikt prosjekt med noen gode C# programmerere.

 

Har du en personlig favoritt hvor man lærer det meste?

Endret av Slettet+9871234
Lenke til kommentar

Jeg lærer mest ifra MSDN og Visual Studio rett og slett. Jeg kan ikke egentlig anbefale noen bøker... Men Petzold er ganske kjent.

 

Har lagt til at en kan kalle funksjoner på alle modifiers på et objekt. Brukes for eksempel til kollisjonsdeteksjon. Dette gjør at forskjellige modifiers kan enkelt kommunisere med hverandre.

 

Eksempelvis:

 

public class CollisionModifier : Modifier
{
 void FrameStep()
 {
   if(collide)
     Parent.Dispatch("OnCollision", obj_a, obj_b)
 }
}

public class AIModifier : Modifier
{
 [Dispatch]
 void OnCollision(Node a, Node b)
 {
   ShowMessage("COLLISION! OMGZOR!");
 }
}

 

Mulig dette blir brukt til RPC i fremtiden også.

Endret av GeirGrusom
Lenke til kommentar
Gjest Slettet+9871234

Jeg lærer mest ifra MSDN og Visual Studio rett og slett. Jeg kan ikke egentlig anbefale noen bøker... Men Petzold er ganske kjent.

Ok.

 

Jeg har Adobe DreamWeaver MX 2004 på min steinalder gamle stasjonære Pc. Den er fullt brukbar til X(HT)ML og dynamiske php sider. En glimrende editor med mye funksjonalitet som innebygd validator (File + Check page) for X(HT)ML sider etc etc. Under Create New menyen har den valg som for eksempel ASP.NET C# samt ASP.NET VB.

 

Når jeg for eksempel klikker på ASP.NET C# genereres følgende

<%@ Page Language="C#" ContentType="text/html" [b]ResponseEncoding="iso-8859-1"[/b] %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>

</body>
</html>

 

"tomme" side. For eksempel er vel ResponseEncoding og Content-Type gammel og erstattes antagelig som default med UTF-8 på nyere DreamWeaver versjoner??

 

Jeg har ikke tenkt å oppgradere den plattformen som jeg er relativt godt vant til før jeg kjøper ny stasjonær Pc om 1 - 3 år. Betyr det at DreamWeaver er en god nok plattform til å utviklie ASP.NET C# samt ASP.NET VB sider eller bør jeg kjøpe Visual Studio (har jo C++ Builder 2009 + 2010 professional samt Python 2.5 og Python 3.* på den bærbare og vil ikke legge inn flere tolkere / kompilatorer på den)? Jeg regner også med at siste versjon av DreamWeaver CS5 http://www.adobe.com/no/products/dreamweaver/ er langt mer avansert enn 2004 MX versjonen.

 

Den er min foretruken plattform på enklere sider. Skal prøve å se litt mer på koden din, men det er som kjent vanskelig å forstå fullt ut hva som gjøres når man ikke kjenner språket godt nok og har utviklingsplattformen om da ikke min gamle versjon av Dreamweaver kan brukes? Tar med meg nevnte bok på ferie.

 

Har lagt til at en kan kalle funksjoner på alle modifiers på et objekt. Brukes for eksempel til kollisjonsdeteksjon. Dette gjør at forskjellige modifiers kan enkelt kommunisere med hverandre.

Oversiktlig og grei kode. Skulle kunnet se hva den gjør på et enkelt spill (kompilert koden selv m. a. o.).

Endret av Slettet+9871234
Lenke til kommentar

Nå har jeg vært bort i java og ikke C# men kan se på koden. Men snakk om XP og andre utviklingsmetoder tror jeg ikke passer her. Xp er utgangspunktet kun parprogrammering med raske leveranser slik som scrum og andre smidige metoder. Slikt passer ikke her siden folk ikke sitter sammen og jobber. I slike prosjekter så anbefaler jeg heller at man bruker mer tid på gode kommentarer og dokumentasjon.

 

http://programming-motherfucker.com/

Lenke til kommentar

Nå har jeg vært bort i java og ikke C# men kan se på koden. Men snakk om XP og andre utviklingsmetoder tror jeg ikke passer her. Xp er utgangspunktet kun parprogrammering med raske leveranser slik som scrum og andre smidige metoder. Slikt passer ikke her siden folk ikke sitter sammen og jobber. I slike prosjekter så anbefaler jeg heller at man bruker mer tid på gode kommentarer og dokumentasjon.

 

http://programming-motherfucker.com/

Haha den er jeg for ^^

Jeg har vært litt slapp med å dokumentere foreløpig... kanskje lurt å fokusere mer på det.

 

edit:

Angående Dreamweaver så funker den sikkert fint. Vær dog obs på at det har skjedd en del med C# siden 2004. Spesielt i 2005 fikk det generics som er veldig sentralt (nesten som templates i C++)

Så det kan kanskje være bedre å laste ned Visual Web Developer (som er en gratis lite versjon av VS for Web utvikling)

Endret av GeirGrusom
Lenke til kommentar

Hvis problemet er kommunikasjon har jeg en "mumble" server gående.

Mumble er et voip program med lydkvalitet som overgår skype, og er i tillegg gjerne en del raskere. Det krever ingen registrering, kun en ip-adresse for å koble seg på serveren.

 

Det finnes også mange kanaler så man kan få snakke i fred.

 

Den står alltid i gang og tillater mer fleksibilitet enn f.eks skype om folket vil snakke sammen.

Jeg er ikke en så veldig god programmerer enda, men vil gjerne bidra på noen måte, så om det finnes noen interesse for det så si i fra :)

Lenke til kommentar

Selvsagt. De som er interessert i å bidra, kan gi meg gmail konto-adresse på PM så kan jeg legge den til listen over commiters.

 

Også interessant om noen har noen andre idéer eller teknikker som kan lønne seg utover å bare programmere. Vite hva man skal gjøre er tross alt den største jobben.

Endret av GeirGrusom
Lenke til kommentar
Gjest Slettet+9871234

Spesielt i 2005 fikk det generics som er veldig sentralt (nesten som templates i C++)

Parametrisering av kode, var på et seminar med språkest utvikler der akkurat det var tema. Templates i C++ kjenner jeg. Generics handler også i C++ om jeg husker riktig om template baserte iteratorer på funksjonsobjekter.

 

Også interessant om noen har noen andre idéer eller teknikker som kan lønne seg utover å bare programmere. Vite hva man skal gjøre er tross alt den største jobben.

Det var derfor jeg sa at du skulle prøve å få med noen gode designere og da tenkte jeg ikke på meg selv, siden jeg ikke driver med design.

Endret av Slettet+9871234
Lenke til kommentar

Ja, jeg bruker Gnerics for vertex buffer og slike ting, som det er veldig godt egnet til. Sammen med reflection, så faller hele det vertexformat greiene i Direct3D bor, fordi spillmotoren kan finne ut av alt det på egenhånd.

 

Design er helt klart det vanskeligste. Det er alfa omega at alle valg en tar er det mest optimale. Det å bare høre andre sine meninger hjelper stort.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...