New to Dreamcast homebrew, question about engines

If you have any questions on programming, this is the place to ask them, whether you're a newbie or an experienced programmer. Discussion on programming in general is also welcome. We will help you with programming homework, but we will not do your work for you! Any porting requests must be made in Developmental Ideas.
User avatar
Arvex
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 14
https://www.artistsworkshop.eu/meble-kuchenne-na-wymiar-warszawa-gdzie-zamowic/
Joined: Thu Mar 26, 2020 4:43 pm
Location: USA
Has thanked: 1 time
Been thanked: 2 times
Contact:

New to Dreamcast homebrew, question about engines

Post by Arvex »

Hello,

I've been considering developing my next homebrew game for the Dreamcast after I finish my current game and wanted to ask about engines and other resources you would recommend for me to look into. I found a Reddit post from two years ago that had a bit of a getting started guide, but half of the links didn't work anymore. I got KallistiOS installed on my Linux box a few days ago, but then found out from someone else KallistiOS is better suited to 2D games, so I wanted to ask here in case any new engines have become available since the time of that post.

Factors that seem relevant:
  • Most of my development experience is with C and C#, though I'm in the process of learning C++ for Unreal Engine 4 if that opens up any engine options.
  • I need the engine to support Blender 2.49b 3D models or a format it can reliably export to (long story why I still use a nearly 11 year old build of Blender.)
  • The game I have in mind is a futuristic 3D racing game akin to Star Wars: Episode I Racer
  • Online play is something I would like to explore. At the very least, an online leaderboard for time trials and LAN multiplayer so people can set up a VPN tunnel to connect if they want to.
  • Depending on the scope I settle on, I'm considering selling this game in some capacity (even if it only ends up being a fancy physical edition to put on display,) so I would need to make sure whatever engine I pick allows for commercial development.
|darc|
DCEmu Webmaster
DCEmu Webmaster
Posts: 16373
Joined: Wed Mar 14, 2001 6:00 pm
Location: New Orleans, LA
Has thanked: 103 times
Been thanked: 90 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by |darc| »

It's thinking...
User avatar
Arvex
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 14
Joined: Thu Mar 26, 2020 4:43 pm
Location: USA
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Arvex »

I took a quick look at Simulant, but I think I would prefer to work with something that's a little further along in development for the time being (sound is kind of important for me.) I also need to finish learning C++ which I only recently started. It does look promising, especially with how it supports Windows and Linux as well as the Dreamcast. I will keep an eye on it for future projects.

I think I'll mess around with KOS for now to get some experience with it.
User avatar
Protofall
DCEmu Freak
DCEmu Freak
Posts: 78
Joined: Sun Jan 14, 2018 8:03 pm
Location: Emu land
Has thanked: 21 times
Been thanked: 18 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Protofall »

"Online play is something I would like to explore. At the very least, an online leaderboard for time trials and LAN multiplayer so people can set up a VPN tunnel to connect if they want to."
I too would like someone who knows more about KOS to comment on the possibility of it. There's not really a good demo for this stuff so idk how possible it is.

