how does one get started in DC programming?

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.
Post Reply
grand
DCEmu Newbie
DCEmu Newbie
Posts: 7
Joined: Sun Jun 04, 2017 4:18 am
Has liked: 0
Been liked: 0

how does one get started in DC programming?

Post by grand » Sun Jun 11, 2017 5:53 pm

as the question says what kind of programming skill set do you need to get stated? the tutorials on the main page were a little too advanced for me.. i'm a huge fan of the dreamcast and i'm amazed there is a community supporting this console! if one day i make some contribution, like one day making a game, that would be a dream come true. but the technical information here is a little over my head..what kind of preliminary knowledge do you need?
111
DCEmu Junior
DCEmu Junior
Posts: 42
Joined: Thu Jul 07, 2016 7:11 pm
Has liked: 0
Been liked: 6 times

Re: how does one get started in DC programming?

Post by 111 » Sun Jun 11, 2017 9:50 pm

Short answer: learn C(++).

Longer answer:
- programming for dreamcast (or any other "retro console") is very hard (next to impossible if you have no programming experience at all). Even building KOS on its own is not easy (if you use Windows), so you should start with that and see if you can handle it at least.

- There is no ready to use engines and IDEs, so you have to write everything yourself. You should try making a PC game first (2d platformer, perhaps?)

- Once you have finished your first game (at least a playable prototype), you might want to start with KGL (an OpenGL implementation for Dreamcast). It's far from perfect, but it's the simplest way to handle graphics.

- 3D programming is even more complicated. There is no hardware T&L on Dreamcast, so you have to implement all matrix functionality (including projection with perspective divide and mapping to viewport, frustum culling\clipping etc) and dynamic lighting yourself. It's somewhat comparable to writing you own software renderer (without rasterization part, you have PVR2 for that). If nothing of this makes sense to you - forget about 3D.

- use search. This place has a lot of useful info (including "getting started" threads like this)

- if you decide to give up with programming (which is understandable, nothing wrong with that), perhaps you should try modding existing game (if there are tools for it), or wait for something like this:
https://www.youtube.com/watch?v=zwv4r4nAIIE
grand
DCEmu Newbie
DCEmu Newbie
Posts: 7
Joined: Sun Jun 04, 2017 4:18 am
Has liked: 0
Been liked: 0

Re: how does one get started in DC programming?

Post by grand » Thu Jun 15, 2017 11:37 pm

111 wrote:Short answer: learn C(++).

Longer answer:
- programming for dreamcast (or any other "retro console") is very hard (next to impossible if you have no programming experience at all). Even building KOS on its own is not easy (if you use Windows), so you should start with that and see if you can handle it at least.

- There is no ready to use engines and IDEs, so you have to write everything yourself. You should try making a PC game first (2d platformer, perhaps?)

- Once you have finished your first game (at least a playable prototype), you might want to start with KGL (an OpenGL implementation for Dreamcast). It's far from perfect, but it's the simplest way to handle graphics.

- 3D programming is even more complicated. There is no hardware T&L on Dreamcast, so you have to implement all matrix functionality (including projection with perspective divide and mapping to viewport, frustum culling\clipping etc) and dynamic lighting yourself. It's somewhat comparable to writing you own software renderer (without rasterization part, you have PVR2 for that). If nothing of this makes sense to you - forget about 3D.

- use search. This place has a lot of useful info (including "getting started" threads like this)

- if you decide to give up with programming (which is understandable, nothing wrong with that), perhaps you should try modding existing game (if there are tools for it), or wait for something like this:
https://www.youtube.com/watch?v=zwv4r4nAIIE
i was able to follow along until you got to the 3d section.. frustum culling X_X.. totally lost.

okay beginning to understand a little bit now. the picture is clearer. right now unity is a popular option for getting started with game dev and that's where i wanted to start. eventually i hope i'll learn a thing or two that would be transferable to dc programming, although i wonder how easy it is to port a unity game, at least from the programming side of it. this is of course assuming that these two are comparables. guess in the meantime the other way to get involved is to support dc projects or developers on kickstarter
111
DCEmu Junior
DCEmu Junior
Posts: 42
Joined: Thu Jul 07, 2016 7:11 pm
Has liked: 0
Been liked: 6 times

Re: how does one get started in DC programming?

Post by 111 » Fri Jun 16, 2017 3:18 am

^
Any modern 3d game engine is a completely different world and unity is no exception. DC's pvr2 gpu is fixed function, while every modern gpu is programmable, you have no luxurious stuff like gigabytes of memory, managed runtimes (C#, Java) and so on.
grand wrote: although i wonder how easy it is to port a unity game, at least from the programming side of it.
gameplay mechanics is probably the only part you might consider (excluding physic engine).

Try to make something using legacy OpenGL (1.x). This way you can port your game using KGL, as I said earlier. NeHe tutorials is a good place to start.
And again, you are pretty much on your own with this. You best bet is to look for some legacy (pre-2005 or so) gamedev stuff, but it's somewhat hard to find these days. I am not aware of any decent books I could recommend as well (as for myself, I've learned a lot thanks to Sonic Adventure DX modding (how to deal with triangle strips, vertex colors etc) and a lot of trial and errors ).
Anyway, you are not going anywhere unless you actually start coding your game. Don't rush and don't be afraid to ask for help, but do not expect anyone to do the job for you. That's all I'd say for now.
User avatar
bogglez
Moderator
Moderator
Posts: 576
Joined: Sun Apr 20, 2014 9:45 am
Has liked: 0
Been liked: 0

Re: how does one get started in DC programming?

Post by bogglez » Sat Jun 17, 2017 4:03 pm

111 wrote:^
Try to make something using legacy OpenGL (1.x). This way you can port your game using KGL, as I said earlier. NeHe tutorials is a good place to start.
And again, you are pretty much on your own with this. You best bet is to look for some legacy (pre-2005 or so) gamedev stuff, but it's somewhat hard to find these days. I am not aware of any decent books I could recommend as well (as for myself, I've learned a lot thanks to Sonic Adventure DX modding (how to deal with triangle strips, vertex colors etc) and a lot of trial and errors ).
This is one of the greatest graphics/general programming programming books from 1997 (era of the DC, before graphics cards) by one of the greatest game programmers back then (worked on Quake for example) https://github.com/jagregory/abrash-black-book/releases
Wiki & tutorials: http://dcemulation.org/?title=Development
Wiki feedback: viewtopic.php?f=29&t=103940
My libgl playground (not for production): https://bitbucket.org/bogglez/libgl15
My lxdream fork (with small fixes): https://bitbucket.org/bogglez/lxdream
111
DCEmu Junior
DCEmu Junior
Posts: 42
Joined: Thu Jul 07, 2016 7:11 pm
Has liked: 0
Been liked: 6 times

Re: how does one get started in DC programming?

Post by 111 » Sat Jun 17, 2017 10:43 pm

bogglez wrote: This is one of the greatest graphics/general programming programming books from 1997 (era of the DC, before graphics cards) by one of the greatest game programmers back then (worked on Quake for example) https://github.com/jagregory/abrash-black-book/releases
Never seen it before, but it sure does look promising. Thanks for sharing.
Post Reply