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.

Work in Progress / Marble Game

Author
Message
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 3rd Jul 2006 03:50 Edited at: 2nd Aug 2006 06:55
Latest version:
http://forum.thegamecreators.com/xt/xt_apollo_download.php?i=958014

I've posted quite a bit in the general DBPro forum, (http://forum.thegamecreators.com/?m=forum_view&t=82553&b=1) about physics I've been having trouble with, etc., but I've gotten nearly all of the issues resolved, and believe that I'm ready to move this to the WIP forum.

Anyways, it's a game where a marble, controlled by the user, can roll around the level, very similar to "marble madness," an old game which has recently been remade for the xbox 360 arcade...

I'm open to any and all input on the game, especially including bugs and glitches involving physics, because that is my main concern...

Right now, you can change speed, acceleration, and "acceleration loss", which are values I use inside the program, dealing with how fast the ball resonds to the user and such, using the keypad. They now default to:

speed - 4
acceleration - 4
acceleration loss - 32

Feel free to play with these, and when you find a setting you like, please, by all means, post it. I hope to have different ball materials in the final game (rubber, glass, etc.), and having different settings for these values for each material will make the ball feel natural, and fit its appearance.

Controls:

camera angle - WSAD
camera zoom - 1 & 2 (not keypad)
marble roll - up,down,left,right
marble jump - spacebar
reset ball to start of map - enter
pause (for debugging purposes) - shift
frame-by-frame (for debugging purposes) - control
change speed - keypad 4 and 7
change acceleration - keypad 5 and 8
change acceleration loss - keypad 6 and 9

Programming is the art that fights back.
Shark
18
Years of Service
User Offline
Joined: 7th May 2006
Location: The world
Posted: 3rd Jul 2006 03:53 Edited at: 3rd Jul 2006 04:00
When I go on the loop it mess's up.

My site: http://awesomegames.galekus.com/home/
Forum: http://awesomegames.galekus.com/forum
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 3rd Jul 2006 04:01
Sure:



http://bmad6.themostfunsite.com/screen.bmp

NeX the Fairly Fast Ferret
19
Years of Service
User Offline
Joined: 10th Apr 2005
Location: The Fifth Plane of Oblivion
Posted: 3rd Jul 2006 13:42
Whoa! Bitmap error!

<OMG></OMG>
NeX, you cant be serious - CattleRustler.
Silvester
18
Years of Service
User Offline
Joined: 7th Dec 2005
Location: Netherlands
Posted: 3rd Jul 2006 14:02
Error 99:ERROR 99


Many tales has bein told about me,and there where i came from.Most bad ones are true.The good ones are false...
UFO
18
Years of Service
User Offline
Joined: 11th Oct 2005
Location:
Posted: 3rd Jul 2006 14:39
Thats a pretty cool game, but way too hard. Either add tons of checkpoints, or make it MUCH easier.

Uncle Sam
19
Years of Service
User Offline
Joined: 23rd Jul 2005
Location: West Coast, USA
Posted: 3rd Jul 2006 21:21
Yah, the loop part is too hard, and you don't roll down hills, but otherwise, great!

Uncle Sam
Nvidia Geforce 7600 GS 256MB PCIEx, 2.66 GHZ Pentium 4 proccessor, 768MB RAM
Need particles? Click here!
NeX the Fairly Fast Ferret
19
Years of Service
User Offline
Joined: 10th Apr 2005
Location: The Fifth Plane of Oblivion
Posted: 4th Jul 2006 01:22
And, if you hit a 90 degree wall with any high speed, you'll fly miles into the air!

<OMG></OMG>
NeX, you cant be serious - CattleRustler.
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 4th Jul 2006 18:07
@Knight of Hell and Nex:
I haven't had either of these errors - when did they occur, and do you have any idea what could have caused them?

@fpsc phreak and uncle sam:
yes, i know that the loop isn't working - I'm currently debugging it... and, what do you mean, you can't roll down hills?

@nex:
yes, i know that you fly into the air, but I'm not sure whether I like it that way or whether I should change it...

@UFO:
This is just a test level, so I don't have checkpoints or anything, and I had to put in a bunch of different types of terrain objects because I wanted to make sure it worked. It will definitely be easier and more fluid gameplay when I take it from just testing physics to a full-fledged game...

NeX the Fairly Fast Ferret
19
Years of Service
User Offline
Joined: 10th Apr 2005
Location: The Fifth Plane of Oblivion
Posted: 4th Jul 2006 18:23
I was joking when I said BITMAP ERROR! I said it because the screenshot you submitted was in BMP.
Hit the steps at incredible speed and fly into the air. Also, hills don't seem to affect the ball in all situations, and I often managed to steer in midair.

