Author Topic: FSF: Programers Unite: FreeSpace FOREVER  (Read 48017 times)

0 Members and 1 Guest are viewing this topic.

Offline Merlin

  • 22
I've been reading this thread and would like to say that it's one of the first topics that has actually made me want to join a forum. I'm not on-line much at the moment (should change in the next three months) but would like to help. The creation of a game - by people separated by distance and time - sounds like fun!

A post made by Inquisitor some time ago caught my eye in particular - it mentions the need for a structured plan, design, implementation, testing, bug-fixing. I could not agree more - design is THE most important aspect of any project (this doesn't stop me from going straight to code in a few places, but I know it's naughty) and is critical to a good final product. As a lecturer of mine said 'if you get the design right, the implementation should be child's play' - he neglected to mention researching the libraries, testing and bug-fixing, but it's still a good point. The other thing worth mentioning is that the design should cover everything, from graphics to AI to storyline to voiceovers, you name it, it should be in the design - obviously not all at once :). The other important aspect is to get user opinion - what do the masses want? Sure we've all played FS1 & FS2 and know that we want new stuff, but you'd be amazed what suggestions other non-computer savvy players can come up with.

I'm a final year student doing a Masters in engineering in the UK, specialising in software - my final year project was developing a viewer for the display of large (500MB) 3D objects on low-spec machines (STL file format in case anyone's interested) - as you can imagine, this met with only limited success! Part of it was working on automatic level of detail (something bound to make modellers happy) but lets not get ahead of ourselves! Having said I'd love to help, I'm currently prepping for finals, so give me a 1-2 months and then I'll help, if it's wanted! I'll also see if any of my programmer friends are interesting in lending a hand... but I digress.

I'd also recommend using a pre-made game engine - if it's properly open-source and you can modify it so much the better; it just give you so many more options to work with and you don't have to work everything out yourself. Doing so can be great fun but you can't learn everything - much as I'd like to! Having just spent eight months teaching Direct3D to sit up and beg - without meshes, I might add, due to the requirements of the project (damn them for that) - I hopefully can say with some authority that creating a game engine from scratch is not going to be simple or fast - but then you people already knew that ;). My experience with OpenGL is limited, and I agree that cross-platform is good (because Windows is still great for people who know nothing about computers), but I intended to teach myself OpenGL anyway, may as well do it for a reason!

Programming in general requires a leap of faith - that the programmer who designed the library you're using (and that includes the ones for your C/C++ compiler) knew what he/she was doing and that it works. How many of you have found out how new or malloc works? The code is there but we assume it just does the job. Same with a game engine. For the non-programmers out there, Direct3D and OpenGL are not game engines - they are 'non-hardware-specific graphics wrappers'. If one translates this into English, it means that you can do graphical stuff without worrying what hardware if any the end user has - the developer still has to do a heck of a lot of 3D work to get a decent image.

The other things that Direct3D & OpenGL won't do are stuff like AI, collisions, pathfinding, all the fiddly maths that turns a bunch of 3D objects into a real game that fires the imagination. This ignores the other key elements of storyline, plot, nice-looking ships etc... Game engines, on the other hand, tend to have some aspects of collision, AI etc.. built in - modifying code is a great deal easier than writing it from scratch.