For a 3D dev engine Simulant is the only choice right now. Here's the list of all engines I know about and their 3D capabilities and open/closed source-ness:
  • Elysian Shadows Engine: Focuses on "Next gen 2D" which is in a 3D world. Kinda like Octopath traveller. Has been said one day it will be open source, but not for the foreseeable future
  • nuQuake: A port of Quake 1 that uses hardware rendering. One comercial game is using this engine (Rizzo's Island). Do note that older versions of Rizzo's Island used a different port of quake which was much slower so check the latests videos/cdis. Open source
  • radquake: I don't know too much about it, but its another quake engine
  • GLdc: Not an engine, but a port of OpenGL 1.X to Dreamcast. MrNeo240's framework, nuQuake and Simulant all use it
There are other engines, but some of them are always going to be closed source so I won't bother mentioning them
Moving Day: A clone of Dr Mario with 8-player support <https://dcemulation.org/phpBB/viewtopic ... 4&t=105389>
A recreation of Minesweeper for the Dreamcast <viewtopic.php?f=34&t=104820>

Twitter <https://twitter.com/ProfessorToffal>
YouTube (Not much there, but there are a few things) <https://www.youtube.com/user/TrueMenfa>
User avatar
Arvex
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 14
Joined: Thu Mar 26, 2020 4:43 pm
Location: USA
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Arvex »

I thought there were more options for 3D engines, I'm guessing there are a bunch of older 3D engines out there that aren't being actively developed/supported anymore that led me to believe that. If I was a bit more confident in my programming ability and knowledge of the Dreamcast hardware, I might have tried to offer assistance on developing Simulant. I'll probably just work on UE4 to practice C++ or make 2D games on the Dreamcast while keeping an eye on Simulant's progress. I was originally planning to make this particular game in Unreal Engine 4 before deciding to explore Dreamcast homebrew.

Elysian Shadows was something that I had seen before, but I don't know a timeframe on that. I saw that the engine would be released when the game came out.

Funny thing, a few weeks ago I was going through some old CDs and DVDs and found a burned disc I had labeled as DC Dev R2. I don't remember what that is, don't even know if I burned it for Linux or Windows... This isn't the first time I looked at developing homebrew on the Dreamcast (though I recall that I had burned that disc before I really learned to program and had been meaning to learn.) This is just my first serious attempt.
User avatar
Protofall
DCEmu Freak
DCEmu Freak
Posts: 78
Joined: Sun Jan 14, 2018 8:03 pm
Location: Emu land
Has thanked: 21 times
Been thanked: 18 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Protofall »

Arvex wrote: Mon Mar 30, 2020 11:14 am I thought there were more options for 3D engines, I'm guessing there are a bunch of older 3D engines out there that aren't being actively developed/supported anymore that led me to believe that. If I was a bit more confident in my programming ability and knowledge of the Dreamcast hardware, I might have tried to offer assistance on developing Simulant. I'll probably just work on UE4 to practice C++ or make 2D games on the Dreamcast while keeping an eye on Simulant's progress. I was originally planning to make this particular game in Unreal Engine 4 before deciding to explore Dreamcast homebrew.

Elysian Shadows was something that I had seen before, but I don't know a timeframe on that. I saw that the engine would be released when the game came out.

Funny thing, a few weeks ago I was going through some old CDs and DVDs and found a burned disc I had labeled as DC Dev R2. I don't remember what that is, don't even know if I burned it for Linux or Windows... This isn't the first time I looked at developing homebrew on the Dreamcast (though I recall that I had burned that disc before I really learned to program and had been meaning to learn.) This is just my first serious attempt.
There probably are older engines out there, I just don't know them. Also to add to the list there is "OpenBor", but I know nothing about it aside from it being a 2D engine. But if you want to use something like Simulant one day they you'd probably need to get familiar with C++ before then so UE4 seems like a good idea for the time being.

Yeah, ES's progress is a bit of a mystery atm. I believe it will get released one day, but I've got no idea how long that will be.
Moving Day: A clone of Dr Mario with 8-player support <https://dcemulation.org/phpBB/viewtopic ... 4&t=105389>
A recreation of Minesweeper for the Dreamcast <viewtopic.php?f=34&t=104820>

Twitter <https://twitter.com/ProfessorToffal>
YouTube (Not much there, but there are a few things) <https://www.youtube.com/user/TrueMenfa>
|darc|
DCEmu Webmaster
DCEmu Webmaster
Posts: 16373
Joined: Wed Mar 14, 2001 6:00 pm
Location: New Orleans, LA
Has thanked: 103 times
Been thanked: 90 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by |darc| »

Elysian Shadows will be released one day in my opinion... I know for sure it's still being worked on as I talk to Falco frequently. But I wouldn't hold my breath for that to be any time soon.

DC Dev R2 was a disc by lyingwake that had development tools and such for Windows platform. It's very outdated now, I'd look to https://www.dreamsdk.org/ if you're still interested in Windows dev.
It's thinking...
User avatar
Arvex
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 14
Joined: Thu Mar 26, 2020 4:43 pm
Location: USA
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Arvex »

I wasn't sure if there was a connection between DC Dev R2 and DreamSDK or not. I think I found my way to DreamSDK when I was originally looking into what that disc was (part of what sparked the renewed interest in Dreamcast development.)

I did download DreamSDK to look into it earlier. Would DreamSDK be able to manage a 3D game with decent performance? 60 FPS is a nice goal, but I know that isn't always going to happen when an inexperienced developer gets his hands on a development tools. (Fun fact: The Game Boy runs at 60 FPS.)
User avatar
BB Hood
DC Developer
DC Developer
Posts: 189
Joined: Fri Mar 30, 2007 12:09 am
Has thanked: 41 times
Been thanked: 10 times

Re: New to Dreamcast homebrew, question about engines

Post by BB Hood »

DreamSDK just helps you get setup with DC development. You're still stuck with the same options that Protofall posted.
User avatar
Arvex
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 14
Joined: Thu Mar 26, 2020 4:43 pm
Location: USA
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Arvex »

Alright.

I've seen a few 3D engines for the Dreamcast that look like they haven't been touched in a long time, but are still available on Sourceforge. I might tinker with some of them a little bit while I wait on Simulant to get my feet wet. Or, if I find one I like, maybe I'll try working with one of those outdated engines and modify it as needed.

The first one I found was Iris3D, but it looks like someone else continued work on it as Holly3D. I'll see where that leads me or look at other unsupported engines. I'm no stranger to working with outdated toolsets that aren't supported (or are sometimes even unfinished.)
mrneo240
DCEmu Freak
DCEmu Freak
Posts: 86
Joined: Wed Mar 14, 2018 12:22 am
Has thanked: 16 times
Been thanked: 19 times

Re: New to Dreamcast homebrew, question about engines

Post by mrneo240 »

What would your list of requirements be from a engine?

I'm working on Integrity engine currently and would love to know what would drive adoption.
User avatar
Arvex
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 14
Joined: Thu Mar 26, 2020 4:43 pm
Location: USA
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Arvex »

I'm looking for something that can handle a high speed* futuristic 3D racing game. Something like Star Wars: Racer or the F-Zero series (minus upside down segments,) with with a focus on a steady 60fps framerate. I know that might be a lot to ask for from that generation of hardware, but I tend to keep my models on the low poly-size while finding a style that doesn't need high resolution textures. I'm going to have to dig into KallistiOS's documentation to see if it is able to use the Dreamcast's modem and LAN adapter because I've settled on online play being a big part of this project.

Native support for Blender 3D models would be nice, or at least support for something 2.49b can export to.

If the Dreamcast isn't able to handle this project, I'll just push it to Unreal Engine 4 and adapt one of my other ideas to the Dreamcast.



*How fast? I don't know yet. My plan is to set up a prototype where speed and handling variables can be adjusted in-game and just keep increasing the speed until either the hardware can't keep up or the vehicle becomes a nightmare to handle no matter how much you increase the control variables.
mrneo240
DCEmu Freak
DCEmu Freak
Posts: 86
Joined: Wed Mar 14, 2018 12:22 am
Has thanked: 16 times
Been thanked: 19 times

Re: New to Dreamcast homebrew, question about engines

Post by mrneo240 »

You can use either network peripheral definitely.

Anything can handle that, that's not really a specific feature.

It would never make sense to load a .blend. Export to something friendlier
User avatar
Arvex
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 14
Joined: Thu Mar 26, 2020 4:43 pm
Location: USA
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Arvex »

Is your engine going to use C or C++? I'm more familiar with C, but I have been working on picking up C++ for Unreal Engine.

I know the version of Blender I use can cleanly export .obj as I've imported them into Unreal Engine 4 in the past without issue. So, as long as .obj is supported. I know Blender can export .lwo (Lightwave) and .3DS (3D studio), but don't know the quality of those exports as I've never successfully imported them into other tools.
mrneo240
DCEmu Freak
DCEmu Freak
Posts: 86
Joined: Wed Mar 14, 2018 12:22 am
Has thanked: 16 times
Been thanked: 19 times

Re: New to Dreamcast homebrew, question about engines

Post by mrneo240 »

Arvex wrote: Sun Apr 12, 2020 1:56 pm Is your engine going to use C or C++? I'm more familiar with C, but I have been working on picking up C++ for Unreal Engine.
It's pure C, it can load obj sure but something more Dreamcast oriented might be better at some point.
b0b
DCEmu Fast Newbie
DCEmu Fast Newbie
Posts: 20
Joined: Thu Mar 15, 2007 12:04 pm
Has thanked: 0
Been thanked: 1 time

Re: New to Dreamcast homebrew, question about engines

Post by b0b »

I'm bored because of corona-time, so I decided to comment.
Please don't take it the wrong way, if something *might* sound rude - it's definitely *not* my intention!


have you programmed games before? how familiar are you with C? have you ever implemented network functionality in games?

Arvex wrote: Sun Mar 29, 2020 2:25 pm I've been considering developing my next homebrew game for the Dreamcast after I finish my current game and wanted to ask about engines and other resources you would recommend for me to look into.
the most *feature complete* engine in the open-source community for dreamcast is the Quake1-engine. if it doesn't fit you - good luck. that's so much for engines. the others new ones like Simulant are in early phases (and there is absolutely nothing wrong in it) - they are programmed by some user to fit the said users need first. for Simulant it would be Swirling Blades: Desert Thunder - the engine will follow the accompanied game more or less, means whatever he needs for his game, will find it's way into the engine... and that's also the proper way to do it.
there is no holly grail kinda engine that makes everything ;)