<OMG></OMG>
NeX, you cant be serious - CattleRustler.
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 4th Jul 2006 19:06
You managed to steer in midair? what do you mean?

NeX the Fairly Fast Ferret
19
Years of Service
User Offline
Joined: 10th Apr 2005
Location: The Fifth Plane of Oblivion
Posted: 4th Jul 2006 19:22
I jumped at quite some velocity going left, and the right key managed to reverse my kinetic energy. Or something like that. I don't like physics. (IF I WANT TO RUN UP WALLS I WILL!)

<OMG></OMG>
NeX, you cant be serious - CattleRustler.
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 4th Jul 2006 19:40
It should have allowed you to slow your spinning, and your left velocity should have been slowed gradually by air friction, but it shouldn't have reversed direction... hmm...

Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 4th Jul 2006 20:24
Okay, update:

http://bmad6.themostfunsite.com/testlevel.zip

Found a BIG problem - I had replaced a variable 'a' with 'acceleration' and forgot to change it one place, so the spin on the ball would never decrease.

However, after changing that, I'm having to mess with certain variables to get it to behave the way i want, so if you have any suggestions (ball not responsive, too responsive, rolls too little, rolls too much, etc.) post it here and I'll try to fix it.

However, I'm still working on the think where it goes crazy in the loop, and I've added 2 culled spheres that you can go into but not out of (one at beginning of level, one at the end) to try to figure out what's going on... this does mean that I've removed the curvy bowl thing, but if you liked it, I can add it back in later.

NeX the Fairly Fast Ferret
19
Years of Service
User Offline
Joined: 10th Apr 2005
Location: The Fifth Plane of Oblivion
Posted: 4th Jul 2006 20:48 Edited at: 4th Jul 2006 20:49
Off topic here, but this used to say Virgin.NET and now it gives me the name of a millitary internet! (ARPANET)

<OMG></OMG>
NeX, you cant be serious - CattleRustler.

Attachments

Login to view attachments
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 4th Jul 2006 23:41
Umm... it's just a danasoft sig i made when i wuz bored... i don't kno why it shows u as being located there, but I can't help u... sry.

NeX the Fairly Fast Ferret
19
Years of Service
User Offline
Joined: 10th Apr 2005
Location: The Fifth Plane of Oblivion
Posted: 4th Jul 2006 23:49
And I'm not running XP. It's 98 with a load of XP dlls injected for high performace and compatibillity. It should be called X8 or 9P.

<OMG></OMG>
NeX, you cant be serious - CattleRustler.
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 4th Jul 2006 23:55
Lol... I've never heard of anybody with a computer like that...

Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 5th Jul 2006 02:01
Okay, I got a bunch of other stuff working and fixed the part where it went crazy at the top of the loop and the ball. Now, I have also added 3 variables that you can change during execution, so that you can test it out with different dynamics and decide which you like best. They are:

speed - the speed at which the ball will spin when you press the arrow keys
acceleration - the amount of traction which will allow the ball's spin to create velocity
acceleration loss - the rate at which the ball's spinning will slow

accleration and acceleration loss are both inverse, as in, the higher they are, the slower they take effect...

the controls are:

keypad 7 and 4 to change speed
keypad 8 and 5 to change acceleration
keypad 9 and 6 to change acceleration loss

the program will wait while you hold down those keys, to prevent the values from shooting all over the place, so if you want to change them a lot you'll have to hit it a bunch of times... sry...

http://bmad6.themostfunsite.com/testlevel.zip

Any advice is welcome.

TIA

FoxBlitzz
20
Years of Service
User Offline
Joined: 19th Nov 2003
Location: United States
Posted: 5th Jul 2006 05:40
No mouselook? Oh dear, someone has been playing too much XBox.

AMD Athlon 64 X2 4200+
1GB DDR-SDRAM (May increase to 2GB one day)
512MB ATI Radeon X1800 Series - Finally! A card that does pixel shaders correctly!
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 5th Jul 2006 16:12
Lol... okay, I'll change that and update here...

Silvester
18
Years of Service
User Offline
Joined: 7th Dec 2005
Location: Netherlands
Posted: 5th Jul 2006 16:39
My error was there...

but i just had toomuch programs running


