Tutorial How to make 3DS Games with Unity

  • Thread starter Thread starter Keksfresser
  • Start date Start date
  • Views Views 224,396
  • Replies Replies 513
  • Likes Likes 30

Should I add some Demo Projects?


  • Total voters
    54
  • Poll closed .
There was a 3DS tutorial series made by Unity - covered a bunch of topics. I been scouring the web for it. It could be downloaded from the Dev forums. Someone has it on a hard drive somewhere! I just need to convince them to upload it :lol:

I do know that they were the bane of many 3DS Unity Dev's because of a bunch of deprecated Open GL ES 1.1 functions. If you had an in house Shader guy you were fine but most people starting with unity 3DS had it rough. Its kind of like Unity 3 - 4 those were rough times for shaders. back then I had no clue how to write them and I was used to Unreal 3's node based shader editor ahh what a time..These kids today with there insta map exports auto weathering, PBR and Deferred rendering engines with ambient occlusion and bounce lighting! you can actually build an entire forest to scale We had to bake everything! we had no speedtree, we had to match every texture by hand in our Froward rendering engine and we were grateful! because we didn't have to use brushes in q-radiant! Get off my digital LAWN! :lol:

What little I know I am happy to share so if you have shader /Graphics questions ask away. I cant promise I know the answer to all or that I'm an expert with the most efficient way to do it but I'll share what I got.

I haven't messed much with screen based effects ( post effect shaders ) which is what I'm guessing you might want on a 2d game. Maybe bloom and color correction are possible since that tech existed in GL ES 1.1 to a limited capacity. Its Ironic the 3DS GPU is capable of GL ES 2.0 effects but Nintendo cheaped out and didn't get the extended library so that's why the GPU can do some 2.0 shader instructions but cuts off on per pixel effects. least that's what I have understood..take it with a grain of salt :unsure:

here is the GPU demo video of the era:

Having an official tutorial series sounds like a goldmine of things we should or should not be doing :)

As of know, at least in my case, it was ALL trial and error haha... And also sometimes just trying to guess how something works lmao
(LOOKING AT YOU, BANNERS) (OHH UDS, YOU'RE SUCH A BASTARD)

Getting back on topic, I can imagine the sheer frustration trying to work with deprecated and outdated GL ES functions. I personally only "worked" with shaders a little bit, but it was mostly just looking at it and saying, yeah I like this one. It's weird to me you mentioned that the 3ds can indeed handle at least some GL ES 2.0 effects, sounds like they started implementing it but then forgot about it, or just outright stopped for seemingly no reason LOL

btw CooingMaxito love the Undertale Port you are working on. is this project in unity?
Es muy impresionante
Thanks! Yes it's being made in Unity, it's the 2d project I mentioned in my last message, so far it's been an absolute blast! I haven't worked that much with Unity before this project, and it's my first time making a game this big, so this is an awesome learning experience :D
Especially for the 3ds, since I have to optimize pretty much everything! Or at least I do because I'm also making it for old models.

Hopefully I won't need to use any fancy screen effects in this game, aside from like probably one enemy and 2 bosses. If I have any questions or get stuck somewhere I'll definitely come and ask

Saludos de México :yay3ds:
 
Having an official tutorial series sounds like a goldmine of things we should or should not be doing :)