Besides, if you, or should I say we ;), get the OOP design right, encapsulation means that you can port the overall game code to any engine you like, which means you can write a really super-duper one later, once the game concept is proved. Neat, huh? On a programming note, DirectX deals with all input, networking, and of course graphics & sound within its own sub-departments, DirectInput, DirectMusic, DirectPlay etc... and btw has some really neat things in it (before anyone starts MS bashing, yep I disagree with them on a lot of issues too, but they ain't Satan either) - OpenGL just does graphics - what are you planning on using for the other aspects - if it's going to be cross-platform, you have to get this right?

As an aside, if anyone has any thoughts on auto-LOD generation generally (and yes I'm looking at doing it real-time), please, please let me know - you will get credited! But I get the marks, deal? (actually it's already handed in, but I plan on expanding it).

Phew, one long post for someone who's never been on a forum before - guess I had a lot to say! Hope it's appreciated! If for some reason I don't join in the fun, luck!
« Last Edit: April 14, 2002, 09:50:57 am by 698 »
Cry havoc, and let slip the dogs of war!

 

Offline wEvil

  • The Other Good Renderer
  • 28
    • http://www.andymelville.net
Quote
Originally posted by Merlin


As an aside, if anyone has any thoughts on auto-LOD generation (and yes we're looking at doing it real-time), please, please let me know - you will get credited! But I get the marks, deal? (actually it's already handed in, but I plan on expanding it).

Phew, one long post for someone who's never been on a forum before - guess I had a lot to say! Hope it's appreciated! If for some reason I don't join in the fun, luck!


:jaw:  man, thats one long post.

Wouldnt MultiRes handle Auto-LOD generation?  It comes with 3dsmaxMAX4 and i was under the impression it can be made to work transparently with the game?

Either way..i just dont know enough about code to even remotely sound like I know what im talking about :P

 

Offline Nico

  • Venom
    Parlez-vous Model Magician?
  • 212
Programers Unite: FreeSpace FOREVER
all this sounds quite obvious, but anyway it's not a bad thing to say them again :)

For that autolod thinguy, I think the simplest way is to weld the close verts together. the higher the distance from the point of view to the mesh is, the higher the distance weld is. Unlike 3dsMax tho, it should work only on verts belonging to a same group of polys, coz it can do horribhle things otherwise.

About using an existing game engine, I would have suggested the quake1 engine maybe, coz I think the source is now available and it's said to be very easy to modify, but I doubt this would be very popular :p
SCREW CANON!

 

Offline Inquisitor

Programers Unite: FreeSpace FOREVER
Well, handling LOD on the fly asks more (truthfully no idea how much) of the end use computer, most of the times it's easier to assign discreet LOD to the model and let the engine call those X levels of detail when the model is at a particular distance. IMHO ;)

Dunno, that's why a scope then design are important. That's a feature that could get tricky, and if there is an easier way to do it that requires less resources, I'd be inclined to take that route.

Still collecting resumes, there might be enough interest in this to follow thru, in which case a chat (with an AGENDA, I hate free for alls) would be in order inthe next week.

Other than that, spot on Merlin, I tend to agree, even about the engine choice (again, this depends alot on the scope and design, and we have not done the homework). The 2 programmer types currently signed up need to chat with me, we'll pick some engines, then we go out and do homework on them, come back with a scorecard on them. TQ for instance, uses DirectX for the windows side control, and other mechanisms for the *NIX side.  openGL or D3D are choices for the user on w32. Obviously openGL only for every one else. Say what you like about DirectX, it has it's uses.

They also use openAL for sound on both w32 and *nix. Lots of things like that need to be sorted out :)
« Last Edit: April 14, 2002, 09:29:47 am by 122 »
No signature.

 

Offline Ashrak

  • Not Banned
  • 210
    • Imagination Designs
Programers Unite: FreeSpace FOREVER
well i got 3dsmax 4.2 but i havent installed it i think i MAYBE (very big maybe) can create animations in lightwave but i don't think you need em :)


so what are the things so far suggested to add to the new angine if it ever comes out?
I hate My signature!

 

Offline aldo_14

  • Gunnery Control
  • 213
Quote
Originally posted by wEvil


:jaw:  man, thats one long post.

Wouldnt MultiRes handle Auto-LOD generation?  It comes with 3dsmaxMAX4 and i was under the impression it can be made to work transparently with the game?

Either way..i just dont know enough about code to even remotely sound like I know what im talking about :P


Wouldn't auto-LODing be a bit too much of an overhead, though.  Off the top of my head, you'd have to maybe combine close normals and merge their UV maps in some way.

Maybe it would be better to just leave it to the modeller, and have a large number - say 8 or 10 - LODs?  This would save time and space for AI and physcis, which is what I'd imagine as being most important - especially if you're using a predictive AI, where the computer tries to determine the best move for the player, and counteract it.... i'd imagine you'd need to hold a lot of possible scenarios if you were using that.  Also remember that good textures simulate polys, anyway - I doubt anyone would really notcie the difference between a sub 500 poly X-wing and the 30,000 poly cgi model when it comes to playing a game.

On the other hand, I've only just started studying that area, so I'm not sure on what you can do with beyond FSM-based AI.