Many tales has bein told about me,and there where i came from.Most bad ones are true.The good ones are false...
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 5th Jul 2006 17:07
Okay, I've added mouselook controls (http://bmad6.themostfunsite.com/testlevel.zip and http://bmad6.themostfunsite.com/testlevel.rar) but I do have to say, I don't like them at all. This is because (at least for me) my keyboard is on the left of my mouse, and I need to use my right hand to control the marble... I didn't remove anything, just added mouselook, the wheel for zoom, and, for the sake of convenience, mouse click makes you jump...

NeX the Fairly Fast Ferret
19
Years of Service
User Offline
Joined: 10th Apr 2005
Location: The Fifth Plane of Oblivion
Posted: 5th Jul 2006 18:41
Become a leftie like me then.

<OMG></OMG>
NeX, you cant be serious - CattleRustler.
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 5th Jul 2006 20:51
That's okay...

I'll just stick to the original controls - that's why I left them in...

So, do u guys have any suggestions? And, what are your favorite settings for accel, accel loss, and speed?

FoxBlitzz
20
Years of Service
User Offline
Joined: 19th Nov 2003
Location: United States
Posted: 5th Jul 2006 21:23
Speed = 2
Accel = 1
Accel Loss = 32

Those are my prefs. Makes the ball slip a whole lot less than it used to.

AMD Athlon 64 X2 4200+
1GB DDR-SDRAM (May increase to 2GB one day)
512MB ATI Radeon X1800 Series - Finally! A card that does pixel shaders correctly!
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 5th Jul 2006 21:32
I've done some experimentation with:

speed = 4
accel = 1
accel loss = 64/128/256

problem is, the ball almost feels like rubber, with too much traction, and it's really easy to have the ball shoot off the level...

what I'm thinking is, find 6 to 12 sets of settings that you guys like, and then make a bunch of different marbles (actually, probably just balls) and make them different materials, some of which you have to unlock. What do you think?

Zotoaster
19
Years of Service
User Offline
Joined: 20th Dec 2004
Location: Scotland
Posted: 8th Jul 2006 22:07
Hey Bmad6,

Game's looking great, I hope to see it finish to become a great game.

Any chance I could see that source code now?

Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 12th Jul 2006 01:40 Edited at: 12th Jul 2006 01:41
Ok, sorry it took so long to post the source code - I'm on vacation right now, and we're sharing 3 laptops amongst 8 kids and 8 adults, so I have limited access to a computer, and we only have 2 possible internet connections - one of those verizon wireless things, and a dial-up connection (which nobody has used yet). Ne ways, back on track:

Here's the main source:


and, I'm trying to make it more function-based, and here's what I've got so far:



Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 1st Aug 2006 19:18
Okay, LONG overdue update:

I've had to give up on making it function-based, because, I found out, you can't pass a UDT to a function as an argument.

I've been constantly working on the physics, trying everything I could possibly think of, and my code is now a mess of commented-out attempts at improvement.

