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
marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 13th Dec 2009 07:39 Edited at: 13th Dec 2009 07:42
You're right..

Theres a big problem when an AI sees that every move leads to death. The AI will learn to run away making the game a very terrible experience since all AIs will run away.

I didnt realize that until now. XD

Suddenly, running away = most used AI move and behavior. LOLOL

When a person has nothing but a dream, can he dare to dream.
haliop
User Banned
Posted: 13th Dec 2009 07:48 Edited at: 13th Dec 2009 08:08
well no... they will learn eventually that if X,Y,Z spot according to game entities or player = death, so they will learn to move from there , or to get near that spot and then making a new move
but for a shirt period of time , they all die
lol......hahahahaha

edit:
another thought

if its a war game where ai dies..
you can create an algo based on the QNN , for Survival
this way Ai's will learn while trying to survive the longest
so actually u'll need TimerStart to evaluate
while AchivingGoals and to check how long the Ai Survived..
then prioretizing the most time Survived as a higer ranked then other.. but then you get to a point where they all just want to survive.. damn.. this is difficult..

funny stuff: making the AchiveGoal as the highest Priority will make the Ai Suicide on Goals.. while not caring about anything else
this actually could be awesome , if the Goal is to Save ally Ai , then if you throw a grande on them , you will One jumping on the grande saving everyone else.. or the funny stuff!!!!!!!
!!!!!!hahahahahaha
you will see one jumping on the grande and everyone else on top of him cause they want to jump on the grande also...
hahahahahahahahahaha
i can imagine that.. soooo funnnyyyy hahaha

ok back for survival..
then QNN needs to be filter with priority in Real Time
meaning , the ai needs to survive and also to achive goals and also to make it as fast as it can ,
so according to the current Stage of the Game, Player, other Ai's , Ai's health , distance XYZ from goal , or -Timer if its a bomb or something.. it needs to "find" the best path to do all of these at once and still survive, but if you shot it and it dies.. the whole move is prioretized -1 from what it was earlier, it may still be a high ranked , but -1 if dead ...
hmm this is really hard.. and if you make it too strong or too "Smart" then the difficulty will be really hard..

so maybe , there should be in the NEWMOVE class ,
Ai_CloseToGoal which will represent how close to ai got to the goal when died, then if it tries it again , and it didnt died
it will learn a new move or continue with what it learned already
and keep moving..
but if we are talking about a Neuro System , then how about
giving the Ai a simple Personality like:
1. Calm / 2. Coward / 3. Easy-going / 4. Loveable (just kidding hehehhe)

again.
1. Calm / 2. Coward / 3. Brave / 4. Hero / 5. Tail (which just follow other moves by other Ai's meaning, dosent have its own "mind
")

then you give them an IQ level
1. Smart / 2 . Stupid / 3. Between

and you combine
1. Calm and Smart / 2. Brave and Stupid / 3. Coward and Between
4. Hero and Stupid etc..

so some move will apply on them and some not.. like the coward wont do the Heroic stuff , the coward will run away while the Hero will jump on the Grande ..
and if its an Hero and Stupid , it will try to pick up the Grande and throw it , but it throw it in the wrong direction and kill some of its Ally Ais..

this is too funny to be true.. lol

well on the bright side , it will give players and programmers alike a whole new expriance of Ai's Behaivors.
marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 13th Dec 2009 07:54
You're right. I can also add positioning as a behvaior and they learn to choose good positions..

But wait, suddenly they all hide behide a barrel! =D

Now the FPS game becomes a "hide and seek" game bcoz all AIs tend to hide like crazy. hahahaha =)

When a person has nothing but a dream, can he dare to dream.
haliop
User Banned
Posted: 13th Dec 2009 08:09
ive edited read my last Pos , read.
tvzen
13
Years of Service
User Offline
Joined: 3rd Dec 2009
Location:
Posted: 13th Dec 2009 23:26
i would love to make a RTS,i love RTS,but im just learning GDK...
marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 14th Dec 2009 06:49
BTW, I forgot to say. Im joining SGE. Will be adding my AI algrithms once im finished. But i wont be starting them until i finished some other components in my game engine.

@haliop
I dont think I can add personality types. Its more like stimulus-response mechanism. Based on stimulus or conditions, the AI will have a trained response based on learnings. But anyway, Ill try to mix some personality types around the algorithm..

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 15th Dec 2009 09:38
Quote: "BTW, I forgot to say. Im joining SGE. Will be adding my AI algrithms once im finished. But i wont be starting them until i finished some other components in my game engine. "
Hi Marlow is the SGE (Simple Game Engine) or S3GE (Super 3D Game Engine) - LOL.

