Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Dark GDK / DGDK Open Source Project

Author
Message
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 7th Oct 2009 17:10 Edited at: 7th Oct 2009 17:36
yeah, I noticed that, but there are no things in wizards/tutorials/samples folders and there are in the actual DarkGDK folder. But right now I will just apply an SVN checkout on the darkgdk folder.

Isocadia

Edit: Well I put everything in the Dark GDK folder, but it can't find PhysiXLoader.dll. But everything else works fine now.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 7th Oct 2009 23:56 Edited at: 8th Oct 2009 00:08
Hi Mista Wilson,

Thanks for the code - it will come in handy. My problem is that performing a simple file open one directory up from current directory the exe is running in is not working. It's as if the using `../` or `..\` isn't the correct syntax. I've use these operators to navigate relative directories in DBP and in my web pages. These operators are also present in the code you provided


So I assume from the code you provided that `../` or `..\` is acceptable, but, is it for the fstream.open()? I know its something simple, but, I cannot seem to put my file pointer on it.

Trapped inside the DGDK Open Source Project.
Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 8th Oct 2009 01:24 Edited at: 8th Oct 2009 01:26
Quote: "Edit: Well I put everything in the Dark GDK folder, but it can't find PhysiXLoader.dll. But everything else works fine "


Should be here:
C:\Program Files\The Game Creators\Dark GDK\Media\dlls

Noticed you spelt Phys(i)XLoader.dll wrong, I presume that is just a typo. Check that directory and let me know what is there, thanks.
puppyofkosh
16
Years of Service
User Offline
Joined: 9th Jan 2007
Location:
Posted: 8th Oct 2009 01:38
Quote: "So I assume from the code you provided that `../` or `..\` is acceptable, but, is it for the fstream.open()? I know its something simple, but, I cannot seem to put my file pointer on it."


Just a thought, would ios::in work instead of fstream::in?
Mista Wilson
14
Years of Service
User Offline
Joined: 27th Aug 2008
Location: Brisbane, Australia
Posted: 8th Oct 2009 03:35
@techlord, it should work, check that you have not set your character set to something that looks at those symbols as different than what hey are....

I will post another little class I use here, its a simple debug helper that outputs debug strings to a text file using fstream(the same one you are having probs with.)

The file it creates SHOULD be ONE LEVEL DOWN towards the root from the project's working folder. So if your project is in C:\MyProjects\ProjectA the file "lookforme.txt" should be created inside C:\MyProjects.

DEBUG.h :



DEBUG.cpp :



You may have to use search or something to find where the file has been created if it isnt where you expect. It is quite a small class, usage is very simple, no bells or whistles. Just include the files in a project to use it, it declares its own static accessor and doesnt need to be initialized or instanced, and can be used like so :



One last thing to check is that any of the other developers you have working on code, hasnt thrown in a working folder change to load some libs or somthing somewhere and forgot to change it back afterwards or to tell you it's there lol

Also, the working folder can be set from inside the project settings... by Right-Click the project, select Properties and then in the "General" category under "Configuration Properties" you will see your output and intermediate folders.. they should look something like this, and will output to the release/debug folders inside the projects, depending on the mode its linked in.




Hope some of this helps you get this sorted, looks to me like it has to be something simple somewhere that you will probably shoot yourself over when you discover what it is lol... Just the "discover what it is" part that is frustrating lol

If it ain't broke.... DONT FIX IT !!!
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 8th Oct 2009 16:11
@matty, the dll is there, and what I wrote was a typo. But still it can't find it.

Isocadia
Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 9th Oct 2009 11:33
Quote: "@matty, the dll is there, and what I wrote was a typo. But still it can't find it."


I have no idea at the moment, can you cut and paste the error message, also, you said everything else works fine, does that mean that the project will compile and run?

I don't really understand dll's, I had to put them in that folder at one point for it to work but when I remove it, it does not break anything. I will have to read up on some stuff and get back to you.

What I may do is delete all the DOSP files on my computer and download them all again and see if there are any issues.
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 9th Oct 2009 15:28
Well, it does not run, but what i ment with everything works fine: All the other problems I had with missing libs/ missing h files are now gone. And yeah, what are DLL good for??

error messeges:

This application had failed to start because PhysXloader.dll was not found. Re-installing the application may fix this problem.

and the debug:

Faker1089
13
Years of Service
User Offline
Joined: 30th Aug 2009
Location: My own little world....
Posted: 10th Oct 2009 04:14 Edited at: 10th Oct 2009 04:16
You don't have the PhysXloader.dll file in the same folder as the executable. Copy all of the DLL files from /Media/dlls/ into the folder that has the .exe in it. So me for example would copy all files from
C:\Program Files\The Game Creators\Dark GDK\Media\dlls
into
C:\Program Files\The Game Creators\Dark GDK\Projects\S3GE\S3GE\Debug

If you still have problems then delete all of the files in the debug folder, re-copy in the DLLs and try compiling and running again.
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 10th Oct 2009 09:40
K, but what I saw that all the DLL's are already in the debug folder, exept that one. Maybe make it add automaticly when compiling or when downloading the SVN.

Isocadia
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 10th Oct 2009 09:55
Well, now almost everything is working, exept that now I get an unhandled acces violation. All the DLL's are in the debug folder and I get no missing files errors or files not found errors, exept that acces violation.

Hope you guys can help.

Isocadia
Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 10th Oct 2009 14:31
Quote: "Well, now almost everything is working, exept that now I get an unhandled acces violation. All the DLL's are in the debug folder and I get no missing files errors or files not found errors, exept that acces violation."


Could you copy and paste the error message for us?
In the "main.cpp" try and comment out some stuff and see if you still get the error, so comment out the physics stuff and see what happens, then try the scripting stuff etc..
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 10th Oct 2009 14:46 Edited at: 10th Oct 2009 14:51
@Matty: Well, when I click and see the disassembly, the acces violation seems to take place at an int. but I will post the error message here.

Error sequence:

First I get an error that S3GE.exe has no debug information or it cannot be found, binary was not build with debug information ( related DLL is irrKlang.dll ( from debug window. )

I press continue.

Then I get this error:


then I press break, het this:

No symbols are loaded for any call stack frame. The source code cannot be displayed.

then I press disassembly, I get this:



and that is it, it doesn't run and I can only stop debugging.
Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 10th Oct 2009 15:57
I am curretly looking into the "no symbols" issue as it is stopping me from being able to put break points in when debugging, it would be better if someone on the project who knows about this stuff could look into it as I am learning as I go so it is taking longer.

I am currently following this guys advice, but I dont completely understand what is going on.

http://geekswithblogs.net/dbutscher/archive/2007/06/26/113472.aspx
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 10th Oct 2009 16:59
Well, what I would recommond to make compiling more easy, instead of needing to add the DLL files manually in the debug folder, put them in the project so that when you compile, the DLL files that are in the folder always match the DLL version that the projects runs ( this because when you update the folder and you miss that the DLL where updated, you might use the wrong DLL's and that may cause errors at certain points. )

Isocadia
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 21st Oct 2009 20:34 Edited at: 21st Oct 2009 20:38
Quote: "Well, what I would recommond to make compiling more easy, instead of needing to add the DLL files manually in the debug folder, put them in the project so that when you compile, the DLL files that are in the folder always match the DLL version that the projects runs ( this because when you update the folder and you miss that the DLL where updated, you might use the wrong DLL's and that may cause errors at certain points. )"
I agree. Perhaps we can add the Debug folder and required DLLs, ignoring the files that change locally when compiled? Open for suggestions.

I Added dittoTPU Folder to `Dark GDK\Tools\` directory. This is the utility I've been secretly working on for automating the creation of Bind Functions for DarkLUA. I sorta ran into a snag with loading files from relative directories. I setup test file in the same folder as the exe to continue debugging and working out how I want to read data into the processor. WARNING: The current version of dittoTPU will not execute without crashing. So give me a day or two to upload a version that will at least execute and terminate without crashing.

I see a lot of new members but few request to be added to SVN. Without being added to SVN you cannot actively participate please add a note in the Coordinator to be added here.

Its been a while, any status reports - hehe?

Trapped inside the DGDK Open Source Project.
Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 22nd Oct 2009 16:33
I have been revising for an exam and then I was ill and missed the exam

Anyway, back to the physics. I was getting involved in some pretty deep stuff to do with terrains, manipulating objects vertex data etc..
When I return to the project(probably this weekend) I will take a step back and get some of the simpler stuff finished so you guys have something to get your teeth into.
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 23rd Oct 2009 18:39
Well, I just can;t get the project to even start ( acces violation or something and 2 warnings in darklua ) so if anyone has got a working version, could you post it here ir something so I can see what it actualy looks like right now??

Isocadia
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 28th Oct 2009 08:02
Quote: "Well, I just can;t get the project to even start ( acces violation or something and 2 warnings in darklua ) so if anyone has got a working version, could you post it here ir something so I can see what it actualy looks like right now??"


Yes, the project is broke Not sure exactly what/when the update broke it. However I did have a working exe with DarkLUA functioning. Isocadia what warnings are you getting with DarkLUA?

Trapped inside the DGDK Open Source Project.
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 28th Oct 2009 18:59 Edited at: 28th Oct 2009 19:00
I get this warning:



And this acces violation:



Isocadia
Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 29th Oct 2009 15:40
Mine is working but I have not updated (or commited) for a while, I guess I should not update or commit until its fixed as I am making a little bit of progress with the physics at the moment.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 29th Oct 2009 22:55 Edited at: 29th Oct 2009 23:21
I was able to rebuild, compile, and run the S3GE.exe successfully (Debug Win32) without any errors or warnings. I upgraded to the latest version of TortoiseSVN. I relocated some misplaced DLLs to the Debug Directory. I committed Revision 60 to SVN which is the lastest.

Below are screenshots of my DOPS Directory Structure with TortoiseSVN. Goto TortoiseSVN Help Doc Section 4.7 to review the status of icon overlays.






The path of your Dark GDK Directory may differ but the structure of sub directories should be duplicated. Your sub-directories should contain all the directories and files that have a (Working) or (Edited) icon overlay. All the directories and files with (Ignore) icon overlay are ignored from the project. Files with (Not Added) icon overlay haven't been added to the project yet, so you may not get these files when you do a SVN Update.

The S3GE Directories and Subdirectories.









Support Directories. I omitted screenshots of directories that currently have no directories and files applicable to the project at this time.








DittoTPU Sub Project Directory Structure








Trapped inside the DGDK Open Source Project.
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 30th Oct 2009 21:35
Okay people, I think I know what my problem is, I installed GDK like....... 3 august, so I still have the old version. Right now I'm installing the 7.4 version ( but the 10 august version from the edit of the first post, hope that this is with that bug fix ).

Isocadia
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 31st Oct 2009 10:04
Well, I think I got a serieus problem here, I downloaded gdk from the website, deinstalled my old version, deleted the folders related to gdk that were still there, reinstalled gdk, added the 7.4a include and lib files to my project. Did an svn checkkout on gdk folder, tried to run and still got an acces violation. So for the moment, I think I'm not gonna do anything with this project until it is more advanced, cause now I can't even get it to work.

Isocadia
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 31st Oct 2009 10:33 Edited at: 31st Oct 2009 10:36
Quote: "So for the moment, I think I'm not gonna do anything with this project until it is more advanced, cause now I can't even get it to work."
If you cannot get it to compile at the current stage, getting it to compile later on down the road may be twice as much trouble. Others have been able to compile and run with no errors, so there is something wrong on your local machine. I would be curious as to what your Directory structure looks like. Make sure not missing any files. Also what are your compiler settings? I'll post a example of my own tomorrow.

Trapped inside the DGDK Open Source Project.
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 31st Oct 2009 12:51
Well, if you want to do that, I will look in it like a last time. If I can't get it to work then, well I don't know what I will do after that. But one question, how can you compile the project without having physxloader.dll in your debug folder?? Cause if I don't put it there, I get an dll mising error.

Isocadia
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 31st Oct 2009 21:14 Edited at: 31st Oct 2009 21:47
Quote: "how can you compile the project without having physxloader.dll in your debug folder??"
For me its stored here



When you successfully compile and run you will get a rotating cube



Also my current version of DGDK is DarkGDK_Update_NOV08.

I took a look at my S3GE Properties. There appears to be several properties that are looking for specific Physics Libraries. I did not make these changes so Matty must have. Get the latest SVN Update prior to anything else and make sure you don't have the project open.

Once you have the latest update. Open S3GE.sln and check Project --> S3GE Properties.

C/C++ --> General --> Additional Include Directories =
. This is a specified drive path so if your Dark GDK directory does not match you may have to remap for your drive path.

Linker --> Input --> Additional Dependencies PhysXLoader.lib Nx Cooking.lib

If you can get to compile without errors then you're really close to getting it working. You may have debug to see where other errors could be hiding.

Trapped inside the DGDK Open Source Project.
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 1st Nov 2009 09:01
Well, can you tell me where to get that version. cause what I did, downloaded gdk from here: http://gdk.thegamecreators.com/

then downloaden the 7.4a in the post DarkGDK 7.4:

Quote: "A new version of Dark GDK is now available:

The idea of releasing is to let anyone test it out and see how things are shaping up. It still needs a lot of testing with plugins, functions etc.

EDIT 10th August: New version from http://files.thegamecreators.com/DarkGDK/DarkGDK_7.4a.zip"


then installed gdk from website and replaced the include and lib folder by the one inside the 7.4a folder.

Does this mean I'm on the latest version, cause right now, I really don't understand anything, the download from the site is not labeld with a version and I don't know where all the updates are located.

Isocadia
Isocadia
13
Years of Service
User Offline
Joined: 24th Jul 2009
Location:
Posted: 3rd Nov 2009 17:21
Well, right now I have updated to the nov 2008 version, and all the linker options are correct. But when I debug, I click break, can't show symbols so I click show dissassembly, then I see an arrow pointing at this:



then I click quickwatch and I see this:



So I really don't know what is causing this.

Isocadia
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 7th Nov 2009 11:13 Edited at: 7th Nov 2009 11:50
There are many new members who have joined the project but have not requested SVN access to make contributions. There are lots of Tasks for others to pickup and run with. For the details on these Tasks please visit the DOSP Coordinator.

We have lots of posts in this thread and new members may be lost as to whats going on, so, I think a Project Update is in order.

Quick Overview

DGDK Open Source Project goal is to develop the most powerful Open Source Game Creation System ever created with DGDK. Essentially three projects in one, the Project-Trio consists of:

1) Super3D Game Engine (S3GE) - A 3D Game Engine supporting the creation of every computer game genre and hybrids.

2) Super3D Game Editor (S3GEd) - All-in-One Visual Editing Suite powered by the S3GE used for creating, editing, and assembling game content/FX/UI/logic.

3) Super3D Game World (S3GW) - A Large Scale Multiplayer Game that demonstrates S3GE features and multi-genre game mechanics.



S3GE Circuitry (Click to Enlarge)


Each application also repesents a developmental phase in the project. We are in Phase 1 developing the S3GE. S3GE is built entirely with Plug-ins. The diagram above represents some of the Plugin Systems going into the engine. We are snapping the plugins together with the S3GE API which is a system of managed wrapper functions. Once we have obtained the major Plug-ins we will snap'm together.

I had vague idea on what priority order the Plug-ins should be snapped in the engine. I have also vaguely conveyed this and will attempt to clarify here.

1. Scripting Engine

My top priority was to get scripting into the engine immediately. My reason: to provide programmable functionality at the lowest level of engine operation for formatted data, macros, embedded scripting, and addons. I initially integrated Barnskis LUA Plug-in but ran into some issues with registering functions, so I elected to write my own Wrapper Plugin for LUA I dubbed DarkLUA

The DarkLUA Plugin has been integrated and is functional. The current main.cpp demonstrates a simple script that rotates a cube. I would prefer to keep expanding the main.cpp to demonstrate new Plug-in functionality and features as we add them. It would be advantageous for these features to be integrated in the demo as well.

In order to make C++ functions accessible to LUA Script you have to write a `Binding` function. I anticipate having lots of binding functions so instead manually writing these binding functions, I elected to write a code wizard to automate generating the code for them. Well, like most of my projects, I let feature creep set in and the utility turned into a full blown app. All the features have side tracked me, so, I've scrapped all the fancy stuff to focus on get it to work. When complete it will take a list of function prototypes and generate LUA binding functions.

2. Networking

My second priority was to get full network functionality into engine to support file/data transfer and communication across internet at the engine's lowest level of operation. Michael Pryor contributed Dark Net (FREE for use DOSP Only), providing a powerful Network capabilities and saving lots of time. Faker1089 was working on getting a network demo working. The goal of the network demo was to connect to a remote HTTP Server and transfer a xml file (which we have a XML Parser contributed by Faker1089). This exercise would be the predecessor for establishing protocols, messaging, and more complex communications in preparation of multiplayer support. Faker1089 was originally working on this too, but, had to cease efforts to tend to personal matters. I was going to pick up this Task, but, its up for grabs and I'll assist anyway possible.

3. Physics

My Third priority was to get physics functioning. My reasoning for getting Physics functional is for Collision Detection which is mandatory for basic 3D interactivity. Physics Libraries offer a complex assortment of functions for calculating Collision Fast! I won't even mention how cool the physics simulation for movement control is. Matty Halewood has integrated PhysX into DOSP and we are eagerly looking forward to demo.

4. Pathfinding.

Pathingfinding is not only valueable in Game Entity AI for path traveling & collision avoidance, but it can also be used to automate Editing tools and other functions. Any takers?

5. Particle Accelerator

Now we start getting into the good stuff. The Particle Accelerator is a conceptual Particle System that manages massively replicated 3D and 2D entities. Many complex visual effects are achieved with Particle Systems. The Particle Accelerator is programmable uses several process and rendering optimizations such as LOD, Mesh To Sprite LOD, PVS, BSP, Portals. Any Takers?

6. Graphical User Interface

Prior to S3GE I wrote the Multi-App User Interface (MAUI) with DBPro. The goal of MAUI was to develop a powerful GUI System with Games in Mind. A GUI that supported Scripted Gizmo (aka Gadget) Behaviors, Scripted Actions, Sprite and Mesh Objects for display, 2D/3D Animation. & Sound, and other features.

Unlike the typical Window-Style GUI, MAUIs uses same Game Systems for Collision, Physics, Animation, etc just like the Interactive Game Entities. In fact, MAUI had the option to decouple the display so that the collision object (gizmo) could be applied to any mesh or sprite. So instead of treating the GUI separate, the game world is part of the GUI. I desire to bring MAUI 2.0 to DOSP.

Trapped inside the DGDK Open Source Project.
Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 7th Nov 2009 21:31
Great post Techlord, I keep promising a demo and it is coming soon lol. I have attached an image of what I have been working on recently, I have terrain and primitive objects working but the code needs cleaning up and a few minor bugs ironing out.

Once I have completely finished the primitive objects and terrain stuff I am going to document what I have done and how I have done it, my idea is to make it easy for people to add to or improve my code. There are plenty of things that need to be worked on: joints, vehicles, character controller, soft bodys etc..

Anyway, back to work.

Attachments

Login to view attachments
Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 8th Nov 2009 12:06
O.K, physics demo now included, let me know if you have any issues.

Whats pretty cool now is that the script is rotating the cube which now has physics. Feels like its coming together a little bit, although a long way to go yet.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 10th Nov 2009 19:53
Quote: "Whats pretty cool now is that the script is rotating the cube which now has physics. Feels like its coming together a little bit, although a long way to go yet."


Compiles and Runs with no errors. AWESOME! It is coming together and thats a Nitro Boost to my Motivational drive!

S3GE Plug-in Systems
LUA Scripting...Check
Physx Physics...Check

Trapped inside the DGDK Open Source Project.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 10th Nov 2009 20:07
Who CAN Contribute via SVN

faker1089
chunkschunks
techlord
isocadia
jezzap
mattyhalewood
tomtetlaw231

Who CANNOT Contribute via SVN.
(A SourceForge.net Username is required - Please provide it to me if you have one.)

abbyjenna29
acurrate eye
arvk
bas
bayofxyz
BigJohn
c0dR
ColonelBlack
Crazy Programmer
dandao
dreamwalker
hairad
heyufool1
Hirogens
Hiruma
hoyeon
leegang95
lhy95
mohit093
nemis
nod321
Oak
pashapook
Potassium
randal
Red Eye
Sparticus9090
takumishin
terrestrialpro
usuhuu_oxi
wolfulus
zogar


Trapped inside the DGDK Open Source Project.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 13th Nov 2009 17:23 Edited at: 13th Nov 2009 17:32
I know that from the description of the DOSP Project-Trio it would seem like everything has been covered. But, I really haven't touched on Shaders and would be interested in discussion on them for DOSP. I dont know very much about them. Are there any Contributors experienced with Shaders?

Also, I know that S3GE is 3D Engine, but, I would also like for it to have a integrated Text-based MUD Engine to compliment 3D operation as well. Is it possible? Are there any Contributors experienced with writing MUDs? Lets Discuss.

Trapped inside the DGDK Open Source Project.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 21st Nov 2009 06:39 Edited at: 3rd Dec 2009 10:28


I've been playing `The Borderlands` for the past week. It's a Role-Playing FPS that does a very good job of delivering a RPG Character Progression in a FPS format. Emphasis is placed on it being a First-Person Shooter as all of the stat/skill progression is combat/Weapon oriented, but that's ok with me.

I too have long desired to develop a RPG with a FPS Combat/Weapon System. For many years, I persued the creation of a such a game that would feature my Modular FPS Weapon System, I've affectionately dubbed GunVertor. The orignal premise behind GunVertor is a Modular FPS Weapon & HUD System that could be assembled into virtually a countless assortment of weapon designs.

When developing the system for an RPG, I realized that the weapon could become the embodiment of the character building. Weapons are assembled from interconnecting weapon components. Each component possess statistic variables that impacts the player's control, weapon performance, ammunition visual effect and damage.

So instead of the Player just customizing a Character, equipping weapons with no ownership value; the player is the Character and customizes their FPS Weapon to fit their style of game play and individuality. After all, The BFG is the hallmark of the FPS.

I will be pursuing the development of the RPG FPS with the Project-Trio is fully functional.



Gunvertor Weapon System


GunVertor Weapon Components:

The Chamber: The Weapon Core Component in which other components connect into. It is the mechanism loads ammunitions from the ammunition storage into the weapon, applies motivational force, directs ammunition through the barrel, and ejects ammunition byproducts. Chambers effect the amount, type and speed of loading ammunitions.

Barrel: Projects the ammunition. Barrels effect ammunition range and dispersion. Long Barrels produce long range/ narrow dispersion; Shorter Barrel produces short range/wide dispersion. Barrels also provide a ‘heat sinking’ for the weapon.

Loader: Can be attached to the barrel or magazine. Loads ammunition with Hand2.

Trigger: Control mechnism that activates Firing Unit/Mechanism. The Trigger determines how the user can fire the weapon. A weapon can posses multiple triggers.

Firing: Unit This component provides motivational force to a ammunition. High Quality Firing Units can project ammunition a great speeds long distances.

StockGrip: Absorbs Recoil. Recoil can effect weapon handling and accuracy. High Quality Stocks can absorbs greater amounts of recoil. Handgrip attaches to player.

Magazine: Magazine PowerCell Canister are storage components. These components effect Ammunition Refill/Recharge speed and Storage Quantity

AmmoMeter: A 3D HUD Display for Ammo Count associated with the magazine.

Scope: A HUD accessory component that assist in visibility of the target (ie: Zoom, Infrared, Thermovision)

Sight + Cursor: A HUD accessory component that assists in targeting object. Displays Targeting Cursor.

Distorter: This accessory attaches to the Barrel of the weapon to muffle sound of Solid Ammunitions or change the visual characteristics of Energy Ammunitions.

Bayonet: This Blade Weapon accessory attaches to the barrel of the weapon and used as melee weapon.

NEW! Deflector (not shown): This accessory attaches to the Chamber or Barrel providing defense shield capability.

Firearm Entity Class


Firearm Modelled Parts (simulated)


The Borderlands implementation is very different from what I had visualized. As a RPG, GunVertor would implement character progression with component upgrades for customizing/enhancing your weapon, instead of upgraded weapon prefabs. Borderlands random weapon generation leaves a sense of ownership missing, because you swap out the entire weapon instead of tweaking it. I won't even mention how generic the weapons look and animate. But the game is still fun to play.

Army of Two offers the closest Weapon system to Gunvertor. Army of Two 40th Day is highlighting their Weapon Customization System. Their system focuses on modern weapons. GunVertor would also include Sci-Fi Weapons so there still may be a small window of opportunity for me.

My goal with GunVertor would be to put an enormous amounts of detail into the appearance, animation, function, and stats of the components. IMO, in a FPS the weapons should be eyecandy. Thats what I've always appreciated about Unreal, their FPS weapons appearance and animations are top notch.

TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 28th Nov 2009 14:18 Edited at: 3rd Dec 2009 10:32




There is no doubt that Model Packs provide awesome artwork for an affordable price. My problem with purchasing Model Packs is knowing that the same Art Assets are being used by others. It is strongly desired that my game, has its own distinctive `look`. I've purchased packs and modified textures to provide some variation, but, thats not enough.

That is one motivation behind what I believe to be a unique approach to Model Packs and Entity construction within S3GE. A system I call, Modular Entity Construction Sets (MECs). The premise behind MECs is to provide modelled/textured Parts that can be assembled to create countless Entity variations.

Customization was the second motivator. I enjoy playing RPGs and Racers in which you can customize the appearance of your character/racer by changing parts. I realized that practically every 3D entity could be customized, although, maybe not necessary. Such a flexible Entity Creation System could prove in valuable creating large amounts of prefabricated and procedurally created 3D assets.

Inspired by Toy Construction Sets (ie Tinker Toys, Knex, etc), MECs uses a system of blocks & connectors to create classes of entities: Character Bodies/Heads, Furniture Props, FireArm Weapons, Melee Weapons, Trees/Plants, Vehicles/Crafts, and Machines; Blocks and Connectors create Parts which can be interchanged to create numerous variations within each Class of Entity.



MECs Key Features:

Standardized MECS Format. An XML-based Format that supports bone/keyframe/procedural/physics controlled animation, Level Of Detail, Shader Maps, Channelized Textures Map, and other requirements applied to 3D Entities. A standard labeling for Meshes, Bones, Animation, and Textures.

MECs 3D Plug-in that imports MECS Format into game engine/application. The Plug-in also supports parts welding & morphing, texture blending to create single piece entities when necessary.



The MECS Construct

Defines a MECS Building Block/Accessory and its Connectors.

Block: 3D Mesh in which one more Connectors are added.
- Block Skin: Textures, Maps and Shaders applied to a Block

Accessory: Audio/Visual or Virtual Object in which one more Connectors are added.
- FX Objects: Particle Emitters, LensFlares
- 3D Objects: Mesh, Lights, Camera, Sound
- Physics Objects: Cloth, Hit Objects

Connector: A connection point in which a Blocks and Accessories are connected.

- Mount: A external connector added to mesh or internal point defined within the mesh used to connect Parts & Accessories at runtime. Gender determines Parent/Child Relation between block and connector. Mounts have 3 types of Genders: Slot/Peg/Any. Slots are Parented by Blocks, Blocks are Parented by Pegs, Only Slot to Peg relationship allowed between specified Mounts of either gender. If the connection gender is any is used as standard mount

- Bone: two connecting points defined within a mesh used for bone animation. The two points maintain a Parent/Child relationship defined by the animation data. Two Bones connect to each other, at the points of the same name. Bones can be assigned a gender to connect to Mounts and Joints.

- Joint: Physics Rigid Body Joint often used in Machines: 6DOF, Clyindrical, Distance, Fixed, Point in Plane, Point on Line, Prismatic,Pully, Revolute, Sphere.

- Weld: A vertex point defined within a mesh and assigned to be used for (magnetic threshold) welding of two meshes together to create a single seamless mesh. Welds have two genders: Positive|Negative.

The MECS Entity Class

Defines a Game Entity Class, its Parts, and Assembly Hierarchy.

Class Part
- Core: Base Part in which Limb Parts connect. Mandatory for Entity Assembly.
- Limb: Extension Component that connects to Core or Limb.

Common Entity Classes:
* TerraForms (Terrain + Sky + Celetstrial Body + Fluidbody + Cloud)
* Building (Interior|Exteriors)
* Structure
* Trees & Plants
* Character Head
* Character Body
* Firearm
* Projectile
* Melee Weapon
* Prop
* Furniture
* Vehicle and Crafts
* Machines
* Items (Single Block with Connectors)

The MECS Entity

Defines a individual Instance of a Entity Class

Entity Part: Single Construct or Composite Construct

MECS XML Format


The Entity Class Hierarchy defines a Game Entity and the Class of Parts used to assemble it. Examples of Game Entities would be: Buildings, Trees & Plants, Character Heads & Bodies, Firearms, Melee Weapons, Props/Furniture, Vehicle & Crafts, etc. An example of Class of Parts would be like the FireArm Class illustration above. These are common entities found in games and the system is flexible enough to accomodate any others if needed. You can also create Sub Classes within the Classes for example Character Bodies: BiPed, Quadriped, Octopod, etc.

There are two types of Class Parts: Core and Limb. At minimum, one Core class part must be defined within a Class/subclass. The Core Class Part is usually the primary or central part in which limbs connect to. It can be used as the starting point. In the case of the Firearm Entity Class, I selected the Chamber as the Core class part (I named it Chamber for the lack of a better name, it was better than Core, lol). You can also optionally make limbs mandatory for assembly within a Entity class hierarchy.

The Class Hierarchy only defines what class of parts makes up a Entity, not what makes up the parts. In some cases the Entity Class is used to define a part (ie Character Head with parts for eyes, nose, mouth, ears). To create a part, we first start with a Construct. A Constuct consists of a one 3D/FX/Physics Object (Block) and one or more Connection Points (Connectors). A Part can consists of 1 or more Construct(s).

Entities -> Class -> Class Type (SubClass) -> Class Part -> Part -> {Construct(s) = Block + Connector(s)}

The connection system in MECS is the highlight of the system. Connectors tell MECS how and where parts connect. Connectors are defined within the Mesh (ie: Bones) and externally with the MECS Editor. Creating a Constuct should be as simple as 1)Loading in the Mesh; 2)Add and orientate Connectors; 3) Exporting MECS File Format. Connectors will also contain additional parameters to ensure that the foot bone connected to the lowerleg bone, and the lowerleg bone connected to the upperleg bone... All of these features will supported within the MECS File Format and MECS will know from the information how to assemble the entity.

I believe the current hierarchy is sufficient for futuristic and modern firearm assembly. I have a vague idea of what the bone and mesh def animation it will require dependent on the part and weapon states. I was drawing most of concept for firearm animation from characters. I havent put a list together for character bodies, but, I anticipate the following:

{character head} (core) -> neck <- chest
lower torso -> upper torso -> chest -> upper arm -> lower arm -> hand
lower torso -> upper leg -> lower leg -> foot

I intend to provide MECS with standard Texture, Maps, and Shaders support. In MECS textures/Shaders are treated as a interchangeable `Skin`. Ultimately, MECS just provides a means of export/import/assembly of 3D Game Entities with utilities that allow Developers to texture, animate, etc as they see fit.

TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 3rd Dec 2009 10:31


TextureMax is an Application & API that can be used to separate images into channels and then apply different colours to each channel adding instant variation to your media. This level of customization is often seen in RPGs but is applicable to all textures and images. Unfortunately, theres no freely available solution like TextureMax for DGDK, so I started designing Channelized Image Map Processor (CHIMP) based on how think TextureMAX works.

The TextureMax Application is basically a Drawing App that allows you 1) Load the Texture Image as a backdrop; 2) Create image map of virtual channels specified by a separate color; 3) You paint the image map pixel-by-pixel in specified channel color; 4) When painting is complete you export the image map with the information on the texture, channel and pixel data in the TMX format. 5) When Loading TMX, TextureMAX creates separate image memblocks per channel to draw texture pixels defined by the channel and pixel data within the TMX format. 6) With the texture separated into channel images you apply image filtering effects such as color/blending/brightness/possibly others? to each individually using API commands.

The above is all theory and I really don't know how TextureMax works, but, if its slightly correct, then it may be possible to use any full-powered layer-based Drawing software (Photoshop, Paint.net, GIMP) to output a `Channel` Image Map (CHIMP). The CHIMP would consist of 2 or more solid color areas to represent channels. The CHIMP Importer, would load both the texture and channel image map, than create separate image memblocks based pixel colors in the channel image map and draw the texture pixels based on corresponding pixels in the channel imagemap.



Left: Texture. Right: Channel Image Map. The Channel Image Map was drawn with GIMP using 2 layers: 1)image map (top layer), 2)texture backdrop (bottom layer). By simply adjusting the opacity on layer 1, I was able to use the toolbox to draw several different colored channels within a few minutes. When complete, hide the texture backdrop, set layer 1 opacity to 100%, and save the image map layer in desired DB compatible image format.

TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 11th Dec 2009 19:34 Edited at: 11th Dec 2009 19:45


S3GE is coming together very well. It has scripting, physics, sound system, WII controls and much more. Lots of folks have signed up but, only a few who provided me a Sourceforge username for addition to SVN. Without it you can cannot download/upload the source. It will be a great deal easier to use the engine later, if you keep up with how its being built now.

HTTP Communications

Looking for Contributors to assist in developing HTTP communications with DarkNET. The goal is too develop a Server and Client that will communicate using the HTTP protocol. I elected this protocol based on simplicity, popularity, and my own experience with it.

The HTTP Request/Response Strategy

The Strategy is to transmit and receive files to/from a HTTP Server and integrate this functionality into the main.cpp. In anticipation of operating as Network Host/Client and Dedicated Server Modes to modes of operation will be developed: Server/Client. In Client mode, the engine will request files from a either web HTTP Host Server or S3GE Server. In Server mode, the Engine will act as a HTTP Server sending file request via TCP. The initial test file will contain XML for generating a cube and DarkLUA Script for rotating it.

Desired Execution Flow:

Client Mode
1. Launch S3GE.exe
2. Select Client Mode
3. Select Server Address
3. S3GE connects to hpquest.com grabs the cube.xml file
4. Once the file is recieved, a cube should appear on the screen and rotate until the exe is terminated

Server Mode
1. Launch S3GE.exe
2. Select Server Mode
3. Client request cube.xml which server will respond by sending file cube to clients

Achieving this task will accomplish the following:
1. Utilize Script, XML, Network Plugins
2. Help identify means of using application layer protocols
3. Help identify means for working with large file Tx/Rx
4. Help identify game realtime server/client protocol and messaging

Once this goal is achieved, the engine will possess file transfer capability that can be immediately put to use loading data and media. Next on the agenda will be developing real-time Game Server/Client protocol messaging via UDP.

Ditto Text Processor Unit

I've been working diligently on the Ditto Text Processing Unit (DittoTPU) for the past week. Progress has been very very good. You may wonder what's the big deal with DittoTPU? DITTOTPU WILL SAVE MASSIVE AMOUNTS OF HOURS IN CODING!!!

I originally designed it to automate code generation for LUA Binding Functions (a core function accessible from script) from a list of Function Prototypes and Code Templates, but desired something more robust and flexible to handle future needs and other projects. I anticipate the need to access several functions from script, which will result in hundreds of Binding Functions. DittoTPU will automate this process.

LUA Binding Function for DarkLUA:


DittoTPU is the predecessor to several code wizards I've written. Inspired by PHP, DittoTPU features a simplified Markup `Scripting` Language that is embedded into any ASCII-based documents and used to control output of document generation based on data list/tables. Although, code generation is my intent, it can be used generate any ASCII-based documents. So that's the latest info on DittoTPU and I expect to produce a usable App within a week or two.

DarkLUA Architecture

How about more details on DarkLUA. If you've read my post (and I hope some of you do), you would know how it important it was for me to get Scripting into the S3GE immediately. My priority was to provide programmable functionality at the lowest level of engine operation for formatted data, macros, embedded scripting, and add-ons.

I wrote a LUA Wrapper for DOSP, DarkLUA. DarkLUA Scripting System is designed with the intention of building Applications and AI in a hierarchical and modular fashion using self contained blocks of script.

The DarkLUA Application Hierarchy: Batch -> Task/Job -> Service -> Applet -> Application

1. Batch, A text file or string containing a series of Script Language commands. It can be embedded in between other text such as a markup Language.

1b. Macro, A Name Key associated to a Batch that can be embedded in other scripts.

2. Task, A dependent Batch procedure attached and controlled externally by another object.
2b. Job, is a independent Task procedure controlled internally. It uses FSM to manage its own state.

3. Service, A group of Tasks that work together to perform specific functions within a Application without user input. Each Task or Job can effect the state of each other.

4. Applet, A group of Services that work together within a Application that may or may not require user input. A CLI or GUI is usually applied to frontend for use by a user.

5. Application, A series of Applets integrated together.

Conceptual Systems

S3GE is being designed with consideration for supporting many game genres and achieving it at a commercial level. Some folks are probably wondering how this is going to be pulled off. Well, the idea is to 1) Examine as many genres as possible and identify common systems; 2) Consolidate and Merge Systems that share similar features. Some of these systems will be non-traditional or experimental.

An example of such a system would be Modular Entity Construction Sets (MECS). This 3D Entity System was originally conceived with the intention of creating various customizable static/animated 3D entities for a RPG by inter-connecting different part combos. What I soon realized that the system could also be used to create `whole` pre-fab entities. I later, expanded on the concept to be adopted for a `Parts` Model Pack System.

MECS will support any game that require Customization features whether it be a RPG, Custom Car Racer, etc. This capability will also exist for games that normally don't require it, which in itself may offer a new twist. MECS will also support games that don't require any customization - use it to create variations in Scenery, Props, Character Entities. There is no out-of-the-box solution like MECS. So it will require research and development. I'm strongly advocating for the development of MECS for S3GE.

Til next time, Happy Holidays.

Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 12th Dec 2009 01:49
Good stuff Techy, I must admit I only understand about half of what you say although I'm in no doubt you know what you are talking about lol. I will read over it a few times and google a few things to try to catch up.

I have not done anything for a while but I am going to tidy the physics up a bit soon and maybe add more features.

I have been working on a FPS(TPS) player class, I know we need a more general player class but I'm not confident I would know where to start, maybe doing this for myself I may be able to expand it to be more general for DOSP.

Something I'm not sure about, I know we have tons of functions available via all the different plug-ins but is the engine going to use another(yet to be written) set of functions that integrate everything into a more user friendly(or smaller) set of functions?

Included simplified class diagram of the player class, sorry it wont mean much to anyone, I have lots of diagrams like this to keep everything clear in my mind.

Anyway, happy coding everyone and merry christmas.

Attachments

Login to view attachments
marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 12th Dec 2009 05:57
Quote: "I've been working diligently on the Ditto Text Processing Unit (DittoTPU) for the past week. "


I made something like that too. I realized it will take so long to make a function that registers all the DarkGDK functions so i made an application that automatically converts header files into cpp codes that have lua_functions of the functions.

Wow.You have so much working now.

@matty halewood

PhysX is better and more popular than Newton.

When a person has nothing but a dream, can he dare to dream.
Willie Mundermuffin
17
Years of Service
User Offline
Joined: 5th Jan 2006
Location:
Posted: 12th Dec 2009 07:41
Techlord, you REALLY should read an classic book on program construction. It would help you out tremendously. It's called "Code Complete (2nd Edition)".
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 12th Dec 2009 11:30 Edited at: 12th Dec 2009 12:27
Quote: "Good stuff Techy, I must admit I only understand about half of what you say although I'm in no doubt you know what you are talking about lol."
Thanks Matty. I get a little wordy sometimes. What parts do I need to reword?

Hi Willie Mundermuffin thanks for your recommendation. Reading Code Complete, Second Edition Chapter 5 pdf. Good Stuff.

marlou I've been throwing subliminal solicitations at you to join DOSP every since you announced the Quantum Horizon Game Engine - hehe. S3GE has progress extremely fast due to contributions from others in the community. However, I would understand if you want to continue that long long road of game development solo.

Quantum Neural Network Algorithms sound cool. But, I really dont understand how or where you would apply them in a game. Finite State Machine solves most problems. Would you mind sharing your insight on QNN for games?

Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 12th Dec 2009 12:12
Quote: "Thanks Matty. I get a little wordy sometimes. What parts do I need to reword?"


Lol, you don't need to re-word anything, I only understand so much of what you say because there are alot of aspects of game-dev that I have no experience with, networking, scripting etc but I am learning lots from this project.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 12th Dec 2009 12:44
Quote: "I only understand so much of what you say because there are alot of aspects of game-dev that I have no experience with, networking, scripting etc but I am learning lots from this project. "
I love to talk about this kind of stuff. So its no problem.

Syncaidius
17
Years of Service
User Offline
Joined: 22nd Mar 2005
Location: United Kingdom
Posted: 12th Dec 2009 17:18
Quote: "Scripting Plugin: DarkLUA"


Where can I find this DarkLUA plugin?

TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 12th Dec 2009 17:46 Edited at: 12th Dec 2009 17:47
DarkLUA is part of the DOSP SVN distribution. Become a Contributor. BTW, WORLD V1.00 looks really good.

haliop
User Banned
Posted: 13th Dec 2009 04:25
Ohh my God...
im just reading your Posts
and if you noticed i have launched my own project today which is called Started.
and we have almost the same initials for it


mine is SGE ---<><>!< >@#<$245 3845y 3p48 u
wtf///
which stands for Simple Game Engine...
well..
i just want to say , that i didnot paid any attention to these posts about Super 3D Game Engine, and its just a cuinsedence about the name thing..
cause im sure our ideas are way of each other.

and also i see this is an open project , so pherhaps on all the help i got from this forum , i could contribute some knowledge or art.. (sometimes "resting" and doing like other 2D paintings and 3D meshes for somethign else other then own project is pretty fun and relaxing )

well , i would be happy to join up where i can .
marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 13th Dec 2009 06:41
Quote: "Would you mind sharing your insight on QNN for games?"


It lets AI learn and change behaviors during runtime because it uses neural networks. Quantum NN just have a different way of computing compared to neural networks.

ADVANTAGES
AI can learn new behavior during play. AI can also change its behavior based on its learning. AI can classify situations and act based on learning.

DISADVANTAGES
It requires lots of computations compared to FSM. It can slow games if you have too many AI using QNN.

I think its possible to imitate learning in FSM. Hebbian Learning in NN doesnt require that many computations.

In short, I just like the fancy in having QNN AI. Im assuming there will be better CPU's in the future that negate the disadvantages of QNN.

When a person has nothing but a dream, can he dare to dream.
haliop
User Banned
Posted: 13th Dec 2009 07:21
or to just think diffrently about how the QNN will run !!
think about this for example:

Prioretizing Ai's Actions.
what does a single Ai is doing right now?
if its just idle.. then nothing no QNN is needed
if its running stright towards something cause other Ai's sent
a request for backup(example) , no QNN is needed.
but if it has done all the simple like Idle , Run , Walk ..
if it got to the XYZ position where it should Fire?
then you prioretize it +1.

now lets say you have 100 Ai's in the same Scene, you take 10
randomly selected which are prioretized with a +1 or more
and turn the QNN on them, once it learned something, it shares
it with other Ai's.
then you Deselect this Ai and randomly select another and same
thing with all other 10 Randomly Ais selected.

this way you won't get too much Cpu OverLoad ..
and still see all the Ai's Learning
and when you move to the next level.. or the next time you open
the program , then you can actually see the progress.

the Real Catch !!!

if QNN is enabled.. and the Ai learned a few new things.
how will the Pc know if this is a good move or a bad move?

*** Bad Move example : Ai has just learned how to move twich right then jump then roll over yada yada yada bla bla bla...
but each time an Ai done this , the Player hits it with an ease
so its a bad move

so the easy way is to do a:
NEWMOVE // New Move function / class (not much of a programmer)
TimerStart // starting the Evaluation since the Move has begun.
Ai_HealthPoint // 100 (give it full health)
Ai_AchiveGoal // did it? and in what time
Ai_NewMoveBetter // will check if the new move is better or worse
then other moves in the same "Move Family"

so actually during the Ai QNN learning stage , it should and must
check the Move , like to Simulate Good vs Bad behaivor

the moves begin the TimerStart starts.. checking Ai_AchiveGoal
checking with other moves , giving the new move a Score , prioretizing it , and make it run a few times.

the problem i see here , is that while playing a game.. you can suddenly see the Ai do a bunny jump that will get it to lose life , to die .. maybe to interfere with other Ais forcing them to change their Actions \ behaivor pattern.. then messing the entire expriance of the game.

so it must be restricted , must have rules , but eventually
QNN can do the trick , if you do it right.

Login to post a reply

Server time is: 2023-02-06 18:25:39
Your offset time is: 2023-02-06 18:25:39