Same controls and everything, though, and only one small change to the map (a bounding box, I was using it to try to fix the problem where the ball can climp walls, which, btw, still isn't quite fixed)

ZIP attached.

I've got some other code written for menus and stuff, but haven't gotten around to putting it into my main code yet, because I'm still working feverishly on these stupid physics...

Anyways, heres my most recent physics code:



Programming is the art that fights back.
Xenocythe
19
Years of Service
User Offline
Joined: 26th May 2005
Location: You Essay.
Posted: 1st Aug 2006 19:26
I dont see a zip.

Applyby has Flies in his Eyes.
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 1st Aug 2006 19:41
Whoops

I always do that...

Programming is the art that fights back.

Attachments

Login to view attachments
FoxBlitzz
20
Years of Service
User Offline
Joined: 19th Nov 2003
Location: United States
Posted: 1st Aug 2006 22:21 Edited at: 1st Aug 2006 22:21
You should probably be using a system like Newton for physics. NGC is for simple collision, for FPS characters and such.

AMD Athlon 64 X2 4200+
1GB DDR-SDRAM (May increase to 2GB one day)
512MB ATI Radeon X1800 Series - Finally! A card that does pixel shaders correctly!
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 2nd Aug 2006 06:43
I'd rather not buy a physics plugin, though, so that pretty much limits be to Newton or ODE, and I'd need support for the spinning stuff for the marble - basically, the user can affect the spin of the ball, but the physics engine needs to turn that into movement, and such. Mostly, it seems to me like physics engines just handle impacts and such and their responses. I doubt Newton or ODE have these capabilities... maybe the new DarkPhysics, if I can somehow scrounge up $60 at some point in the future, will have it, but...

Also, I get more satisfaction from writing the physics code on my own.

Programming is the art that fights back.
FoxBlitzz
20
Years of Service
User Offline
Joined: 19th Nov 2003
Location: United States
Posted: 2nd Aug 2006 07:00
Incorrect. When using physics engines, you get full control over all bodies. You can add directional and rotational force, and move your bodies manually at any time, through the physics engine. For making a ball roll in Newton, you just use this code:



It's really not that hard to learn how to use, and you get much more accurate physics in the end.

AMD Athlon 64 X2 4200+
1GB DDR-SDRAM (May increase to 2GB one day)
512MB ATI Radeon X1800 Series - Finally! A card that does pixel shaders correctly!
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 2nd Aug 2006 07:23
Hmm... actually, doesn't sound too bad. However, how does it impact framerate? And, what about overheard, loading and such?

And, are there limits on the number of objects, etc.?

Programming is the art that fights back.
FoxBlitzz
20
Years of Service
User Offline
Joined: 19th Nov 2003
Location: United States
Posted: 2nd Aug 2006 21:28 Edited at: 2nd Aug 2006 21:31
Loading is slightly longer because it has to generate tree collision. However, it's pretty fast. There's only a very small amount of overhead at all. There are no limits as far as I know, but you shouldn't try to make over 100 dynamic cubes at once. The tree collision is pretty fast, so you can make levels as complicated as you want. Just don't try to do any really weird, complex geometry in one spot, or else the physics engine will either slow down or launch your ball high into the air, based on the physics model you tell it to use.

AMD Athlon 64 X2 4200+
1GB DDR-SDRAM (May increase to 2GB one day)
512MB ATI Radeon X1800 Series - Finally! A card that does pixel shaders correctly!
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 2nd Aug 2006 21:46
Well, for now I'll just use this, after I've put all this effort into designing the physics it would be a shame to get rid of them all now...

but, thanks for the tip about newton. I'll definitely keep it in mind.

Programming is the art that fights back.
NeX the Fairly Fast Ferret
19
Years of Service
User Offline
Joined: 10th Apr 2005
Location: The Fifth Plane of Oblivion
Posted: 3rd Aug 2006 00:05 Edited at: 3rd Aug 2006 00:08
---IGNORE---
Wrong thread


Since the other one was scaring you guys so much...
tiresius
21
Years of Service
User Offline
Joined: 13th Nov 2002
Location: MA USA
Posted: 10th Aug 2006 20:19
Yes Newton can do a marble-rolling game very well. That's what my current project is. I don't add torque, though, I use the omega commands which is some angular velocity or whatnot. But close. Maybe I'll look into the torque commands, hmm.

I'm sure Newton physics (even via the Wrapper) is faster than any DBPro-written code, just by the fact that it's using advanced methods and superior storage models to figure it all out.

But if you like physics math and figuring out collision on your own, then do it yourself. Whatever is fun to program is the right one!

I'm not a real programmer but I play one with DBPro!
FoxBlitzz
20
Years of Service
User Offline
Joined: 19th Nov 2003
Location: United States
Posted: 10th Aug 2006 21:48
When I used the omega commands, my ball felt rather drunk and hard to control. Maybe I'm not setting it up right or something?

AMD Athlon 64 X2 4200+
1GB DDR-SDRAM (May increase to 2GB one day)
512MB ATI Radeon X1800 Series - Finally! A card that does pixel shaders correctly!
tiresius
21
Years of Service
User Offline
Joined: 13th Nov 2002
Location: MA USA
Posted: 11th Aug 2006 01:26
Yes maybe you weren't doing it right... ? I have perfect control over the marble.

The only reason I'm using the omega commands is because that is what Walaber did for his first program demo in the early versions of the wrapper (Demo01). It's no longer in the current distribution, but it was a plain surface with a ball rolling around using omega functions. I'll probably be using the torque commands for my jointed catapult, but I still have to look into it.

Enough about Newton, don't want to hijack Bmad6's post.

Hey Bmad6, what is your game going to be like? I played it when the controls were really rough. Just wondering what your vision of the final game is going to be?

I'm not a real programmer but I play one with DBPro!
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 18th Aug 2006 23:18
I keep forgetting about this post. =D

Anyways, an up-to-date zip is attached, and here's the code:



In the zip, there are 2 files - marble_debug.exe and marble_nodebug.exe. As you can kind of tell by their names, one has all debug data shown and allows you to use keypad 4,5,6,7,8, and 9 to change what used to be the speed, accel, and deccel values. Now, though, as I've revamped that part of the physics, they are speed, vel2spin, and spin2vel. I suggest keeping vel2spin and spin2vel the same. Also, I'm currently working hard on a very troubling and very elusive new bug introduced by the new implementation of physics in this new version. The bug is that, when ever a normal is negative, the spin and velocity seem to be affected incorrectly, which causes them to increase wildly, making the marble accelerate violently. =D

This means, when looking at the level with the starting camera position, the left wall, the wall you are looking directly towards, and the "ceiling" all cause the ball to spaz out. =D

However, these changes to the physics have made it much more realistically - for example, the marble will now roll down inclines. (you'll get to test that as soon as I fix the bug, because, right now, all ramps are negative normals, so they don't work correctly. =D

If anybody who's really good at physics is looking at this thread, here's the code which is creating the problem:



vel_target 1 and 2 are the perfect velocity of the marble if the normal and spin were constant, and spin_target 1 and 2 are the perfect spin of the marble if the normal and velocity were constant.

The reason I have 2 of each of these variables is that I have 2 dimensions of spin (no y spin), and each of which can be affected by 2 dimensions of velocity (aka, not the one they rotate on), and they share one of these dimensions (y), so they way they affect each other maps out like this:

x spin -- z velocity
z spin -- x velocity
x spin -- y velocity
z spin -- y velocity

so, I need 2 x spin variables and 2 z spin variables and 2 y velocity variables.

Then, vel_difference 1 and 2 and spin_difference 1 and 2 are the difference between the currect spin and velocity and the target spin and velocity (spin_target and vel_target). Then, the current values change by a fraction - basically:



for velocity created by spin and:



for spin created by velocity.

BTW, normal_adj is just a version of the normal variable where all impacts are averaged out, so, where normal maybe be (1,1,0), normal_adj will be (.5,.5,0) and normal (1.5,.5,0) will be (.75,.25,0), because normal values over 1 may create unpredictable results in some calculations.

I'm also using abs(normal) in all of these spin->vel and vel->spin calculations because it's only the negative normals which are affected, and I'm try to figure out why...

Your signature has been erased by a mod.
Assuming that it really was erased by a mod, and not dapaintballer:
Thanks! (I'm sure dapaintballer changed it to something about gay port again...)

Attachments

Login to view attachments
Diggsey
18
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 19th Aug 2006 17:50
I haven't thought about it much, but I think you should try removing all of the abs functions from the above code. That's the only thing I can think of which would affect negative normals

There are three types of people, those that can count and those that can't.
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 19th Aug 2006 20:59
I started without those abs(), tho, and adding them makes the problem a little less severe... I'm still experimenting, though, so i keep removing them, then adding them back, as I try different things...

Harvard's Law, as Applied to Computers:
Under the most rigorously controlled conditions of pressure, temperature, volume, humidity and other variables, the computer will do as it d*mn well pleases.
Diggsey
18
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 21st Aug 2006 18:09
You could put a check between each line, that checks if the vars are spazzing out, if they are, just generate an error an it will end telling you the line number

There are three types of people, those that can count and those that can't.
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 21st Aug 2006 18:18


There's not definitive way to determine if the variables are "spazzing out" - the problem is that the ball's velocity and spin aren't interacting correctly, which is something that can't be measured very easily, it's something that you can observe.

Harvard's Law, as Applied to Computers:
Under the most rigorously controlled conditions of pressure, temperature, volume, humidity and other variables, the computer will do as it d*mn well pleases.
Diggsey
18
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 21st Aug 2006 18:31
put a waitkey after each sync. Before each sync, print the vars. Then, see if you can find a pattern or something to check if they are spazzing out.

You could then write a check for this and put it into a function:


put that after each line

There are three types of people, those that can count and those that can't.
Bmad6
19
Years of Service
User Offline
Joined: 25th Aug 2005
Location: Virginia, United States
Posted: 22nd Aug 2006 17:54
Quote: "put a waitkey after each sync. Before each sync, print the vars. Then, see if you can find a pattern or something to check if they are spazzing out."


I've tried that. Right now, when debug data is being printed to the screen, press ctrl to slow to 3 fps, hold shift to freeze it. However, observing that the ball is going way too fast is very different from knowing how to fix it.

Quote: "function spazzing_out(vars as integer)
if <check goes here> then damn = 1
endfunction damn"


The problem is: "check goes here"

What, exactly, can I check for?

I know exactly where (in what line) the velocity, for example, is being increased, but why it's increasing in the wrong direction or why the ball is spinning the wrong way is not so clear.

Harvard's Law, as Applied to Computers:
Under the most rigorously controlled conditions of pressure, temperature, volume, humidity and other variables, the computer will do as it d*mn well pleases.

Login to post a reply

Server time is: 2024-09-29 16:38:07
Your offset time is: 2024-09-29 16:38:07