@tvzen, S3GE is being built with RTS Support. A simple Input/Output system will support RTS Elements such as Building, Crafting, Mining, Farming, and Breeding.

Farming is the input of a 'energy source' into a object, to promote growth and replication of an object in a specified or unspecified amount of quantity & time. Examples: rising animals, growing trees and crystals.

Water >> Seeds => Tree => Fruit => Seeds
Mana >> Cystals => Cystal Tree => Mana
Seed >> Chick => Chicken => Eggs => Chicks
Haybail >> Calf => Cow
Chicken >> Baby Dragon => Adult Dragon
Cow >> Adult Dragon => Fire Breathing Dragon
Mana >> Dragon Egg => Baby Dragon


Mining is a subset of Farming that requires input of energy source and time to `gather\process` raw material that grows or mutliplies naturally without manual input.

Grass --> HayBail
Ore --> Metal


Breeding is the replication of a object by mating.

Bull (Male) & Cow (Female) => Calfs
Dragon (Male) & Dragon (Female) => Dragon Egg


Byproducts of Farming/Mining can be used as raw material for crafting.

Dragon Saliva --> Fuel
Cow Hide --> Leather
Tree --> Wood


Crafting is input/combination of one or more raw material to output a item in a certain timeframe. Examples: Spells, Weapons, etc.

There are two types of Crafting: Specified and Unspecified. Specified Crafting requires specific amounts of raw materals to output a specific item. Unspecified Crafting uses different combinations of raw materials to output different types of items in the same category.

Metal (3) + Leather (1) --> Broad Sword
Dragon Saliva (1) + Fire Scripture (1) --> Fireball Spell


Building is the input of crafted items and matured farmed animals/trees objects and to output more complex architectural structures and machines that can store or produce mass quantities of energy and products.

These RTS elements will gameplay mechanics of resource gathering, base building, army building, evolution and expansion. It will also support economics of the game world through the selling, buying, and trading of goods and animals.

haliop
User Banned
Posted: 15th Dec 2009 11:27
TechLord that sounds awesome!!!!

Water >> Seeds => Tree => Fruit => Seeds
!!! awesome thinking man.

but , will a player will be able to notice the Evo proccess?
or will it be static?

meaning ,
lets say we are now playing a RealTimeStrategy , where players
needs Food for the troops.

then , will the Engine "Show" the evo process in game or will it be like a static timer
if Timer passed since farm was built
then show trees
if timerpassed....

then show fruits
if timerpassed
then show seeds on ground

or will it take the actuall advantage of the Actuall Tree Growing
??

meaning:
i have a furtial land ,
i water it , planting some seeds
then slow or fast i see the plant grow and grow and grow
but not only i see it grow , each plant has its own unique features like long branches , small , some goes here and some goes there?

you know what i mean?
it depends on the game i guess
but if lets for say were talking about Stronghold 2 (if you know)
you build an Apple Orchard , then it starts as normal trees with no leafs, then some leafs , then someapples

if S3GE , will support an evolution of the grow
then you might get some extra Bonus from each tree
for example:
1 , 2 , 3 , 4 are desert land - not so good , needs a lot of water
5 , 6 , 7 , 8 are grassy land - very good , cause there is "Rain" in that area or it is watered from an underground water source
9 , 10 , 11 , 12 are swamps - alot of water but not so good for planting

so now :
1 - 4 have some trees in it , like palms on oasis and some bushes , some cactus , all can give something.
like roots for potions and remedys , the palms at the oasis can give the wood for a unique item , and the cactus can give you(player) water or even something to eat if youre a cactus eating creature.

5 - 8
9 - 12 both same idea

but here is the idea of real evolution or dynamic "Farming"

in 1 - 4 , 1 - there is an ordinary oasis , some water some trees and some fruits
but
in 2 - there is also an oasis , but only that on this oasis more players are crowded , the water is low , fruits are almost done , and the trees are all messed up.
a. becouse it is too crowded and most players eat from there
the bush or tree which once grew nicely , now dont grow and
are dry, making the left fruits less tasty making the
FruitTaste var - 30;
so in the game , when the player eat the fruit
he gets some hp back right? , but now its -30 precent or
normal number then the original fruit hp regeneration.
but that , wasnt made by the Static code , that was made
becouse too many players ate and somehow destroyed that area.
b. Water low , becouse the water is low , if a player wants to
drink , he needs to consider , wait maybe becouse the water
is low i shouldnot drink from here , becouse i know this place
is messed up , everyone come here , so maybe the water isnt
that good, and guess what? he is right.
becouse of the Dynamic Evolution of the "Game" , the water
becomes less healty.

i hope this clears my thought , but if not
let me try to explain it diffrently:

every move the player makes , will change the Dynamic Evolution of the Scenery.. Land.. or whatever.. making an MMORPG for example always change and not just partying up with 10000 players destroying a cute hugh dragon..

so the Base Seeds that are on the ground , will sometimes be good and sometimes bad , and if you eat from a fruit from a bad seed , you actually lose hp / mp , and after a while playing and not understand why the fruit you are before was good and now its not , you look , you actually look on the ground , and you see "Garbage" maid by you (Player) or other Players incase of a Multiplayer Session or a MMORPG.

this will make the game sooo dynamic that everytime you enter it , something will be diffrent.
ofcourse in cases of MMORPG , MASS DATA is required to go from here to there .. but another option , is once AREA 1 evolved into +x +y -z +6y1 etc.. you can save it on the client and then when you join again you check the Client and Server's Area 1 , and change it accordenly also considering Zones , to devide the Sent and Recive Data ..
and pherhaps , when you load the level , it will take a bit more time not becouse it takes time to load Graphics .. but to Update from server..

wow .. i wrote alot
i hope someone did understand it
if not..
im sorry for your time
was fun.
nadav.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 15th Dec 2009 13:01
Quote: " will the Engine "Show" the evo process in game or will it be like a static timer."

The Engine will have basic RTS game mechanisms that could support a `Dynamic Evolution` System. However, the amount of detail, animations, media etc to show it will be at the discretion of the Game Developer.

marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 15th Dec 2009 13:39
Quote: "Hi Marlow is the SGE (Simple Game Engine) or S3GE (Super 3D Game Engine) - LOL."


Aw..I meant S3GE..

I want to make diagrams too..Hehe..What are you using to make diagrams?

Evolution that sounds awesome..Crafting items..

By the way, How would S3GE you handle game quests or events? I want to know the details..

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 15th Dec 2009 14:26
Quote: "I want to make diagrams too..Hehe..What are you using to make diagrams?"
Powerpoint & OpenOffice Impress.

Quote: "How would S3GE you handle game quests or events? I want to know the details.."
There are many ways that Events/Quest could be managed. I would expect interactive events to use a system of Triggers. Triggers are 3D Collision Game Objects that execute script(s) upon collision with players and other interactive game entities. The scripts they execute can modify the game object's variables. Triggers can be static or attached to moving objects, and exist. A comprehensive Dialog System may also be necessary.

I scalable Quest Building System based on Triggers: Epic --> Story[s] --> Quest[s] --> Task[s] --> Trigger[s].

An Epic is a series of Stories that intertwine directly or indirectly. A Story is a series of interconnecting Quests. A Quest is a series of interconnecting Tasks. Task is two or more Timed or Untimed Triggers. A Trigger is a one more conditional checks that executes a function. Thus, I have settled on the Trigger being the smallest mechanism of a Quest.

In my Game Engine, Triggers are 3D Collision Game Objects that execute script(s) upon collision with players and other interactive game entities. Triggers can be placed statically in the Game World or attached to moving game entities. This Collision is the basis of Event-Driven 3D Interactivity in the Engine and modelled after my GUI Events System (IDLE, ENTER, HOVER, HOLD, EXIT, OUT) .

In addition to Collision, a Trigger can execute script(s) based on the result of a GTRCompare or it's Timer Timeout. So, how do we used triggers to create a task? Lets start with a simple task.

Task #1: Acquire Key From Dragon's Cave.

First, we place a Trigger at Location A, Elf's Town. This Trigger will run a script that will generate a Dialog Box to offer player the choice to accept this task. If the player accepts, the a Task Item 'AcquireDragonKey' to the Player's GTR. Otherwise the offer is cancelled.

Next, we place a Trigger at Location B, The Dragon's Cave. This Trigger will run a script to check the Player's GTR for the 'AcquireDragonKey'. If present, it changes the Player's GTR Item 'AcquireDragonKey' value to 1. If not present, it generates Dialog Alert or ignores the player.

Obviously, this is too easy. What's a Dragon Cave without a Dragon? Answer: Not very scary. So we place a Dragon in front of the Cave. The Dragon is equipped with Bezerker AI Behavior and Incendiary Weapons to attack incoming foes. We now have have a simple Task with purpose.



So in a nutshell, one could create an adventurous task by creating triggers separated by some distance and throw some monster spawners or traps between them. Trigger[s] --> Task[s] --> Quest[s] --> Story[s] --> Epic. PRESTO! We have a Flexible Quest Building System.

TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 15th Dec 2009 14:32
I've also devised an approach to Quest Building in a modular fashion based on interconnecting a series FPS Tournament Maps. The ultimate idea behind this is to allow Players to Quickly build Quest from pre constructed maps like templates.