As of know, at least in my case, it was ALL trial and error haha... And also sometimes just trying to guess how something works lmao
(LOOKING AT YOU, BANNERS) (OHH UDS, YOU'RE SUCH A BASTARD)

Getting back on topic, I can imagine the sheer frustration trying to work with deprecated and outdated GL ES functions. I personally only "worked" with shaders a little bit, but it was mostly just looking at it and saying, yeah I like this one. It's weird to me you mentioned that the 3ds can indeed handle at least some GL ES 2.0 effects, sounds like they started implementing it but then forgot about it, or just outright stopped for seemingly no reason LOL


Thanks! Yes it's being made in Unity, it's the 2d project I mentioned in my last message, so far it's been an absolute blast! I haven't worked that much with Unity before this project, and it's my first time making a game this big, so this is an awesome learning experience :D
Especially for the 3ds, since I have to optimize pretty much everything! Or at least I do because I'm also making it for old models.

Hopefully I won't need to use any fancy screen effects in this game, aside from like probably one enemy and 2 bosses. If I have any questions or get stuck somewhere I'll definitely come and ask

Saludos de México :yay3ds:
HAHAHAH Yeah Banners were a very hard nut to crack for me as well ( what are you having trouble with ? ). Wait till you mess with 3D video, so cool once you get it to work but oh man that was 100% guess work. Project wise tho it been the same for me mountains of trial and error but since I have a lot of love for the system a worthwhile price.

You are not wrong that it has been challenging but more from a programing standpoint for me more than art. One of the advantage of having worked during that era is you tend to have a good idea of what the hardware can and cant do and you know how to tackle and achieve most effects and you know how to optimize and avoid certain traps. Keep one eye on memory at all times and hardware testing like crazy. Those are some rough hurdles to jump when your backporting from the modern day game development experience. so much more hand holding an automation now.

GL ES 2 was cutting edge when the 3DS came out I'm really not surprised it wasn't miniaturized in the chipsets. When has Nintendo ever released with the latest graphics hardware other than the SNES lol. It would have cost too much to put a modern day GPU in the 3DS - What they have is very impressive - a PS 2.5...Yeah what really shot Unity in the foot was the removal of certain graphics commands when Unity 5 came out. I'm sure at the time they had no idea they were going to do an engine port for the 3DS till much later which by then of course it was too late to backpaddle on the graphics engine. heh hind sight.
 
  • Like
Reactions: CooingMaxito
HAHAHAH Yeah Banners were a very hard nut to crack for me as well ( what are you having trouble with ? ). Wait till you mess with 3D video, so cool once you get it to work but oh man that was 100% guess work. Project wise tho it been the same for me mountains of trial and error but since I have a lot of love for the system a worthwhile price.

You are not wrong that it has been challenging but more from a programing standpoint for me more than art. One of the advantage of having worked during that era is you tend to have a good idea of what the hardware can and cant do and you know how to tackle and achieve most effects and you know how to optimize and avoid certain traps. Keep one eye on memory at all times and hardware testing like crazy. Those are some rough hurdles to jump when your backporting from the modern day game development experience. so much more hand holding an automation now.

GL ES 2 was cutting edge when the 3DS came out I'm really not surprised it wasn't miniaturized in the chipsets. When has Nintendo ever released with the latest graphics hardware other than the SNES lol. It would have cost too much to put a modern day GPU in the 3DS - What they have is very impressive - a PS 2.5...Yeah what really shot Unity in the foot was the removal of certain graphics commands when Unity 5 came out. I'm sure at the time they had no idea they were going to do an engine port for the 3DS till much later which by then of course it was too late to backpaddle on the graphics engine. heh hind sight.
Oh for banners it was mostly the format the image had to follow, and the wav length, for the image I eventually figured it out by reading some docs. Though after a bit I upgraded to a 3d banner, very cool

And yeah I can totally relate to the programming being a bit different, especially since the code working on the Editor doesn't exactly mean it will execute the same way on hardware! I tend to do a TON of testing when adding new features, though for art it was also a bit of a struggle for me! This is a 2d project so it obviously uses 2d assets and an orthographic camera, my issue for the LONGEST time was that sprites weren't really the "correct" size in relation to the camera.
So whenever I had the camera move, the player and any other sprite in view had this jittery effect pixels stretched and shrank a LOT, it looked especially jarring on the player. Also it affected my Tilemaps, it was more notorious when the camera moved horizontally, where while it was moving, black gaps started showing up between tiles and it looks sooo baaaaad

I eventually figured it out and made a pixel perfect camera script where you input your desired pixels per unit that you are using (in my case it's 20 ppu), and BAM, any sprite now looks sharp as heck, almost like the original game!

It's all worth it tho, as you mentioned, I also freaking love this console. So any progress I can do at all, even if it takes me a while, is absolutely worth every minute.

And hey, maybe I get to learn something new about this system each time, you never know
 
  • Like
Reactions: Th3Travler
Oh for banners it was mostly the format the image had to follow, and the wav length, for the image I eventually figured it out by reading some docs. Though after a bit I upgraded to a 3d banner, very cool

And yeah I can totally relate to the programming being a bit different, especially since the code working on the Editor doesn't exactly mean it will execute the same way on hardware! I tend to do a TON of testing when adding new features, though for art it was also a bit of a struggle for me! This is a 2d project so it obviously uses 2d assets and an orthographic camera, my issue for the LONGEST time was that sprites weren't really the "correct" size in relation to the camera.
So whenever I had the camera move, the player and any other sprite in view had this jittery effect pixels stretched and shrank a LOT, it looked especially jarring on the player. Also it affected my Tilemaps, it was more notorious when the camera moved horizontally, where while it was moving, black gaps started showing up between tiles and it looks sooo baaaaad

I eventually figured it out and made a pixel perfect camera script where you input your desired pixels per unit that you are using (in my case it's 20 ppu), and BAM, any sprite now looks sharp as heck, almost like the original game!

It's all worth it tho, as you mentioned, I also freaking love this console. So any progress I can do at all, even if it takes me a while, is absolutely worth every minute.

And hey, maybe I get to learn something new about this system each time, you never know
Interesting! I do want to mess with a 2D game after my 3D adventure and this is very insightful!

I am curious what is your dev setup like? PC, Unity, Citra? Modded N3DS? Dev N3DS? Is_Snake? how are you debugging Unity in hardware is my question.

While I know a lot about Art I know jack to squat about debugging and general code environment setup.

Saludos de Buenos Aires! ;)
 
Last edited by Th3Travler,
  • Like
Reactions: CooingMaxito
Interesting! I do want to mess with a 2D game after my 3D adventure and this is very insightful!

I am curious what is your dev setup like? PC, Unity, Citra? Modded N3DS? Dev N3DS? Is_Snake? how are you debugging Unity in hardware is my question.

While I know a lot about Art I know jack to squat about debugging and general code environment setup.

Saludos de Buenos Aires! ;)
Good to know my experience has been helpful! Even if just a little bit

I do 90% of my work on my laptop, for testing I prefer using my modded old 3ds or old 2ds, cause I like to prioritize the game working and running in good conditions on old models. For quick testing on the console I use this program called 3ds simple cia converter so that I don't go through gm9 each time, though if I REALLY want to test quickly I boot it up on citra.

While testing for stuff I have a text component that reads the logs and shows them in case any errors come up or just logs that I manually put in a script. Thankfully I don't have to test absolutely everything by myself since I have a few testers that do that and report to me any issues, it's actually super handy having someone else playtest it, cause you never know what players will actually do when playing your game.

You always gotta think of something a player might think of doing that could potentially break your game and turn it inside out :rofl2:
 
  • Like
Reactions: Th3Travler
Ohh didn't know about this! "3ds simple cia converter" got to look into that - I was doing it the painful way with GM9.

Yeah I'm lightyears from needing testers, Hope I get there someday :) def the best way to do it! By the way make sure to do a 24 hour test run. That is you leave the game running without player input for 24 hours. It is a good way to tesk for memory leaks, and floatpoint errors. Time.delta time can fragment over time. When I was testing shaders I found out about this problem.
its an easy fix you just reset the clocks for the shaders. I have a feeling its probably the same with code execution.
Make sure you run this test on hardware - a PC is far more robust then a 3DS.

hum a component that reads the logs..you added your own console?...do you know where I could get some information on how to do that? I been stuck because I have no way to see a log ( I wrote my own profiling tools, simple stuff like memory usage and an FPS counter but oh man would I love to setup up a console to read errors....and connects via wifi, interfaces with unity and pushes live updates...I want a dev kit :sad:It will be easier to find an alien spaceship before I find one of those. I should make a poster of an IS_Snake box floating in the air with the words I Want to Believe. :rofl2:
 
Ohh didn't know about this! "3ds simple cia converter" got to look into that - I was doing it the painful way with GM9.

Yeah I'm lightyears from needing testers, Hope I get there someday :) def the best way to do it! By the way make sure to do a 24 hour test run. That is you leave the game running without player input for 24 hours. It is a good way to tesk for memory leaks, and floatpoint errors. Time.delta time can fragment over time. When I was testing shaders I found out about this problem.
its an easy fix you just reset the clocks for the shaders. I have a feeling its probably the same with code execution.
Make sure you run this test on hardware - a PC is far more robust then a 3DS.

hum a component that reads the logs..you added your own console?...do you know where I could get some information on how to do that? I been stuck because I have no way to see a log ( I wrote my own profiling tools, simple stuff like memory usage and an FPS counter but oh man would I love to setup up a console to read errors....and connects via wifi, interfaces with unity and pushes live updates...I want a dev kit :sad:It will be easier to find an alien spaceship before I find one of those. I should make a poster of an IS_Snake box floating in the air with the words I Want to Believe. :rofl2:
Yes! You should really check out 3ds simple cia converter, it's way faster for testing your builds on hardware :yay3ds:
I think the only """downside""" is that the app icon doesn't properly show up in the description when you're installing it via fbi, other than that it's super convenient, very painful to go through the gm9 process every time :sad:

Huh... I've never tried leaving the game running for long periods of time, I'll definitely try that in case something goes wrong.

Yee, it's kind of simple though, it does not output any 3ds errors, only the Unity logs. It practically gets the logs and writes them to a text component so you can see it on screen (doesn't save in any file, haven't played around with saving yet), you can also set the maximum lines of logs that will appear on the text component, just to avoid ending up with a massive text wall while testing

If you'd like the code I'll be glad to share, it's pretty short, only about 40 lines
 
hello, i am trying to develop an FPS game on 3ds, and I test the on it but sadly i ran into a problem, I have 3 cameras, 1 is the Main Camera, 2 is the Second Camera [for the gun to make it in another layer to make it not goes into the wall], 3 is the lower camera.

in unity everything is fine, and woks as expected.
in the emulatore also everything seems fine.
but in a real 3DS hardware the FPS is messed up, not sure why.

I ported the Objects from [ Easy FPS ] in unity assets and optimize it for N3DS

anyone can help?

Thanks 😊

here are the videos

Edit: I managed to fix it so never mind, thanks
 
Last edited by AliSd,
hello, i am trying to develop an FPS game on 3ds, and I test the on it but sadly i ran into a problem, I have 3 cameras, 1 is the Main Camera, 2 is the Second Camera [for the gun to make it in another layer to make it not goes into the wall], 3 is the lower camera.

in unity everything is fine, and woks as expected.
in the emulatore also everything seems fine.
but in a real 3DS hardware the FPS is messed up, not sure why.

I ported the Objects from [ Easy FPS ] in unity assets and optimize it for N3DS

anyone can help?

Thanks 😊

here are the videos

Edit: I managed to fix it so never mind, thanks
what was the problem?

Post automatically merged:

Yes! You should really check out 3ds simple cia converter, it's way faster for testing your builds on hardware :yay3ds:
I think the only """downside""" is that the app icon doesn't properly show up in the description when you're installing it via fbi, other than that it's super convenient, very painful to go through the gm9 process every time :sad:

Huh... I've never tried leaving the game running for long periods of time, I'll definitely try that in case something goes wrong.

Yee, it's kind of simple though, it does not output any 3ds errors, only the Unity logs. It practically gets the logs and writes them to a text component so you can see it on screen (doesn't save in any file, haven't played around with saving yet), you can also set the maximum lines of logs that will appear on the text component, just to avoid ending up with a massive text wall while testing

If you'd like the code I'll be glad to share, it's pretty short, only about 40 lines
Yes! Yes! I very much would! - being able to see errors on hardware is so vital!

also Merry Christmas and a happy New Year to you both!
 
Last edited by Th3Travler,
  • Like
Reactions: CooingMaxito
hello, i am trying to develop an FPS game on 3ds, and I test the on it but sadly i ran into a problem, I have 3 cameras, 1 is the Main Camera, 2 is the Second Camera [for the gun to make it in another layer to make it not goes into the wall], 3 is the lower camera.

in unity everything is fine, and woks as expected.
in the emulatore also everything seems fine.
but in a real 3DS hardware the FPS is messed up, not sure why.

I ported the Objects from [ Easy FPS ] in unity assets and optimize it for N3DS

anyone can help?

Thanks 😊

here are the videos

Edit: I managed to fix it so never mind, thanks
Please please please, whenever you have a weird issue that you managed to fix by yourself, share your methods so that others that may have the same problem are able to find a solution!! This is a must, especially with such undocumented software as Unity 3ds :wacko:

what was the problem?

Post automatically merged:


Yes! Yes! I very much would! - being able to see errors on hardware is so vital!

also Merry Christmas and a happy New Year to you both!
I'll attach the script here, it's super simple so if it's not exactly what you want then uhh, idk lmao
Merry Late Christmas! And New Year...

Damn I took a while to respond huh 💀
 

Attachments

Hold on... I have an idea.....
1736470113571.png

(I have all the assets, I may just need to rewrite the code)
UPDATE: Nevermind i dont know shit about javascript
 
Please please please, whenever you have a weird issue that you managed to fix by yourself, share your methods so that others that may have the same problem are able to find a solution!! This is a must, especially with such undocumented software as Unity 3ds :wacko:


I'll attach the script here, it's super simple so if it's not exactly what you want then uhh, idk lmao
Merry Late Christmas! And New Year...

Damn I took a while to respond huh 💀
ah its ok we all get busy and it was the holidays - Family 1st :)
Thank you for sharing this ill mess with it later tonight!
Post automatically merged:

Hold on... I have an idea.....
View attachment 479846
(I have all the assets, I may just need to rewrite the code)
UPDATE: Nevermind i dont know shit about javascript
:rofl:Use Chat GPT to help you read it. That's what I been doing with code. I don't let it write it but I do use it to read and help me understand Syntax. Fun game I had the 1st one on my tablet. love the profile pic Hahah
 
Hey guys I've been learning unity and C# and I have this dream sonic fan game I'd want to make on the 3ds. I notice this tutorial is from 2016 and wondered if it's still applicable in the big 25 lol. :D
 
link what exactly?
oh I see sorry misread - yeah it sorta applies. there are some YouTube videos that can do a better job of helping you setup the dev environment for unity.

I can't link it due to TOS but I can give you the keywords "instalar Unity para N3DS" I did a quick search and sadly the tutorial that was in English isn't there anymore. this one is in spanish but just follow what the video does. Welcome to the insanely hard to find info world of Unity for the 3DS lol

i recommend you download the video and keep it for your archives
 
Last edited by Th3Travler,
oh I see sorry misread - yeah it sorta applies. there are some YouTube videos that can do a better job of helping you setup the dev environment for unity.

I can't link it due to TOS but I can give you the keywords "instalar Unity para N3DS" I did a quick search and sadly the tutorial that was in English isn't there anymore. this one is in spanish but just follow what the video does. Welcome to the insanely hard to find info world of Unity for the 3DS lol
Hooray! lol
 
  • Like
Reactions: Th3Travler
привет, заранее извини за мой английский, но все та же проблема, моя мама заставила меня написать сюда
как решить проблему с неотрисовкой элементов пользовательского интерфейса в эмуляторе Citra, я так устал, я уже несколько дней ищу решения, но так и не нашел:nayps3:
Знімок екрана 2025-03-07 054920.png
Знімок екрана 2025-03-07 054850.png
 
привет, заранее извини за мой английский, но все та же проблема, моя мама заставила меня написать сюда
как решить проблему с неотрисовкой элементов пользовательского интерфейса в эмуляторе Citra, я так устал, я уже несколько дней ищу решения, но так и не нашел:nayps3:View attachment 489450View attachment 489449

привет, я вообще не говорю по-русски, но Google Translate хотя бы помогает хаха.как у вас настроен элемент пользовательского интерфейса? какие настройки инспектора?как он вложен в окно иерархии Unity?сколько VRAM у вас свободно в VRAM A и VRAM B? у вас всего 3 МБ на каждый экран. сколько кб занимает это изображение пользовательского интерфейса?надеюсь, Google нормально это переводит. Давайте начнем с этих вопросов. сделайте скриншоты настроек и окон проекта. Я хочу увидеть, где у вас находится элемент пользовательского интерфейса и какие у вас настройки изображения. :)
 
привет, я вообще не говорю по-русски, но Google Translate хотя бы помогает хаха.как у вас настроен элемент пользовательского интерфейса? какие настройки инспектора?как он вложен в окно иерархии Unity?сколько VRAM у вас свободно в VRAM A и VRAM B? у вас всего 3 МБ на каждый экран. сколько кб занимает это изображение пользовательского интерфейса?надеюсь, Google нормально это переводит. Давайте начнем с этих вопросов. сделайте скриншоты настроек и окон проекта. Я хочу увидеть, где у вас находится элемент пользовательского интерфейса и какие у вас настройки изображения. :)
Hi, I would like to first say thank you for at least answering, I still didn't quite understand what you were talking about at this point (how much VRAM do you have free in VRAM A and VRAM B? You only have 3 MB for each screen) and by the way hahahaha I just now realized that for some reason I didn't translate the previous post, sorry).
So about the size of the sprites, together these 2 sprites weigh 135kb ирархия.pngинспектор канвас.pngинспектор текстуры .png
Post automatically merged:

So, urgent news, I managed to make the texture display, but now the problem is different, this slider doesn't move anymore (but I'll solve that myself (well, that's what I think)):gun::nds:
 
Last edited by NINKAR,

Site & Scene News

Popular threads in this forum