Personlly, I thinmk you should just stop talking about the engine features, and concentrate on getting a simple setup where you can have a plain box anticipating the players reactions and 'fighting' with them, then move to 2 enemy ships, then having a friendly AI ship, etc.

Mainly because you're going to need to get the physics, AI, etc working before you can predict what leeway you have for fancy graphics.... I mean, that final few percent of allocated memory is more useful for a clever enemy battle tactic, than a fancy volumetric effect when it comes to playing it. :)

 

Offline Merlin

  • 22
Programers Unite: FreeSpace FOREVER
Many thanks for the swift replies - glad to know it's busy out here!

I shouldn't worry too much, wEvil, I'm not even sure I know what you're talking about in graphical terms ;) - little experience on actual graphical development, I just get them to appear on-screen :) - honest answer is I don't know - besides, I also happen to be trying get it to work in a generic viewer without increasing file-size, not just in a game. But that's my problem :)

As for it being obvious, venom, a fair point, although I do think I brought up a couple of points not previously mentioned (ten points, no pun intended, for anyone who can find them in that mess) - the idea on verts is fine - progressive meshes is another we looked at.

Inquistor, first, thanks, second, I agree on the LOD thing, the automatic aspect is just my pet hobby - for real-time game rendering, you want best performance and to hell with disk-space :p!

Aldo, IMO the engine includes the physics & AI, a basic beta could well be the box you describe, and yes, gameplay is most important, which I believe I said earlier ...

'Wow, what a response' is all I can say!
Cry havoc, and let slip the dogs of war!

 

Offline Fozzy

  • Wokka wokka wokka!
  • 28
  • Wanabe A Mighty Modder
    • Fozzy's Myspace
Programers Unite: FreeSpace FOREVER
WOW, I love this idea, But it is going to be hard we are going to have to devlop some sort of plugins for "3D Studio MAX" to the  make the advanced POFs.

Just because of this topic i am going to buy.

Games Programming Starter Kit 5.0

It contains Microsoft C++
and  a game studio thing (Standard edition)
best of all it comes with a ebook about "3D" programming
The Terran VolksWagen Project - Lol
"that was a little too close, we gota wait fifteen mins to change our shorts" = (snipes, FS2)
I can whoop your ass with my LOGITECH

  

Offline wEvil

  • The Other Good Renderer
  • 28
    • http://www.andymelville.net
Programers Unite: FreeSpace FOREVER
Well...as soon as the programmers get back to us I have or can get hold of most SDKs for 3D formats and programs so translators can be written.


Nope they arent warez, the uni has copies of most of them.

 

Offline Inquisitor

Programers Unite: FreeSpace FOREVER
Fozzy: The starter kit is neat, but, not sure how much you'll get out of it. Last I checked, it came with a copy of Genesis 3d (though that was version 4) another free engine that may or may not be suitable, it's certainly poorly documented :) and it's not open source (I thought they were going commercial with it, maybe not, worth a look) and the C++ compiler is the "learning edition" which is great for learning, but you can't apply the service packs to it and you can't distribute the exes you make with it (it pops a message saying do not distribute at runtime).

Catch me online if you like, there are LOTS of good resources out there, and you can even get C++ compilers for free (gcc anyone?) there might be a better way to "get started" :)
No signature.

 

Offline Kazan

  • PCS2 Wizard
  • 212
  • Soul lives in the Mountains
    • http://alliance.sourceforge.net
Programers Unite: FreeSpace FOREVER
Merlin has his head on straight :D

I agree with him on just about everything exceptions:

Direct3D will not be the default rendering system, the windows team can add a Direct3D renderer if they want [we'll have renderer plugins] _but_ OpenGL is the default to keep the main codebase as smiliar as possible

He may or may not be correct on basing off another engine, i just don't like to do that.. especially if it requires _special_ librearies that aren't included and aren't truely standard.  Sure GLUT for OpenGL would have to be distributed with the FSFengine but it's much more standard than Doxygen or anything like that.


As for OOP - WORD UP :D



Oh  what we should do is write an abstraction layer for between the underlying operating system and the actual engine - so like if we don't use GLUT to write everything to the screen with would have a class OSInterface that wraps all platform specific code - and with conditional compilation conditions [compilers define preprocessor constants that ID the operating system] can determin which OSInterface abstraction layer is the one actually used
PCS2 2.0.3 | POF CS2 wiki page | Important PCS2 Threads | PCS2 Mantis

"The Mountains are calling, and I must go" - John Muir

 

Offline aldo_14

  • Gunnery Control
  • 213
Programers Unite: FreeSpace FOREVER
I'd be careful about Microsoft coding stuff, because they've been known to subtly edit languages so they only work with windows.

Java is a good example - Microsoft were (sucessfully) sued by Sun for trying to to make the java Virtual machine only run on Windows machines.  Hence the presence of J# on the .net dev kit - and probably c# (not too sure on that one).

We had an MS tech bus on campus a few eeks ago to pimp their wares, and Cs students can get Win Xp and the .net dev kit - not that I'm overly bothered.  mind you, my comp Arch teacher loathes MS, and managed to get in more than a few cheap shots with the demonstrator guy :D ;7

Oh, merlin - just curious - what Uni are you at?
« Last Edit: April 14, 2002, 10:27:30 am by 181 »

 

Offline Inquisitor

Programers Unite: FreeSpace FOREVER
blech, avoid .NET :(

Anywho, the way TQ does it is it only invokes the DirectX stuff ON windows. never even gets looked at in the *nix builds.

But that's not an issue, whatever gets built has to have an openGL rendered, wholly agree with Kazan on that.
No signature.

 

Offline Merlin

  • 22
Also agree with use of OpenGL/AL, I was only using DirectX as an example since it's been what I lived and breathed with for some time now! :) Definitely must be cross-platform.

University of Birmingham, aldo, (not the one in Alabama :p)
Cry havoc, and let slip the dogs of war!

 

Offline aldo_14

  • Gunnery Control
  • 213
Programers Unite: FreeSpace FOREVER
Just make sure that, when you design it, don't use UML!!

Far as I can tell, that was only conceived make lecturers and systems designers look like smart-arses. :)

 

Offline Fozzy

  • Wokka wokka wokka!
  • 28
  • Wanabe A Mighty Modder
    • Fozzy's Myspace
Programers Unite: FreeSpace FOREVER
no bodys actualy comfermed what language this will be written in.

I can program in Visual Basic.

I made this yesterday: http://www26.brinkster.com/fargate/malm.html

also I can access the regestry so I would be usefull to make the launcher. All though I would need some graphics experts like venom to make the graphics.
The Terran VolksWagen Project - Lol
"that was a little too close, we gota wait fifteen mins to change our shorts" = (snipes, FS2)
I can whoop your ass with my LOGITECH

 

Offline Merlin

  • 22
I hear that :D! UML is slow & boring - although there are utilities that allow you to code and generate UML afterwards... but I've never used them.
Cry havoc, and let slip the dogs of war!

 

Offline an0n

  • Banned again
  • 211
  • Emo Hunter
    • http://nodewar.penguinbomb.com/forum
Programers Unite: FreeSpace FOREVER
Quote
Originally posted by Fozzy
also I can access the regestry so I would be usefull to make the launcher.

You wouldn't happen to have registry editor that you could send to [email protected], would you?
"I.....don't.....CARE!!!!!" ---- an0n
"an0n's right. He's crazy, an asshole, not to be trusted, rarely to be taken seriously, and never to be allowed near your mother. But, he's got a knack for being right. In the worst possible way he can find." ---- Yuppygoat
~-=~!@!~=-~ : Nodewar.com

 

Offline CP5670

  • Dr. Evil
  • Global Moderator
  • 212
Programers Unite: FreeSpace FOREVER
I can do some basic programming in Visual Basic and C++ and have a little bit more experience with Mathematica, although nothing good enough to work on a full-fledged game. I might be able to put together the low-level AI commands and the physics (but someone else will have to render it into C++), along with any grammar/spelling stuff (if that even comes up).

Quote

Far as I can tell, that was only conceived make lecturers and systems designers look like smart-arses.


That is the same reason that greek letters are used all over the place in math. :p (i.e. x looks smarter than x :p)

 

Offline wEvil

  • The Other Good Renderer
  • 28
    • http://www.andymelville.net
Programers Unite: FreeSpace FOREVER
start menu---run program

regedit.