Each Map is assigned a Game Mode that defines a FPS style of game play in which a Individual or Teams complete an Goal. Upon completion of the Goal, a Reward|Penalty may be a awarded to individual|team Winners/Losers. Winner Individual|Teams are allowed to advance to the next map in the quest.

Note: that in a Team based Goal-based Game Play Mode it is required that all surviving team members arrive to Point B in order to complete and advance to next map.

Tournament Game Modes:
CTF: Carry Object(s) From Point A to Point B, Item can be Dropped (Timed|Untimed) (Reward|Penalty)
Rescue: Protect Object(s) From Destruction as it travels from Point A to Point B, Object movement is automated and the object can be Destroyed|Recovered (Timed|Untimed)(Reward|Penalty)
Race: (First|Last) (Individual|Team) to Travel Point B From Point A (Timed) (Reward|Penalty)
DeathMatch|Arena: (First|Last) (Individual|Team) to (Collect|Destroy) Object x n (Timed|Untimed) (Reward|Penalty)
Stealth: (First|Last) (Individual|Team) to from/to Point B From Point A WITHOUT Triggering Event (Timed/Untimed) (Reward|Penalty)
Hunt: (First|Last) (Individual|Team) to Trigger Event (Timed|Untimed) (Reward|Penalty)
Scavenger: CTF for Point(Timed|Untimed) (Reward|Penalty)
Pub: A Pub is a Non Combative Map in which players can gather to chat, buy stuff, join parties, and select/continue Quest, Enter Tournaments, and Play Mini-games, go home. Each Quest comes with one Pub by default, however, Quest Builders can add more if desired.

Although each Map can have completely different default content and purpose, Quest Builders can provide continuity with a story via dialog and comparable content between the maps. Each Game Mode can be modified allowing the Quest Builder to set Point Locations, Objects, Timer, Reward|Penality. Maps can also be modified allowing the Quest Builder to add/edit Spawners, Triggers, Platforms, Doors, Push/Pull Props, Warps and Dialog Menus.

Players can create Maps for use in Quest. Like FPS Creator Editor, Maps are constructed from Prefabricated Rooms.

marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 16th Dec 2009 03:29
Triggering event scripts and so so..

Okay thanks...

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 16th Dec 2009 09:47
Quote: "Triggering event scripts and so so.."
That is one technique that is simple and applicable to more than one genre. I'm open to any other ideas. Its a starting point for building more complex Events and Quest Systems.

marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 16th Dec 2009 11:44
Thats the way id handle events too...

Though im a bit worried on using Lua and Ruby for event scripting bcoz they run the codes continuously. Im looking for something that run chunks or part by part scripts.

Ive seen script engines that dont block game execution. They run scripts while they are rendering.That is why im looking into making my own scripting engine that can be execute while rendering.

For now, I cant seem to make Ruby or Lua scripts that asks for player input that doesnt hault rendering.

Any ideas?

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 16th Dec 2009 14:19
Quote: "For now, I cant seem to make Ruby or Lua scripts that asks for player input that doesnt hault rendering."

Any reason for using two scripting systems?

As far as solving your problem, its all about how you implement the update() method for I/O, objects, etc within the primary update loop. Considrations for loading and looping operations have to be made.

I believe all of DGDK input functions poll inputs without blocking or hanging during sync. I'm curious as to what your script is running.

marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 17th Dec 2009 09:58 Edited at: 17th Dec 2009 10:00
Quote: "Any reason for using two scripting systems?"


Ruby is an object oriented programming language. I can make classes and objects in Ruby making most game classes scriptable and changeable which would be good if i want to make an adaptive and scriptable game engine.

Lua is procedural and is lighweight and faster than Ruby. Id use it for item scripts.

Scripted AI can better be handled with Ruby's OOP.
I have two scripting engines right now because i want to take both their advantages together.

Yes i can use non-blocking DarkGDK input functions.Thank you for that.


Now Im looking at making a third script engine upon seeing some games script engine. Their scripts are nonblocking.

An example of what im trying to achieve..
NPC script code


Quote: "
Considrations for loading and looping operations have to be made."


Item scripts like the following can easily be achieved
Item Script LifeStealing Weapon


Im looking into making my own script parser or script engine to be able to make NPC scripts.

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 17th Dec 2009 11:26 Edited at: 17th Dec 2009 13:37
Quote: "Scripted AI can better be handled with Ruby's OOP."
Can you elaborate on how AI is better handled? Is OOP better suited for QNN? I'm curious about this because of how I've designed the DarkLUA Architecture. Scripts themselves are procedural but the DarkLUA make use of OOP on the backend. 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.

Quote: "I'm looking into making my own script parser or script engine to be able to make NPC scripts."

