#73571 - SMP - Sun Feb 26, 2006 7:56 pm
Is Nintendo DS support 3d-graphics for cool games such as racing, 3d-arcade and other games with low-poly models?
Is anyone developing 3D games?
#73572 - HtheB - Sun Feb 26, 2006 8:06 pm
SMP wrote: |
Is Nintendo DS support 3d-graphics for cool games such as racing, 3d-arcade and other games with low-poly models?
Is anyone developing 3D games? |
Nintedo DS has lots of 3D games...
#73574 - Kyoufu Kawa - Sun Feb 26, 2006 8:10 pm
But are the guys and occasional girls here on GBADev/DSDev making any in 3D?
#73583 - genfish - Sun Feb 26, 2006 8:36 pm
its possible with the opengl stuff, im doing a 2d project at the moment which i need finished by april 3rd, then i was thinking of trying something in 3d
_________________
there is no rl only afk
#73595 - tssf - Sun Feb 26, 2006 9:26 pm
#73599 - Webez - Sun Feb 26, 2006 9:32 pm
I am doing a tactic-rpg like Final Fantasy Tactics (or I'm trying)
#73622 - Sylfurd - Mon Feb 27, 2006 12:01 am
3D Space "shooter" ( top secret :D ), and Moto Racing Game here :)
http://www.neoflash.com/forum/index.php/topic,674.0.html
Still in devlopment !
#73628 - The 9th Sage - Mon Feb 27, 2006 3:29 am
http://www.playeradvance.org/forum/showthread.php?t=1539
Here's a DS version of the PC game Every Extend (be warned that the author considers it alpha...it's quite cool, and fun to play, but somewhat incomplete as of yet).
Has simple, yet nice graphics...seems to be doing some cell shading too. The goal is to blow up your ship and explode the cubes floating around the screen. When you destroy them pieces will fly off, and those pieces can then hit other cubes causing chain reactions (which is a good thing).
_________________
Now with 20% More Old Man from Zelda 1 than ever before!
#73629 - tepples - Mon Feb 27, 2006 3:35 am
The 9th Sage wrote: |
Here's a DS version of the PC game Every Extend (be warned that the author considers it alpha...it's quite cool, and fun to play, but somewhat incomplete as of yet). |
And given that Q Entertainment's next PSP title is also a port of Every Extend, it looks like Tetsuya Mizuguchi (head of Q?) and Ken Kutaragi (head of SCE) are about to get swept again, with another killer app's exclusivity robbed by homebrewers.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#73826 - SMP - Tue Feb 28, 2006 6:57 am
DS can draw 4000 at 30 fps but it is insufficient to do amazing 3d-games.
I thought DS games will be 3D-games almost
#74004 - M3d10n - Wed Mar 01, 2006 5:33 pm
SMP wrote: |
DS can draw 4000 at 30 fps but it is insufficient to do amazing 3d-games.
I thought DS games will be 3D-games almost |
It was never supposed to do "amazing" 3D. The DS was designed to do "enough" 3D at good framerates in order to do fun games without becoming outrageously expensive.
BTW, by your questions, I take it you never saw any DS games running in actual hardware, did you? Anyone who played a few of the best DS 3D games can tell you it produces graphics slightly better than last generation N64 stuff, but at better framerates and without filtering (the lack of filtering is not that bad, though, in well-done games, it's barely noticeable, but it'll jump into your eyes in crap games like King Kong).
The DS has a large bunch of 3D games (I'd say more than 50% of the US releases are full 3D games), and that includes Super Mario 64, Mario Kart DS (runs at 60fps) and the soon to be released Metroid Prime Hunters (first person shooter).
#74699 - thundrestrike - Tue Mar 07, 2006 1:13 am
tssf wrote: |
http://www.sylphds.net/ev2/contentview.php?id=268 |
SOMEONE'S MAKING FINAL FANTASY 7 ON THE DS?!?!?!!?!?!?!!??!
omg omg omg! wow. I can't wait for this!!!
EDIT:
I just read the website and it's just an engine hes making using FF7 stuff for testing...
_________________
popcorn
#74706 - Empyrean - Tue Mar 07, 2006 2:18 am
Whoa buddy, even if someone (or a group of people) were, the LAST thing to do is raise a ruckus over it.
[The walls have ears.]
_________________
3 is not an "e",
7 is not a "t",
1 is not an "l",
And for the love of God,
Learn how to spell!
#80404 - SevenString - Sat Apr 22, 2006 1:04 am
SMP,
Yes.
http://metalvox.blogspot.com/2006/04/fun-with-nintendo-ds-homebrew.html
_________________
"Artificial Intelligence is no match for natural stupidity."
#80514 - Darkflame - Sun Apr 23, 2006 2:56 am
Heres a nice homebrew 3D game I like;
http://www.ndshb.com/cgi-bin/cfiles/cfiles.cgi?0,0,0,0,2,89
Eurotunnel.
Simple, but fast and smooth.
#81742 - Payk - Mon May 01, 2006 8:59 pm
Yes i do one too...
First its an engine which loads maps,scripts and texture from flashcard (FatLib) and then it makes 3D-Worlds with that...It is planed to become a RPG-MAKER like app... But first i am going to make a game with that...
www.payk.ndsdev.de/SD.rar
www.payk.ndsdev.de/CF.rar
#85096 - lazmike - Sat May 27, 2006 12:58 am
i made a pretty cheesy fps (my first one ever) - snow wars, you can find it on my site (haven't touched it for a long time, it's probably buggy). There will be a (hopefully) very fun 3d game coming from the team i work with for the compo finishing in june ;)
_________________
-laZmike-
http://lazmike.nintendev.com
#155889 - a128 - Mon May 05, 2008 9:23 am
M3d10n wrote: |
... Mario Kart DS (runs at 60fps) |
Since I write my own racing game..I am still shocked that Mario Kart DS runs at 60FPS.....
maybe they used a clever scheme so the ARM7 does some calculations?!
#155891 - Maxxie - Mon May 05, 2008 10:41 am
I don't believe that they use a non standard arm7 bin.
It's more likely that they know when to issue the _blocking_ swap and what of the data to precalculate rather then doing the work jit.
#155892 - a128 - Mon May 05, 2008 10:45 am
Maxxie wrote: |
It's more likely that they know when to issue the _blocking_ swap |
What did you mean?
#155893 - Maxxie - Mon May 05, 2008 10:54 am
The hw register write for the swap command is acting like a swiWaitForVBlank waiting for HLine=192
#155894 - a128 - Mon May 05, 2008 11:06 am
the GFX_FLUSH command you mentioned is not waiting for Vblank
it's executed (!!) at Vblank...
#155895 - Maxxie - Mon May 05, 2008 11:11 am
Every test i made with first a swap and then an wait, caused the fps to half. if the register write wouldn't wait, this shouldn't happen.
Unless ofcourse, the vblank happened allways between those two calls, but i think that's pretty unlikely. ... i remember an old thread about this a while back, gotta search
:edit: See http://forum.gbadev.org/viewtopic.php?t=14558&highlight=swiwaitforvblank+swap
#155897 - Noda - Mon May 05, 2008 11:24 am
I'm currently developping a double-screen 3D game using some nice effects with an integrated level editor. I've already been contacted by professional dev studio interested in my project :)
Some screens:
[Images not permitted - Click here to view it]
#155901 - silent_code - Mon May 05, 2008 12:38 pm
wow, Noda! good luck, then! :^D
(that's another proof for "think small and simple"!)
#155923 - ritz - Mon May 05, 2008 8:00 pm
Here's my shot in the dark. It's coming together fairly well I think.
-> http://ritz.ca.googlepages.com/sonic.zip
This particular build is gbfs, so you don't need to dldi it.
Edit: No, it's not Sonic the Hedgehog :)
Last edited by ritz on Tue May 06, 2008 2:42 pm; edited 2 times in total
#155924 - DekuTree64 - Mon May 05, 2008 8:07 pm
a128 wrote: |
Since I write my own racing game..I am still shocked that Mario Kart DS runs at 60FPS.....
maybe they used a clever scheme so the ARM7 does some calculations?! |
Probably the biggest thing is the artwork. In every 3D game I've worked on, rendering (which includes animation transforms) has been at the top of the profile. Mario Kart's backgrounds don't have many polygons, and the characters don't have many animation joints, so that would cut down the time a lot
The characters also don't have many different animations, so they're most likely all loaded up front (loading animation files is usually another big time eater). Same with sound effects. Actually, I'd be surprised if any memory management is done during gameplay either. Maybe for shooting items, but those could just be pools of structures to pull from.
Then the basic gameplay physics and AI can be optimized down as far as you need to. Just takes some programmer time, which is no problem on a game that's going to sell millions of copies.
_________________
___________
The best optimization is to do nothing at all.
Therefore a fully optimized program doesn't exist.
-Deku
#156034 - M3d10n - Tue May 06, 2008 2:14 pm
a128 wrote: |
M3d10n wrote: |
... Mario Kart DS (runs at 60fps) |
Since I write my own racing game..I am still shocked that Mario Kart DS runs at 60FPS.....
maybe they used a clever scheme so the ARM7 does some calculations?! |
Licensed games cannot run custom code on the ARM7. They must use a binary supplied by Nintendo in order to keep the DS FCC compliant (since the ARM7 has a very low level access to the WiFi chip).
MKDS just budgets its polygons very well, that's all. The racers are pretty low polygon and they still use LOD for distant models. Also, the game probably uses display lists for everything and with few joints hardware skinning is blazing fast.
I don't even need to comment on AI and "physics", since that'd be doable on a SNES.
#156039 - a128 - Tue May 06, 2008 4:01 pm
M3d10n wrote: |
Licensed games cannot run custom code on the ARM7. They must use a binary supplied by Nintendo in order to keep the DS FCC compliant (since the ARM7 has a very low level access to the WiFi chip).
|
Thanks for this info....
M3d10n wrote: |
MKDS just budgets its polygons very well, that's all. The racers are pretty low polygon and they still use LOD for distant models. Also, the game probably uses display lists for everything and with few joints hardware skinning is blazing fast.
|
Rendering is not the problem..I just use displaylists and spend some BoxTests to the models
My CPU time gets eaten by the AI. The AI needs approx. 2ms for one AI car ..so if you have 7 AI cars then you have approx. 14ms. which is very near to the 16.66ms limit you have per frame if you go for the 60FPS
now I did a AI cleanup and also used some approx. for stuff like sqrt(x*x+y*y) or even vector normalisation if appropiate
I also changed some fixpoint values to plain int
and now the AI spends 0.6ms for one car
Code: |
//from http://www.gamedev.net/community/forums/
//fake sqrt(x*x+y*y)
static Fixed FakeLength(Fixed x,Fixed y) {
Fixed fy = Fixed::abs(y);
Fixed fx = Fixed::abs(x);
return (fy > fx) ? (fy + Fixed(0.336356f)*fx) : (fx + Fixed(0.336356f)*fy);
}
// The original idea for this approximation comes from one of the "Graphic Gems"-books, where I found a 2D-version of the same thing.
// This is basically the manhattan distance, with the 2 smallest factors scaled down.
//approx for sqrt(x*x+y*y+z*z)
/max error 0.2
static Fixed LengthApprox(const Vec3 &v) {
int32 a, b, c;
a=Fixed::abs(v.x).value;
b=Fixed::abs(v.y).value;
c=Fixed::abs(v.z).value;
// Assigning the greatest value to a.
if ((b>a)&&(b>c)) {
int32 Temp = b;
b=a;
a=Temp;
} else if ((c>a)&&(c>b)) {
int32 Temp = c;
c=a;
a=Temp;
}
// return a+(b+c)*Fixed(0.366f); // I found this value optimal. There is probably no point in finetuning it further, since there still is a 20% fault... (For an int version of the same function, use a one step bitshift (a+((b+c)>>1)) instead)
return _FixedNum(a+(b+c)>>1); // I found this value optimal. There is probably no point in finetuning it further, since there still is a 20% fault... (For an int version of the same function, use a one step bitshift (a+((b+c)>>1)) instead)
}
#define MIN(a,b) a<b?a:b
static Fixed DistanceVec3approx (const Vec3 &a, const Vec3 &b) {
const int32 A=Fixed::abs(a.x-b.x).value;
const int32 B=Fixed::abs(a.z-b.z).value;
const int32 C=MIN(A,B)>>1;
return _FixedNum(A+B-C);
}
|
#156049 - M3d10n - Tue May 06, 2008 7:49 pm
Nice optimization. I take it you are already avoiding having to normalize vectors as much as possible?
Even if you're already doing, anyone can benefit from this tip: void having to get a square root as much as possible (even if you have an approximate function).
If you want to check if a vector's length is greater/smaller than a set size (ex: to know if a point is within a certain distance of another point) just compare the vector's squared length (x*x + y*y + z*z) against the square of the desired length (l*l).
Since you're working on a racing game, I guess you might also like this one:
Code: |
int32 fxAtan2(int32 y, int32 x)
{
int32 coeff_1 = inttof32(256/4);
int32 coeff_2 = 3*coeff_1;
int32 abs_y = abs(y)+1; // kludge to prevent 0/0 condition
int32 angle;
if (x>=0)
{
int32 r = divf32((x - abs_y), (x + abs_y));
angle = coeff_1 - mulf32(coeff_1, r);
}
else
{
int32 r = divf32((x + abs_y), (abs_y - x));
angle = coeff_2 - mulf32(coeff_1, r);
}
if (y < 0)
return(-angle); // negate if in quad III or IV
else
return(angle);
}
|
It's a DS-ified version of a fast FP atan2 implementation. It returns the angles in int32 [-256, 256] range (you'll need to f32toint() them before feeding to glRotatei() calls). I'm using it to make a character follow the stylus just like in Zelda Phantom Hourglass and it works very well.
#156139 - tepples - Wed May 07, 2008 2:23 am
a128 wrote: |
My CPU time gets eaten by the AI. The AI needs approx. 2ms for one AI car ..so if you have 7 AI cars then you have approx. 14ms. which is very near to the 16.66ms limit you have per frame if you go for the 60FPS |
Do people think 60 times a second? Perhaps you could run each AI 15 times a second, running two opponents' AI in each frame.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#156162 - a128 - Wed May 07, 2008 8:32 am
tepples wrote: |
Do people think 60 times a second? |
offtopic: I hope my brain is faster then the NDS :-) If not....I need a cheat code...ASAP.
Anyway...Thats a nice idea to calculate some stuff every second or third frame ..have to try this
M3d10n wrote: |
fxAtan2(int32 y, int32 x) |
I found one of the source of this impressing code
http://www.dspguru.com/comp.dsp/tricks/alg/fxdatan2.htm
it has a max |error| around 0.0102 radians...which is nead
if you need a accurate atan2() with |error| < 0.005 radians.
Code: |
//returns radian
Fixed Fixed::atan2 (Fixed y, Fixed x)
{
if ( x == 0 ) {
if ( y > 0 )
return Fixed::PI/2.0f;
if ( y == 0 )
return 0;
return -Fixed::PI/2.0f;
}
Fixed atan;
Fixed z = y / x;
if ( abs( z ) < Fixed(1) ) {
atan = z / (Fixed(1) + Fixed(0.28f) * z * z);
if ( x < 0 ) {
if ( y < 0 )
return atan - Fixed::PI;
return atan + Fixed::PI;
}
} else {
atan = Fixed::PI / 2.0f - z / (z * z + Fixed(0.28f));
if ( y < 0 )
return atan - Fixed::PI;
}
return atan;
}
|
more atan2() fun here
http://lists.apple.com/archives/PerfOptimization-dev/2005/Jan/msg00051.html
#156174 - silent_code - Wed May 07, 2008 12:42 pm
ritz wrote: |
Here's my shot in the dark. It's coming together fairly well I think.
-> http://ritz.ca.googlepages.com/sonic.zip
This particular build is gbfs, so you don't need to dldi it.
Edit: No, it's not Sonic the Hedgehog :) |
that rocks! it's not much, but it's still very impressing. :^D
#156176 - silent_code - Wed May 07, 2008 12:49 pm
SORRY FOR THE DOUBLE POST!
<OT/>
sadly, you can't compare a brain to a computer.
computers are much quicker with the rather trivial task they are limited to. even though some people can perform pretty impressive calculations in a mere seconds, it's stil no match even for the simplest and slowes processor.
on the other hand people a capable of making things up, understanding and interpreting things as complex as human languages etc. and after all, we *create* computers. ;^D
so to summarize this: we are more flexible and have many more functionality and "build in software", but due to the massive number of tasks (NT) or the intensity (AUT) with which we perform each moment, we are quite limited in our "immediete mode processing power". ;^D
#156183 - ritz - Wed May 07, 2008 2:48 pm
Thanks silent_code. It's really just a test area and not a level or anything. But it is big enough to allow me to test most the code. It'd be simple enough to make an actual level/town/whatever, just add more stuff to the .map files (would also have to use a libfat build as the RAM is max'd out with gbfs currently).
Of course, I'd have to have some skill in creating a nice looking town/dungeon too :)
#156226 - keldon - Wed May 07, 2008 10:12 pm
Oh gosh, what was the complex maths problem that a guy was able to solve in seconds that takes a PC hours to calculate?
#156242 - silent_code - Thu May 08, 2008 12:35 am
keldon wrote: |
Oh gosh, what was the complex maths problem that a guy was able to solve in seconds that takes a PC hours to calculate? |
you mean "that took the programmer's code hours to calculate", right? ;^p
i can think of lots of possibilities to waste computations and memory access to slow things down. ;^D
#156285 - keldon - Thu May 08, 2008 3:06 pm
silent_code wrote: |
keldon wrote: | Oh gosh, what was the complex maths problem that a guy was able to solve in seconds that takes a PC hours to calculate? |
you mean "that took the programmer's code hours to calculate", right? ;^p
i can think of lots of possibilities to waste computations and memory access to slow things down. ;^D |
Oh, my bad; he didn't outperform a PC ... but he did get the 13th root of a 100 digit number in under 4 seconds!
http://www.metro.co.uk/news/article.html?in_article_id=79323&in_page_id=34
#156293 - silent_code - Thu May 08, 2008 4:54 pm
VERY impressive! i wonder how fast the nds (read: a fairly well written software that supports 200+ digit numbers) could do that? :^D
ps: we're a bit OT. ;^)
#156298 - Miked0801 - Thu May 08, 2008 6:24 pm
You know how they do that right? They memorized a couple of large tables of numbers. Then they can quickly interpolate the answer. They take months to prepare for these challenges. A program using the same technique could calculate the answer instantly.
#156300 - silent_code - Thu May 08, 2008 7:40 pm
yes, and it involves lots of prime numbers! ;^D
still, i wonder how many such calculations per second the nds could make. :^D
as the article states, the guy has a "large memory". i wonder if he's capable of memoryzing ~4 mb worth of 200+ digit numbers. :^D
ps: just to be at least once on topic: i do nds 3d, too. maybe someone rememberst the volume shadow demo i made. my interests go beyond making demos, though. ;^)