more appropriate questions would be - what is an engine and what does it do?
there are no drag'n'drop click-here editor driven suites like unity or unreal on Dreamcast
I found a Reddit post from two years ago that had a bit of a getting started guide, but half of the links didn't work anymore. I got KallistiOS installed on my Linux box a few days ago, but then found out from someone else KallistiOS is better suited to 2D games, so I wanted to ask here in case any new engines have become available since the time of that post.
yes and no.
Because KallistiOS has no real rendering engine kinda stuff build-in - instead it provides the functionality for you to build one yourself - leaves you with the task of writing the full renderer. So you need to know the advanced math behind it. And how clipping works. As the math for 2D is simpler - and you can skip near-plane clipping entirely - it makes it easier.
And if you know all the math behind the 3D stuff - implement it in the fastest way possible (<- yeah this step here -go go power rangers-)
There was a lot of work done on the OpenGL support for DC - but honestly, as *okay* as it is - it's not the fastest way possible. It is easier to start with if you are already familiar with (old) OpenGL... You want speed? -> get good in SH4-assembler...
[*]Most of my development experience is with C and C#, though I'm in the process of learning C++ for Unreal Engine 4 if that opens up any engine options.
if you want to stick with Dreamcast:
forget about C#. IF you WANT to learn C++, sure go ahead, learn it. If you dive into Unreal Engine 4, keep in mind you won't be using any of it for Dreamcast related things ;)