Wow, 3 Scripting Engines! I'm writing a script parser for the Ditto Text Processing Unit. I've written several Script Engines that are based on the following code (DBP). Hopefully, you find it useful in writing your own Scripting Engine, Compiler, Virtual Machine, Interpreter, or Parser.



TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 17th Dec 2009 12:55 Edited at: 17th Dec 2009 13:39
Quote: "Yes i can use non-blocking DarkGDK input functions.Thank you for that."
No Prob. Just FYI. I borrowed that term `non-blocking` from winsock in which the term "blocking" is invoking a function which does not return until the associated operation is completed. I do not know the official term for this behavior.

I'm very interested the workings of a NPC `Dialog` System although I've been too busy working on other aspect of game creation. I've briefly pondered over the integration of Search Engines, Forums, Polls, Surveys, Adlibs, MUDs, Action Games (Text Version), ChatterBots, Instant Messaging, and other forms of Text-based I/O dialog. I have also pondered using voice synthesis and speech recognition too.

I often surf the net for info on how these systems are implemented. I found a decent article on Dialogue Systems in gamasutra. Perhaps a node based management system such as Binary Decision Tree (source) would support the NPC script you posted above more efficiently. I would be curious as to how QNN could be applied to produce NPCs that respond with more variety and intelligence.

marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 17th Dec 2009 14:45
I think i remember seeing the term blocking and non-blocking functions with peekmessage and getmessage in windows programming.
I also remember the term used on printf function.

Thanks for the link. Its very useful.Thanks for the code too.

Quote: "
Can you elaborate on how AI is better handled? Is OOP better suited for QNN?"


Its because you can edit the AI script in OOP style.

As an example, the AI ruby code


#<-used for commenting in Ruby language

The point is when AI script is in OOP style. It is easily editable and readable. Though I do think it is also possible in Lua to code AI scripts perfectly but its a bit hard to edit scripts in lua. QNN can easily be coded and read in OOP language. Maybe its just my preference. =)

Quote: "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."


Maybe i can use a task-Binary Decision Trees in NPC scripting. Will try to code em later.

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 18th Dec 2009 00:01 Edited at: 18th Dec 2009 06:59
Hi Marlou,

I'm not certain if you had the opportunity to look at the present DarkLUA code but here is a small excerpt of code from S3GE

How it works is a script is loaded into a task via the S3GE::scripttaskcreate(). Each task is a self-contained block of script that independently executed. The S3GE::scriptupdate() is called in the primary game loop. It iterates thru each executing the batch. Tasks have methods to exec (on the fly), suspend/pause, and kill the task. I will be including methods to add/remove the task from the update iteration, and modify position (priority) in the update.

This design was inspired by how I implemented Scripting in MAUI for DBPro. MAUI was designed to operate like a Web Browser requesting *maui pages with XML Markup for formatting Gizmos & LUA for client side scripting. MAUI Gizmos are treated like little event-driven Bots and packaged scripts for specific tasks: Behaviors, Transitions, Styles, and Themes based on event state.

Here an example of *.maui file.


The key phrase here is packaged scripts for specific tasks. To strive for greatest performance, I'm going to try to avoid creating a soft engine.

If your still interested in making your own script parser or script engine for NPC scripts I may be of some assistance. I developing DittoTPU I'm writing a script engine. Its sorta funny because I'm writing it input function prototypes and output a DarkLUA binding function.

DittoTPU Example
Input


Output

The psuedo ASM instructions will be used to create stack machine to process script. DittoTPU uses a special Markup. A simple Markup similar to HTML may be useful for formatting the text within the Dialog. I will not even mentioned client side scripting, hehe.

TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 18th Dec 2009 16:49
@mattyhalewood

I'm extremely pleased that you elected to select Physx as the physics solution for S3GE. After reviewing its feature list on NVidia.com, I agree that it was a very good choice for the Super 3D Game Engine. The option to use a Physics GPU is a big plus too.

IMO it would be beneficial for S3GE to use Physx to power all Collisions 3D (and 2D if possible?) with or without physics simulation in S3GE. This would include AI Pathfinding/Collision Avoidance, 3D GUI Gizmos, Event Triggers, Character Sliding Collsion, etc. This will allow S3GE to optionally take advantage of physics simulation & GPU Acceleration in these area.

Is this possible? What is your opinion on this?

Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 18th Dec 2009 19:42
I'm pretty sure all those things are possible with PhysX apart from maybe the 2D collisions.

Update:
We now have physics and collision for primitive objects, we have a triangle mesh collision(static) and a simple character controller. There is alot more to implement and some of it wont take long as its just variations on some of the functions I have already created.
I have a couple of issues that need looking at before I do anything new though.
marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 19th Dec 2009 06:35
DittoTPU looks cool..

