I know its not a LOT of code. I'm just saying because I was expecting something a little bit simpler, if you will :p .Quote:
Originally Posted by Jacob Roman
@chemicalNova
Thanks, I'll defiantly give him a call when I need some help with that.
Printable View
I know its not a LOT of code. I'm just saying because I was expecting something a little bit simpler, if you will :p .Quote:
Originally Posted by Jacob Roman
@chemicalNova
Thanks, I'll defiantly give him a call when I need some help with that.
Nice idea, loved SS2.. I'm gonna keep an eye on this thread :)
Edit:
Just wondering; What are the tech targets? Are you guys going for a System Shock 2 look and feel or more advanced so to speak?
And..:
- 3rd party tooling?
- Scripting?
- Audio engine?
- IP (Intellectual Property) usage.
etc
I'm aiming more towards a more advanced look and feel, like how modern day games look (such as hl2, but not that advanced).
As for the rest, we will figure them out as we need them. Right now, I think we are going to make all our sounds (music and sound effects such as a gun shot) and make them a MP3 or a WAV file.
So... DX8.1 (vb6 max) with Shader support.
Just wondering.. why not VB.NET so you can use DX9?
Cause .NET executes 3% slower than VB6. And I didn't care for it being 100% object oriented and managed. But it's going to be interesting to pull this off in VB6.Quote:
Originally Posted by Devion
True, can't say I mind VB6 though.. Still prefer it above VB.NET any time =)
I've sent k1ll a pm.. I might be interested in joining you guys for this very interesting project.
See the thing is, I really want this to be as self suffecient as possible ie, don't make the user download 344309248 things that are 90000mb each.Quote:
Originally Posted by Devion
The .Net Framework is like 50mb.
VB6 runtime is like 5mb.
Since, I used to have dial-up, I feel for all the people who can't/don't want to download the .Net Framework. But, I may be intrested in programming in .Net when it becomes more wide spread ie more than 50% of computer's have it installed.
Besides DX8 is still viable to use, latest is 9. So, its not like its THAT old.
Aye, totally agree on that =)
i'll do level design, just give me an idea of what you want.
Might wanna sneak peek at SS2 levels ;)
Yeah, he's a friend of mine so I installed it on his comp. All he needs is a no cd crack for it. He just hasn't posted until now. :).
Ok, as you can probably see in the front page I have been assiging parts.
Jacob, hopefully you'r not banned, you just put that as your title :p. When you get back tell me what you want to work on.
Ummh.. Banned, I don't think that's a user-subtitle that you choose.. you kinda get it :X
But for some reason he got it before, Ima PM a admin and see whats going on. Hopefully if he was banned, it wasn't a permenant ban :(.Quote:
Originally Posted by Devion
Ok I talked this over with my dad, he says that it's to close and we are going to have to change the name. Also, this game it self will have to have NO refrence to System Shock 2 at all. (But we can still talk about the ideas it surrounds XD).
Edit: Planet Invasion will do temporarly until we can agree on a name, just in case the companys decide to do some sniffing.
And Jacob will be back around 12-05-2005 ~02:00 PM.
You can use several 'keywords' of SS2 without infringement though. (like Shodan and such)
Hmm...ok but how does Plaent Invasion sound? Made it in like 1 min :D.Quote:
Originally Posted by Devion
Cheesy in my humble opinion :)
--
Though a colon would help.. Planet: Invasion. though would mean the project title is Planet(tm)(c)(r) =]
--
A few out the top of my head:
- PlanetFall
- Shocked III
- Trail of Destruction part XIV : The Killer Computer returns....
Last one is a joke.. don't ever think about that one... ever :)
I like Planet: Invasion because then we could use things like Planet: Earth, Planet: Mars, or something along those lines if we were to make a sequal.
PlanetFall also sounds good. I'll ask some people what they think.
Anywho, I should have a small DX example done today, I'm starting to get this stuff.
But, I'm defiantly going to need Jacob's help to write the engine.
I'm going to have to setup a way for members to upload code somewhere so everyone can see it and change it if they see it needs to be changed.
Edit:
Finished up with a testing of Direct X with VB. I'm learning from this site (http://directx4vb.vbgamer.com/Direct...rials/DirectX8) amoung others. But, I got the code from there. Modifyied it heavily of course. I made it a triangle instead of a square (I commented out 1 vertice to make it, because a triangle is 3 vertices, because it only has 3 points.). I made it move with a timer, and it bends while it moves. Granted this isnt special, its a big step for me into Direct X.
We need code bases for the engine and such. Pref the engine in a dll, same for the game engine, etc.
This makes it so much easier in the long run when code has to be recompiled.
Hint for every dev: Binary compatability!
Thats a good idea :thumb: .Quote:
Originally Posted by Devion
But, I'm going to wait for Jacob to come back. Becuase I think he may want to work on the engine. :) Besides, he knows the most about Direct X (at least more than me ;) ).
Might as well start making a milestone checklist.. 2 actually.. one tech, one content. And use K.I.S ;) (Keep it simple)
Ex.:
Tech:
- Render fully textured room with reflections
- Fully textured room with shadow casting
- Room with bouncing ball (Physics)
- Positional Sound
- Sound reverb
- EAX Support
Content:
- Story
- Storyboard split in 'acts'
- Game script (story wise) per 'scene'
etc.
This is going to be a *****-post with some pointers. Thou are warned :]
Looking at that test.rar there are few things that bothered me a bit, mostly code layout and type declaration. I know this is a test so I'll ignore the type dims but..
VB Code:
Public Function Initialise() As Boolean On Error GoTo ErrHandler: Dim DispMode As D3DDISPLAYMODE '//Describes our Display Mode Dim D3DWindow As D3DPRESENT_PARAMETERS '//Describes our Viewport Set Dx = New DirectX8 '//Create our Master Object Set D3D = Dx.Direct3DCreate() '//Make our Master Object create the Direct3D Interface D3D.GetAdapterDisplayMode D3DADAPTER_DEFAULT, DispMode '//Retrieve the current display Mode
Looks a lot better when
VB Code:
Public Function fbInitD3D() As Boolean On Error GoTo ErrHandler 'Describes our Display Mode and Port. Dim DispMode As D3DDISPLAYMODE Dim D3DWindow As D3DPRESENT_PARAMETERS 'Create our Master Object and D3D Interface. Set Dx = New DirectX8 Set D3D = Dx.Direct3DCreate() D3D.GetAdapterDisplayMode D3DADAPTER_DEFAULT, DispMode
Which gets me to a few pointers:
- We need to set a certain rulebase regarding type definitions, function naming, etc.
- Layout.. use tabs.. use a LOT of tabs if necessary.. having everything splattered against the left makes code look chaotic.
- Commenting.. Each module/form should have a top comment saying basically who edited it last, what was edited and when. (WWW) - Also place comments above code .. not behind it as it might be obscured by the width of the code window.
- Option Explicit.... needs no explanation.. if someone is wondering why option explicit I'm going to pull out an IRC trout and slap 'm :)
- No Variants without damn good reasons.. The most common mistake:
^ A is a variant...VB Code:
Dim A, B as string.
- For I/O matters... no Open "x" for input as #1 or #2.. or #5.. use Freefile.
My 2 million cents ;]
I know the one I posted is garbage, but I did it in a hurry. :).
Ulli's Code Formatter can help us with the indentention if need be.
Thats a good post, its some good ground rules.
That variant problem, I had acctually found that out when I was make my Instant Message Client/Server. My VB teacher had told us that would could do that, shows how much she knows :p.
Aye. But who needs a code formatter if the code has been properlly formated from the moment it was written down :)
--
Anyway: Since I don't have a job yet within the team I'm up for making a sorta PAK file with directory and compression support. (no zip file but it does kinda sound and look that way).
Black and White logo pre-design idea
How's about Plant: Invasion (like you said before), and would it be hard to put Earth in the background instead of a moon-like planet for the first one? Otherwise they are great :)
I'll see if I can make a better one.. not all to happy with this one yet :)
A day left till jacob is allowed back in I guess? We need to have discussions things on MSN.. so people don't get banned :)
Not really. Try today. ;)Quote:
Originally Posted by Devion
k1ll3rdr4g0n, the whole time I was banned I was making some DX tutorials. I'm far from finished, but hopefully that should help you out when I get done. Also, on and off, I was making a 3D engine.
I can setup a Flash based chat (MySQL driven), or a Java (IRC driven) chat (both web based of course). So then nothing is delayed like this again.Quote:
Originally Posted by Devion
And Jacob, we are going to be using bsp for the maps correct?
Yep, bsps are perfect. ;)
I can setup an irc server with ease if needed.. and/or anything else required :]
Okay, I'm posting this from a bunch of ideas I had for CC (otherwise known as MWBG).. Basically GUI and Script thingies..:
Large post ahead :)
Code:<!-- GUIMenu_MainMenu plus Children -->
<?
<MWBG>
<!-- MAIN -->
<Menu ID="GUI_MainMenu">
<Background>%FS_TEXTURES%\Menu\MainMenuBG.jpg</Background>
<DefaultCursor>%FS_TEXTURES%\Menu\Mouse_norm.jpg</Cursor>
<ImageMask>FF00FF</ImageMask> <!-- Purple -->
<BackgroundMusic Loop="Yes" RestartOnMenuChange="No">%Fs_MUSIC%\Menus\Theme.mp3</BGMusic>
<Font>Impact</Font>
<FontShader>%FS_SHADERS%\Menu\Metal.shader</FontShader>
<Widgets>
<Widget Type="Button" OnClickScript="" OnClickMenu="GUI_Tutorial">
<Text>Tutorial</Text>
<Location XAlign="Middle">0,200</Location>
</Widget>
<Widget Type="Button" OnClickScript="" OnClickMenu="GUI_JoinServer">
<Text>Join Server</Text>
<Location XAlign="Middle">0,250</Location>
</Widget>
<Widget Type="Button" OnClickScript="" OnClickMenu="GUI_CreateServer">
<Text>Create Server</Text>
<Location XAlign="Middle">0,300</Location>
</Widget>
<Widget Type="Button" OnClickScript="" OnClickMenu="GUI_Options">
<Text>Options</Text>
<Location XAlign="Middle">0,350</Location>
</Widget>
<Widget Type="Button" OnClickScript="" OnClickMenu="GUI_Quit">
<Text>Quit</Text>
<Location XAlign="Middle">0,400</Location>
</Widget>
</Widgets>
</Menu>
<!-- OPTIONS -->
<Menu ID="GUI_Tutorial">
<Background>%FS_TEXTURES%\Menu\MainMenuBG.jpg</Background>
<DefaultCursor>%FS_TEXTURES%\Menu\Mouse_norm.jpg</Cursor>
<ImageMask>FF00FF</ImageMask> <!-- Purple -->
<BackgroundMusic Loop="Yes" RestartOnMenuChange="No">%Fs_MUSIC%\Menus\Theme.mp3</BGMusic>
<Font>Impact</Font>
<FontShader>%FS_SHADERS%\Menu\Metal.shader</FontShader>
<Widgets>
<Widget Type="Button" OnClickScript="" OnClickMenu="GUI_ControlsOptions">
<Text>Control Setup</Text>
<Location XAlign="Middle">0,200</Location>
</Widget>
<Widget Type="Button" OnClickScript="" OnClickMenu="GUI_VideoOptions">
<Text>Video Options</Text>
<Location XAlign="Middle">0,250</Location>
</Widget>
<Widget Type="Button" OnClickScript="" OnClickMenu="GUI_SoundOptions">
<Text>Sound Settings</Text>
<Location XAlign="Middle">0,300</Location>
</Widget>
<Widget Type="Button" OnClickScript="" OnClickMenu="GUI_MainMenu">
<Text>Back</Text>
<Location XAlign="Middle">0,300</Location>
</Widget>
</Widgets>
</Menu>
</MWBG>
?>
Code:Usage of the GUI XML file..
All the GUI Menu attributes should be under
<MWBG><Menu ID="*">
The ID of the Menu gives it a tag that can be access with the OnClickMenu of buttons.
Menu Properties
- Background
The background property specifies a background that will be rendered when the menu is active.
The value is just a location to the texture. Background has one parameter 'Resize' which if set to "Yes" will
stretch the texture to fit the screen, if set to No it will center the image.
- DefaultCursor
Set the default mouse cursor image.
- ImageMask
Set the masking color (transparent color) of an texture. Default is 0 (Black)
- WidgetGraphics
Set the directory where widget graphics can be found.
Requires Theme.cfg to set the properties of the widget.
- BackGroundMusic
The music that will play on the background while the menu is active. the Music value is the location of the file.
Properties are: Loop and RestartOnMenuChange which both are self-explanatory. (Yes or No as value)
- SoundEvent
This is the SoundEvent. When the mouse is over the button or object and when it's clicked it can generate
a sound event. SoundEvent doesn't have a value. Just 2 parameters called OnHover and OnClick both values are
filenames to wave files.
- Font
Set the default font for buttons (TTF or Bitmap font). Font Value is the name of the font or path to the font. Font only supports one paramter called Shader which allows setting a shader to be overlapped on the font texture.
- DefaultMenu
Set the Default menu when the user presses escape. Normally this should be the parent of the menu.
- Widgets
The Widget group is a certain object that will be rendered on the screen. There are several different types of
widgets available in the GUI Class.
Parameters for Widget-tag
Type - See below
OnClickScript - On click on the widget it will fire this script.
OnClickMenu - On click on the widget it will fire a MenuChange with the value.
(OnClickMenu="GUI_MainMenu" or.. OnClickScript="C:\Script.cfg")
Visible - Set the visiblity of the Widget. ("Yes" or "No")
Transparency - Set the transparency of the object: Default = "0"
Types:
Button - Can be clicked to initiate a menuchange or script start.
TextBox - A textbox where the user can fill in his own text.
ListView - To show multiple data with columnheaders that can be sorted.
Slider - A horizontal slider for change high-value data the easy way.
Image - A image that can be changed.
CheckBox - A Checkbox
Hidden - A hidden widget to store temporary data.
UpDown - A up down value widget for when a slider isn't good enough.
ListBox - A ListBox
ComboBox - A ComboBox
The following Child properties are supported
Text - For buttons and such this will set the text.
Location - Set the location of this widget based upon X,Y Pixel coordinates with a few extras.
(No Default, Value = X,Y) - Location has 4 parameters called XAlign, YAlign, XOffset, YOffset
which support the following values.. XAlign: Left, Middle, Right. YAlign: Top, Middle, Bottom
XOffset has a value of which the L,M or R gets offset by X amount of pixels. The same goes for
YOffset.
Variable - Set a Keyholder variable for this widget. If the value changes on the widget it will
save it's value to the specified key.
InitValue - Initial value for the widget. If Variable is used in this widget it will take that value.
DefaultValues - Allows to set a default value for this widget (doesn't work with Buttons and such). For
listviews these values should be comma-delimited.
Columns - For the listview. This allows to set the columns for the listview. Comma-delimited.
Code:Additional Script commands MWBG:
These script commands are to be used for in-game. Usage outside in-game state might give a few errors or 'problems'
Generic Functions:
- Echo(TextString) : Shows a message on console/top screen.
Actor Support Functions:
- SetWayPoint(WayPointName, X, Y, Z) : Set a waypoint.
- FireAtLocation(ActorName, X, Y, Z, AllowMove) : Actor will try to fire at location (AllowMove = "YES" or "NO")
- FireAtTarget(ActorName, Tag) : Actor will try to fire at tag (could be an actor/object etc)
- MoveActor(ActorName, X, Y, Z) : The Actor will walk to the designated area (Walk on it's own speed)
- MoveActorToWayPoint(ActorName, WaypointName) : The actor will walk to the designated area (set by waypoint)
- TeleportActor(ActorName, X, Y, Z) : Teleport Actor to destination
- TeleportActorToWayPoint(ActorName, WaypointName) : Teleport Actor to destination waypoint
Map Support Functions:
- SetHighLight(KEY, X,Y,Z, RGB-LONG, RADIUS) : Sets a bright spot at location, RGB-LONG = color, Radius is the radius in
units.
- RemoveHighLight(KEY) : Remove the Highlight location
- FadeOut(Seconds) : Fade out in Seconds
- FadeIn(Seconds) : Fade in in Seconds
- MoveCameraTo(X,Y,Z) : Move the camera to the location
Media Support functions:
- PlayMovie(MovieName, AllowCancel) : Plays movie and waits till it's finished. AllowCancel is "YES" or "NO and
allows player to press mouse or spacebar to cancel the movie and proceed.
- PlayWave(WaveName) : Plays a wave file
- PlayWaveEx(WaveName, ActorName) : Plays a wave file originating from an Actor class (3D sound)
We can us that for the menus and such :).
Since Jacob is working on the engine, we can work on the intro movie until he posts code. We can create the intro scene with 3D Canvas (http://www.amabilis.com/) its a real simple drag and drop 3D modeling and animation tool. It even makes the animations we make into AVI files, so we can easily add it to our game.
Posts code? It's too much code to even post. There's a 10000 character limit.Quote:
Originally Posted by k1ll3rdr4g0n
Well I wasn't talking about posting it here silly. Me or Devion will setup a FTP account that we can upload to. :p
Give me a shout when we got a baseline so I can go fiddling getting a gui and script engine working =)
(baseline means application with engine-components) :)
Well I don't need any scripting just yet.
Different perspective.. the script engine just calls any of your routines to load textures for the texture pool, etc. etc.