let's say you learned C++ with all (okay *most* or *some*) of it's "features" and want to start on dreamcast:
forget nearly everything you learned on C++.

*personally* i would stick with C. (but hey I do the same also for non-DC stuff where I don't have to touch C++ at all - it is a horrible language, with every standard its clusterf*ckery becomes bigger and bigger IMO)

keep in mind that the compiler support on DC is not that flexible. And it is buggy. Sh4 is not a priority for GCC. forget about newer C++ standards for this one

treat the dreamcast as what it actually is - a low power, really old hardware embedded system with really constrained memory limitations
[*]I need the engine to support Blender 2.49b 3D models or a format it can reliably export to (long story why I still use a nearly 11 year old build of Blender.)
thats a non-feature. blender is very friendly with it's api and python support. come up with a good internal file format what suits you best and write and exporter for it.

OBJ, 3DS, LWO, FBX, Collada etc are interim formats - meant for exchanging models (or scenery) between 3D-graphic-applications - these there never meant to be used in games directly.
[*]Online play is something I would like to explore. At the very least, an online leaderboard for time trials and LAN multiplayer so people can set up a VPN tunnel to connect if they want to.
online leaderboards are very easy to do. actual online multiplayer - not so much. it is a pain in the *** to get right...
[*]Depending on the scope I settle on, I'm considering selling this game in some capacity (even if it only ends up being a fancy physical edition to put on display,) so I would need to make sure whatever engine I pick allows for commercial development.
most game engines would allow commercial distribution. make sure what other obligations come with them
for example: source code release for GPL licences (<- that would include Quake1)

Arvex wrote: Tue Mar 31, 2020 5:09 pm I've seen a few 3D engines for the Dreamcast that look like they haven't been touched in a long time, but are still available on Sourceforge. I might tinker with some of them a little bit while I wait on Simulant to get my feet wet. Or, if I find one I like, maybe I'll try working with one of those outdated engines and modify it as needed.

The first one I found was Iris3D, but it looks like someone else continued work on it as Holly3D. I'll see where that leads me or look at other unsupported engines. I'm no stranger to working with outdated toolsets that aren't supported (or are sometimes even unfinished.)
nah, skip them. they are old, unmaintained and a pain to get working. they were never *good* in the first place. that i mean by that - never feature complete (far from it), slow and buggy. Some of them might have had some interesting ideas behind the scenes, I wouldn't argue that :)

nearly all of them used the OpenGL implementation for rendering, and the old implementations were really crappy.
The newer ones are much much better.

in my opinion - save your time on Holly3D etc.
User avatar
ThePerfectK
Insane DCEmu
Insane DCEmu
Posts: 147
Joined: Thu Apr 27, 2006 10:15 am
Has thanked: 27 times
Been thanked: 35 times

Re: New to Dreamcast homebrew, question about engines

Post by ThePerfectK »

To piggy off the last (really good) post, some additional information:

If you are looking to do fast 3D math, as the above poster said, you probably want to just do the math by hand in the SH4 using the opcodes available. Good news is you can sorta avoid inline assembly by generous use of MoopTheHedgehog's awesome HAL. His fast math header defines a ton of very, very useful macros to hide the inline assembly. I've been playing with his SIMD macros here lately, and they are extremely useful.

Regarding model formats, this might sound like an odd recommendation, but there is a tool called Noesis:

https://richwhitehouse.com/index.php?co ... ojects.php

I use this tool for a specific reason: it'll convert a modern OBJ 3D model into the ancient MD2 model format. This is the format that Quake 2 used, that blender no longer supports. This is done for a reason: implementing MD2 support is extremely easy compared to other model formats. Most of the format is just figuring out how to interpolate between poses mathematically. There are lots of tutorials online for doing this. This program by Rich Whitehouse uses std C library calls exclusively, so even though it's technically a "windows only" application, it runs just fine in WINE under linux, which is where I use it.
Still Thinking!~~
User avatar
Arvex
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 14
Joined: Thu Mar 26, 2020 4:43 pm
Location: USA
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Arvex »

ThePerfectK wrote: Mon Apr 13, 2020 3:25 am To piggy off the last (really good) post, some additional information:

If you are looking to do fast 3D math, as the above poster said, you probably want to just do the math by hand in the SH4 using the opcodes available. Good news is you can sorta avoid inline assembly by generous use of MoopTheHedgehog's awesome HAL. His fast math header defines a ton of very, very useful macros to hide the inline assembly. I've been playing with his SIMD macros here lately, and they are extremely useful.

Regarding model formats, this might sound like an odd recommendation, but there is a tool called Noesis:

https://richwhitehouse.com/index.php?co ... ojects.php

I use this tool for a specific reason: it'll convert a modern OBJ 3D model into the ancient MD2 model format. This is the format that Quake 2 used, that blender no longer supports. This is done for a reason: implementing MD2 support is extremely easy compared to other model formats. Most of the format is just figuring out how to interpolate between poses mathematically. There are lots of tutorials online for doing this. This program by Rich Whitehouse uses std C library calls exclusively, so even though it's technically a "windows only" application, it runs just fine in WINE under linux, which is where I use it.
I'll look into that HAL, that sounds like it would be preferable to touching assembly.


As it turns out, the older version of Blender I use, 2.49b, can export MD2 files. I have never tried it before, so I don't know if it will work perfectly, but I will test that later. If not, that Noesis tool sounds like it will be quite helpful.
b0b wrote: Sun Apr 12, 2020 11:39 pm
I've written a few games with C. I'm more experienced with C#, but I had no expectation of using that language on the Dreamcast. I haven't written any kind of networking for games outside of a few Unity prototypes. That was something I was planning to learn over the course of this project.

I will see what I can do with the Quake I engine. At least until Simulant reaches a point where I might be more tempted to use it.

I am aware that the Dreamcast is older hardware and see that as a challenge. I know it's not a powerhouse, even among its own generation. I'm basing my expectations solely on games I've actually played on the Dreamcast. Maybe 60 FPS with such a game is a bit optimistic, but I won't know until I try.
mrneo240
DCEmu Freak
DCEmu Freak
Posts: 86
Joined: Wed Mar 14, 2018 12:22 am
Has thanked: 16 times
Been thanked: 19 times

Re: New to Dreamcast homebrew, question about engines

Post by mrneo240 »

I assure you GLdc is faster than most attempts at pvr
User avatar
Arvex
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 14
Joined: Thu Mar 26, 2020 4:43 pm
Location: USA
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: New to Dreamcast homebrew, question about engines

Post by Arvex »

I don't doubt it would be faster.

Another benefit to using an outdated version of Blender, I am able to export .M2 files without issue. I just tested it and was able to open the exported M2 file in Noesis, which PerfectK had linked above.
Post Reply