I see your using stacks to store and pop variables.
What variable type are your stacks?

Im thinking of using a stack with integers. But what if im going to push a character array into the stack? How do i implement pushing character arrays into the stack instead of integers?

Im thinking of using union or linked list nodes of void pointers but havent tried.

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 19th Dec 2009 07:29 Edited at: 19th Dec 2009 07:31
Quote: "What variable type are your stacks?"
strings



marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 19th Dec 2009 07:42
ah i get it now.
you convert strings into numbers in the multiplication and addition instructions and process them again as strings into the stack..nice..

What does eax and ecx mean?

I dont see a storage for the variables a,b and c.How did you store and retrieve them?

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 19th Dec 2009 07:55
Quote: "What does eax and ecx mean?"
are register variables that hold information push/pop on stack. Do you have Instant Messenger?

marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 19th Dec 2009 08:14 Edited at: 20th Dec 2009 06:29
thanks..

msn messenger:
removed..

When a person has nothing but a dream, can he dare to dream.
heyufool1
13
Years of Service
User Offline
Joined: 14th Feb 2009
Location: My quiet place
Posted: 20th Dec 2009 20:37
Hi, yea you can remove me from the core team list for I moved on to Unity.

The penguin faces south
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 20th Dec 2009 20:49 Edited at: 20th Dec 2009 20:51
Quote: "Hi, yea you can remove me from the core team list for I moved on to Unity."
Thanks for update heyufool1. Wish you the best in your next project.

TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 22nd Dec 2009 22:40 Edited at: 22nd Dec 2009 22:51


I've started outlining the classes for MAUI 2.0, the predecessor to Multi-App User Interface for DBPro - A 3D Sprite-based Graphical User Interface designed with Game Creation in mind.

Unlike the typical Windows inspired GUIs, MAUI is designed like micro game engine in which each Gizmo(a.k.a Gadgets in other GUIs) is a game entity with the following features:

* Event-Driven Finite State Machine Model
* Scriptable Styles, Themes, Behaviors, Transitions (animations), and Actions
* Bitmap Fonts System
* SoundFX & Music
* 3D Sprite & Mesh Gizmos
* Input Handling for I/O Devices
* XML-based Import/Export Data Format

The UI Objects: Pointer, Gizmos, & Controls

MAUI has 3 primary UI Objects: Pointer, Gizmo, and Control.

* The Pointer is a Collision Object that is controlled by a User via Input Device (Keyboard, Mouse, Joystick, etc). MAUI decouples control of the Pointer directly from the mouse allowing it to be controlled other devices to include the keyboard.
* A Gizmo is a Collision Object that interacts with the Pointer executing Scripts based on this interaction. By definition, a Gizmo is a mechanical device or part whose name is unknown. In MAUI, a Gizmo has no specific mechanical operation (Behavior) until assigned and a Gizmo can be assigned any Behavior.
* A Control is I/O Device Input (Key, Button, Axis) that executes Scripts based on input interaction. Like Gizmos, Controls can be assigned any Behavior.

Both Pointer and Gizmo Collision Objects are coupled to a Display Object (2D Image/3D Sprite/Mesh). MAUI provides a separate Display Object for each Event State and switches between these Display Objects based on Transitions.

Event-Driven Finite State Machine (FSM) Model

MAUI implements a Finite State Machine model composed of a finite number of states, transitions between those states, and actions. States are determined by Events. An Event is a state change based on Pointer/Gizmo collision detection, Control Input Detection, and Event Flags. Common Pointer Events: IDLE, ENTER, HOVER, DOWN, HOLD, DRAG, EXIT, OUT. These interactions are the basis for many types of Events in MAUI. A Gizmo can execute a Script (Action) with each Event State. MAUIs design revolves around Gizmo and Control Events.

Scripted Behaviors, Styles, Themes, & Transitions

In most GUI's the mechanical operation of a Gadget (ie: Button, Slider, etc) is hard-coded. In MAUI, this functionality is scripted and referred to as Behaviors. Behaviors define the logic for handling interactions, event states for Gizmos and Controls. Games can require Gizmos with unusual Behaviors. Scripted Behaviors allows for many types of traditional and non-traditional Gizmos to be created.

Behaviors can also be scripted to use two or more Gizmos to operate as a Composite Gizmo such as a Drop-down Box. These types of Behaviors rely on MAUI's Gizmo Family Linking System in which Parent|Child|Sibling relationships are automatically established between Gizmos during creation. In the Parent-Child relationship, the Parent usually influences the Child. Gizmos that share the same Parent are Siblings. MAUI uses Family-Linking for both operational and performance purposes.

Games have very active GUIs complete with sound and animation. It was desired that MAUI support sound and animation during events and in between. Transitions define logic for effects executed in between Event Changes. They were originally intended to be used for audio/visual effects during the transition of one event to another, but, can be used other actions.

Styles define Font properties based on Gizmo Event States and Themes define Border Images and Lines based on Gizmo Event States. Both Styles and Themes can use Script for visual effect fonts and borders are drawn.



TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 25th Dec 2009 15:46 Edited at: 29th Dec 2009 08:56
Even the Pros over at EPIC Games (Unreal Engine) agree Game Developers should implement Networking from the beginning:
http://udn.epicgames.com/Three/NetworkingOverview.html#Implement Networking from the beginning!

S3GE has DarkNet and the strategy is to implement HTTP Communications first. 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

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.

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


#66

Diag Plugin DebugLog Class Added
Multi App User Interface (WIP) Class Added
dittoTPU (WIP) Updates
DarkLUA Update
Box2D Integration (WIP)

Theres something goofy going on with SVN and Rev 66 isn't automatically showing up. You will have to jump to the Rev 66 manually to see the new files.

I've had a huge burst of motivation for the past week and have been coding away in various libraries for the engine: dittoTPU, DarkLUA, and Multi-App User Interface. I rewrote DarkLUA to use pointers, eliminating the use of integer IDs and the MAUI Classes are shaping up. I will most likely be moving away integer IDs except in the case where DGDK objects are used.

I intended to port DBPro code for MAUI 1.0 but have decided to rewrite it as there is no need for DBPro workarounds. In the process of the rewrite, I'll be making improvements to the system to include support for Wii & 360 controllers and 2D Physics system (powered by Box2D).

After discussion with Matty, we both concluded that MAUI is not be suitable as a stand alone plug-in due to the numerous dependencies on other plug-ins. Thus, MAUI will be integrated into the `core engine` and the first approach in getting the various plugins to work together.

TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 1st Jan 2010 02:10 Edited at: 4th Jan 2010 16:31

#67

DarkLUA Loading Demo
Multi App User Interface (WIP) MAUI XML Loading Demo
Box2D Integration TBD
dittoTPU (WIP) Added to Solution

MAUI 2.0 is coming along rapidly. The *.maui XML Format version 2.0 will flow more logically:



I'm currently making improvements in the XML Parser and MAUI 2.0 will feature a new addition, SoundFX Schemes. In developing MAUI, I've also acquired improved techniques for managing objects. The current MAUI demo does not display sprites or meshes, yet, and that's next on the agenda.

!!!Happy New Year!!!

TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 2nd Jan 2010 07:26 Edited at: 2nd Jan 2010 07:40
I can understand the value of a screenshot. Here's one of the current state of the DOSP S3GE.



At first glance, there isn't much to look at in the way of graphics, in fact you could say I'm truly living up to my philosophy of saving the artwork for last - LOL! However, there is more than meets eye in the screenshot above. They're 4 testbeds simultaneously working together: Phsyx, Box2D (DARKBOX), LUA Script (DarkLUA), XML Loader (irrXML) for the Multi-App User Interface.

MAUI will have a dependency on practically every plugin in the engine. Collision Detection for Gizmo Events will be completely driven by 2D Physics and 3D physics engines. Thus, I'm splitting my work between DARKBOX and *.maui XML parser. Once these systems are working at a basic level, I will starting working on the networking to achieve *.maui file transfer over the net.

Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 2nd Jan 2010 14:13
Wow, Techlord you have been busy.

I am nearly ready to commit physics plug-in version 1, it has some more functionality and some error checking. I will be releasing it to the community as well, might generate some more interest in S3GE.

I am going to add it to the S3GE_API.h but I am unsure exactly how it works, I need to add it as a class with class variables etc, will it still update the S3GE_API html file properly?

Also, I have not been on messenger much as I don't have it on my laptop and thats what I have been using more lately.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 4th Jan 2010 16:55
Hi matty,

I'm seriously considering removing the S3GE_API.h as it is proving to be more troublesome to use and maintain then I predicted. I'm discovering its easier to develop using the original libs than the additional S3GE_API layer.

Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 4th Jan 2010 21:47
Another thing I was wondering about the S3GE_API.h is that if we want to change a plug-in, the commands needed in the new plug-in may not translate over to the S3GE_API commands, due to the fact that the new plug-in may work in a completely different way.

That said, it is a good idea in theory but if it is causing you trouble in practice then yeh, get rid of it, it may just mean that we need to commit to certain plug-ins at the beginning and stick with them, so making our initial decisions all the more important.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 4th Jan 2010 22:26 Edited at: 4th Jan 2010 22:50
S3GE_API is causing more work and others found it difficult to work with. It also requires additional documentation. At the moment, I see very little need to swap out a plug-in. Thus, in best the interest of the project, I concur with the removal of S3GE_API and using Lib functions directly. I will make efforts to strip it out as soon as I get the `orientate` xml tag for MAUI work out. Do you intend to make a Physx update soon?

Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 5th Jan 2010 14:21
I will be updating the physics this week, I wont add it to S3GE_API, I'll just keep it where it is now.
marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 6th Jan 2010 13:08
Hi TechLord,

Id like to contribute and commit my QH Engine into DOSP. I can make it work alongside or under S3GE. If its okay with you, Id like to be one of the main contributors or one of the core team.. Sorry for taking so much time before the idea of joining sank into me.

My codes aren't well documented like yours. Its mostly code and im a bit lazy in documenting 36000 lines of codes. Hehe. So shall i comment and document them before commiting them to DOSP?

So will we be using Doxygen?

Im already in..My log-in name is "Dreamwalker".

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 6th Jan 2010 23:24
Hi marlou,

Welcome to the Project. `dreamwalker` has been added to Sourceforge SVN distribution.

You mention 36000 lines of code. Is that Scripting Engine binding functions?

marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 7th Jan 2010 06:13
Quote: "You mention 36000 lines of code. Is that Scripting Engine binding functions?"


Yes they are mostly Lua and Ruby bindings for DarkGDK..

I still have to do some recoding in Ruby for it to handle and catch runtime errors like my Lua. I also still have to make error logging functions..

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 7th Jan 2010 07:40 Edited at: 7th Jan 2010 07:46
Quote: "Yes they are mostly Lua and Ruby bindings for DarkGDK.."


S3GE already has an implementation for LUA and we are only using bindings when required, particularly the DGDK DX Wrappers. Thus a secondary LUA implementation may cause conflict and is not desired. As the engine is open source, the implementation of LUA is to provide high-level programmable capabilities for specific task, services, soft applications, and Logic. LUA was carefully selected for its popularity in game development , simplicity and speed.

I'm all for a integrating Ruby and desire its implementation be focused toward specific high level task and game objects.

marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 7th Jan 2010 07:52
Quote: "I'm all for a implementation of Ruby."


Okay ill be implementing Ruby..

How about OpenAL? I have OpenAL support from QHGE. Its a good sound engine that supports 3d sounds and sound effects. It has 113 predefined soundeffect effects ready.

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 7th Jan 2010 08:03 Edited at: 7th Jan 2010 10:43
Quote: "Okay ill be implementing Ruby.."


I'm all for a integrating Ruby and desire its implementation be focused toward specific high level task and game objects. To clarify, its not required to duplicate the features of the core engine in script but provide access to these features from script.

Quote: "How about OpenAL? I have OpenAL support from QHGE. Its a good sound engine that supports 3d sounds and sound effects. It has 113 predefined soundeffect effects ready."


S3GE has oawgdk audio plugin and DGDK Dx Sound Wrappers. If openAL provides features those do not then I'm all for it as long as these systems dont conflict each other.

To be honest with you, You could jump in the Quantum AI development. The engine still needs pathfinding lib. What libs are needed to help you make the transition into developing the AI?

marlou
14
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 7th Jan 2010 13:17
I can't make a good demo for QNN without the other component engines done first. I still need a pathfinding library like navigation meshes and not waypoints. And some raycasting functions would help.
I'm going to start on it some time soon. Im still reading some articles about it. I haven't seen a good implementation of Neural Networks in games. Still researching thoroughly.
As for the time being, I make other components of QHGE.

Yeah i should start on it soon but i still cant figure out pathfinding. >_<

When a person has nothing but a dream, can he dare to dream.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 7th Jan 2010 13:51
Physx has raycasting functions. Matty may be able to assist with those.

Quote: "Yeah i should start on it soon but i still cant figure out pathfinding. >_<"


Surely if you can take on Quantum Neural Networks you can figure out the A* Algorithm. Even I managed to write a pathfinder a few years back with Blitz3D.

Matty H
14
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 7th Jan 2010 20:58
Yeh, PhysX has raycasting but I have not looked into it yet, that will be next if thats whats needed most.

Techlord, don't you have an A* plug-in in mind to do the pathfinding? I can't remember what its called, I think the link is on my other computer.
TechLord
20
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 7th Jan 2010 22:29
Quote: "Techlord, don't you have an A* plug-in in mind to do the pathfinding? I can't remember what its called, I think the link is on my other computer."
I was eyeballing MicroPather.

Login to post a reply

Server time is: 2023-02-06 18:47:48
Your offset time is: 2023-02-06 18:47:48