www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - OpenGL Examples in D and a birth of a New Initiative

reply Andrej Mitrovic via Digitalmars-d-announce writes:
I am starting an initiative for everyone interested in D game
development by creating the github organization d-gamedev-team[1].

The first project hosted here is the the freshly created
opengl-tutorials[2] project. This is a long-term project that aims to
collect as many modern OpenGL examples ported to D or even provide new
examples created from scratch in D. All the examples should be easy to
build, provided you have a fresh D compiler and a recent version of
the dub[3] dependency manager / builder tool.

Currently the project contains an almost-complete port of the samples
contained on the website opengl-tutorial.org[4] - which cover OpenGL
v3.3x and were created by Sam Hocevar. The D examples are not straight
ports, they have been D-ified and may contain more features than their
original counterparts. They also use 3rd-party D OpenGL wrappers to
avoid a lot of scaffolding work typical of OpenGL applications.

Thanks to dub[3] you won't have to manually install the D
dependencies. However you may have to install some C/C++ 3rd-party
library dependencies, such as GLFW, SDL2, SDL2 Image, and potentially
other libraries depending on the ones the samples require. The
dependencies are documented in the project's readme[5].

Additional OpenGL example ports are planned and some are already in
progress but have not yet been pushed upstream. See the
opengl-tutorials[2] github repo for a list of ports which are in
progress and a list of desired ports.

If you wish to contribute with your own ports or with brand new D
OpenGL examples don't hesitate to make a pull request. I want the
d-gamedev-team organization to gradually grow and have it host as many
useful projects, whether it be libraries, tools, tutorials, tips &
tricks, assets, or anything else related to D game development.

I am strongly interested in game development in D, and although I'm at
a starting stage I'm very much committed to working on this project to
the best of my abilities. Hopefully in a few years we'll see some
major titles made entirely in D. But before that can happen we have to
make a collective push to bring D to a higher stage where it's
acceptable and viable to game developers, whether it be through
language support ( nogc/allocators) or library and tooling support.

We'll see where this goes, but I'm very excited for the future! Cheers. :o)

[1] : https://github.com/d-gamedev-team
[2] : https://github.com/d-gamedev-team/opengl-tutorials
[3] : http://code.dlang.org/download
[4] : http://opengl-tutorial.org/
[5] : https://github.com/d-gamedev-team/opengl-tutorials/tree/master/ports/opengl-tutorial.org
May 14 2014
next sibling parent reply "Dicebot" <public dicebot.lv> writes:
On Wednesday, 14 May 2014 at 19:32:22 UTC, Andrej Mitrovic via 
Digitalmars-d-announce wrote:
 I am starting an initiative for everyone interested in D game
 development by creating the github organization 
 d-gamedev-team[1].
 ...
 [1] : https://github.com/d-gamedev-team
 [2] : https://github.com/d-gamedev-team/opengl-tutorials
 [3] : http://code.dlang.org/download
 [4] : http://opengl-tutorial.org/
 [5] : 
 https://github.com/d-gamedev-team/opengl-tutorials/tree/master/ports/opengl-tutorial.org
I think it is a very good initiative to start creating community teams of D hackers interested in specific domains. Can be beneficial for both spreading the information and lobbying needed changes in D/Phobos. Game dev is not my area of interest but I wish you best luck :)
May 15 2014
parent Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/15/14, Dicebot via Digitalmars-d-announce
<digitalmars-d-announce puremagic.com> wrote:
 I think it is a very good initiative to start creating community
 teams of D hackers interested in specific domains. Can be
 beneficial for both spreading the information and lobbying needed
 changes in D/Phobos.
Yeah. I plan on writing some blog posts as well to get things going.
 Game dev is not my area of interest but I wish you best luck :)
Thanks!
May 16 2014
prev sibling parent reply "Colden Cullen" <ColdenCullen gmail.com> writes:
This is such a great effort to see! I’m currently the lead engine
programmer at Circular Studios[1], working on the Dash Engine[2].
I just posted some more info about us in D.announce[3]. I think
that gfm is super cool, and I can totally see us starting to use
that for object oriented wrappers around stuff we’re currently
using (FreeImage, AssImp, OpenGL, etc.). We’re definitely
interested in contributing anything we can going forward.

[1] http://circularstudios.com/
[2] http://github.com/Circular-Studios/Dash
[3]
http://forum.dlang.org/thread/qnaqymkehjvopwxwvwig forum.dlang.org
May 19 2014
next sibling parent reply Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/19/14, Colden Cullen via Digitalmars-d-announce
<digitalmars-d-announce puremagic.com> wrote:
 This is such a great effort to see!
I'm liking the enthusiasm! Btw, I'm currently porting the Box2D physics engine to D. I've already ported Chipmunk a while ago, but Box2D has its own benefits. E.g. it has continuous collision detection which allows bullet-style physics without worry about physical shapes "disappearing from the screen". Box2D is also a C++ library, whereas Chipmunk is a C library. I'm close to being done. I have some debugging to do and the complete test-suite is almost entirely ported.
May 19 2014
parent reply "Kiith-Sa" <kiithsacmp gmail.com> writes:
On Monday, 19 May 2014 at 20:44:59 UTC, Andrej Mitrovic via 
Digitalmars-d-announce wrote:
 On 5/19/14, Colden Cullen via Digitalmars-d-announce
 <digitalmars-d-announce puremagic.com> wrote:
 This is such a great effort to see!
I'm liking the enthusiasm! Btw, I'm currently porting the Box2D physics engine to D. I've already ported Chipmunk a while ago, but Box2D has its own benefits. E.g. it has continuous collision detection which allows bullet-style physics without worry about physical shapes "disappearing from the screen". Box2D is also a C++ library, whereas Chipmunk is a C library. I'm close to being done. I have some debugging to do and the complete test-suite is almost entirely ported.
Box2D would be awesome. I'm about to start a project that would greatly benefit from good 2D physics (I used simple AABB till now simply because physics is too much of a PITA) How do you port 20kloc in 2 days? D:YAML took me months (although it was python w/ some dynamic classes)
May 19 2014
next sibling parent reply "Colden Cullen" <ColdenCullen gmail.com> writes:
On Monday, 19 May 2014 at 21:08:25 UTC, Kiith-Sa wrote:
 Box2D would be awesome. I'm about to start a project that would 
 greatly benefit from good 2D physics (I used simple AABB till 
 now simply because physics is too much of a PITA)

 How do you port 20kloc in 2 days?
 D:YAML took me months (although it was python w/ some dynamic 
 classes)
Oh you made D:YAML? I personally would like to thank you for providing us with an awesome library which we use for all non-art data loading. It's been really good to us.
May 19 2014
parent reply "Kiith-Sa" <kiithsacmp gmail.com> writes:
On Monday, 19 May 2014 at 21:10:02 UTC, Colden Cullen wrote:
 On Monday, 19 May 2014 at 21:08:25 UTC, Kiith-Sa wrote:
 Box2D would be awesome. I'm about to start a project that 
 would greatly benefit from good 2D physics (I used simple AABB 
 till now simply because physics is too much of a PITA)

 How do you port 20kloc in 2 days?
 D:YAML took me months (although it was python w/ some dynamic 
 classes)
Oh you made D:YAML? I personally would like to thank you for providing us with an awesome library which we use for all non-art data loading. It's been really good to us.
Is performance not a problem so far? I did avoid unnecessary allocations but it still does use the GC quite a bit (I plan to eventually change that and add some other optimizations but I'd like std.allocator to be in phobos first and I didn't find it too slow for my own projects yet).
May 19 2014
parent "Colden Cullen" <ColdenCullen gmail.com> writes:
On Monday, 19 May 2014 at 21:19:12 UTC, Kiith-Sa wrote:
 Is performance not a problem so far?
 I did avoid unnecessary allocations but it still does use the 
 GC quite a bit (I plan to eventually change that and add some 
 other optimizations but I'd like std.allocator to be in phobos 
 first and I didn't find it too slow for my own projects yet).
No, not at all. Aside from the debug-only auto reloads, which only reload changed files, we only read from the YAML at initialization, which we haven't even thought about optimizing yet. So the short answer is no, it's been plenty fast.
May 19 2014
prev sibling next sibling parent reply Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/19/14, Kiith-Sa via Digitalmars-d-announce
<digitalmars-d-announce puremagic.com> wrote:
 Box2D would be awesome. I'm about to start a project that would
 greatly benefit from good 2D physics (I used simple AABB till now
 simply because physics is too much of a PITA)
Excellent. Expect the port to be done within a day or two. I just have some runtime bugs to squash.
 How do you port 20kloc in 2 days?
Past experience helps I guess. I ported Chipmunk (10K) mostly over night. I've ported lots of codebases already, so this has become sort of a second-nature to me. :P
May 19 2014
parent reply "francesco cattoglio" <francesco.cattoglio gmail.com> writes:
On Monday, 19 May 2014 at 21:39:18 UTC, Andrej Mitrovic via 
Digitalmars-d-announce wrote:
 On 5/19/14, Kiith-Sa via Digitalmars-d-announce
 How do you port 20kloc in 2 days?
Past experience helps I guess. I ported Chipmunk (10K) mostly over night. I've ported lots of codebases already, so this has become sort of a second-nature to me. :P
Port? Or wrap? Because 10K in < 10 hours feels crazy. Even worse than crazy! :D BTW: thank you so much for imgui, I discovered it yesterday and I'm already using it: it is so simple it is awesome, even in early alpha stage! It IS the most immediate gui I've ever used ;)
May 20 2014
next sibling parent Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/21/14, francesco cattoglio via Digitalmars-d-announce
<digitalmars-d-announce puremagic.com> wrote:
 Port? Or wrap? Because 10K in < 10 hours feels crazy. Even worse
 than crazy! :D
I think after all I might just be remembering it wrong. And in fact git log will tell me otherwise. Let's see: $ git log --reverse --pretty=format:"%ad %s" Wed Oct 30 17:13:59 2013 +0100 Initial commit. Fri Nov 1 01:54:24 2013 +0100 Ported most code. Of course I didn't work non-stop on it (humans have to sleep sometime). If you stitch the hours up together I think the initial port was done fairly quickly. But it wasn't a hard codebase to port, it's a C codebase. Porting C++ can be harder because you have things like C++ classes used by value which have their default ctor called, and this doesn't translate easily to D's structs.
 BTW: thank you so much for imgui, I discovered it yesterday and
 I'm already using it: it is so simple it is awesome, even in
 early alpha stage! It IS the most immediate gui I've ever used ;)
Cool, glad it works for you!
May 20 2014
prev sibling parent Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/21/14, francesco cattoglio via Digitalmars-d-announce
<digitalmars-d-announce puremagic.com> wrote:
 BTW: thank you so much for imgui, I discovered it yesterday and
 I'm already using it: it is so simple it is awesome, even in
 early alpha stage! It IS the most immediate gui I've ever used ;)
Btw I've added a memory-management section now, in case you ever run into issues like garbled text being displayed on the screen (I know I did): https://github.com/d-gamedev-team/dimgui#memory-management
May 21 2014
prev sibling next sibling parent Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/19/14, Andrej Mitrovic <andrej.mitrovich gmail.com> wrote:
 Excellent. Expect the port to be done within a day or two. I just have
 some runtime bugs to squash.
In the meantime here's a teaser: http://i.imgur.com/HQSNhO2.png The test-suite uses IMGUI which I've recently ported to D as well, so you can use it right away: https://github.com/d-gamedev-team/dimgui http://code.dlang.org/packages/dimgui
May 19 2014
prev sibling parent reply Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/19/14, Kiith-Sa via Digitalmars-d-announce
<digitalmars-d-announce puremagic.com> wrote:
 Box2D would be awesome. I'm about to start a project that would
 greatly benefit from good 2D physics (I used simple AABB till now
 simply because physics is too much of a PITA)
FYI the initial port is hosted online now, although I'm still cleaning it up and have to make sure it all runs properly at runtime. I found a few bugs (e.g. passing static arrays by value) which I've fixed, but until I have the entire test-suite ported I can't guarantee the bugs are all squashed. It should become pretty stable in a few days. In the meantime you can follow the development here: https://github.com/d-gamedev-team/dbox
May 21 2014
parent reply "Vova616" <vova616 gmail.com> writes:
On Wednesday, 21 May 2014 at 07:50:58 UTC, Andrej Mitrovic via 
Digitalmars-d-announce wrote:
 On 5/19/14, Kiith-Sa via Digitalmars-d-announce
 <digitalmars-d-announce puremagic.com> wrote:
 Box2D would be awesome. I'm about to start a project that would
 greatly benefit from good 2D physics (I used simple AABB till 
 now
 simply because physics is too much of a PITA)
FYI the initial port is hosted online now, although I'm still cleaning it up and have to make sure it all runs properly at runtime. I found a few bugs (e.g. passing static arrays by value) which I've fixed, but until I have the entire test-suite ported I can't guarantee the bugs are all squashed. It should become pretty stable in a few days. In the meantime you can follow the development here: https://github.com/d-gamedev-team/dbox
Whoa you are awesome, I will use it with my experimental engine for sure I'm still stuck on the design but here it is http://code.dlang.org/packages/batch-engine
May 21 2014
parent Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/21/14, Vova616 via Digitalmars-d-announce
<digitalmars-d-announce puremagic.com> wrote:
 Whoa you are awesome, I will use it with my experimental engine
 for sure
 I'm still stuck on the design but here it is
 http://code.dlang.org/packages/batch-engine
Cool stuff, will have a look later!
May 21 2014
prev sibling next sibling parent reply Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/19/14, Andrej Mitrovic <andrej.mitrovich gmail.com> wrote:
 Btw, I'm currently porting the Box2D physics engine to D.
For a second there I thought Dash was a 2D game engine, but it's a 3D one, which is awesome! 2D physics can still be used with 3D graphics to some great effect. But ultimately I would really want us to have a 3D physics engine. I've been eyeing the Bullet physics engine. There have been several attempts at writing bindings, but I think we (s/we/I) should make a port instead. It will definitely take some work though. Porting Box2D took me personally about two days of work (~20Kloc C++ codebase), Bullet is ~150Kloc, but using things like regex for conversion wouldn't scale here. Using a modified parser such as Daniel Murphy's magicport or a C++ parser based on DScanner would probably work. Anyway, I'm just rumbling out loud here to some of my future plans. All of this will likely take a longer initial delay because I'm relocating soon, so things will be hectic. :)
May 19 2014
parent reply "Colden Cullen" <ColdenCullen gmail.com> writes:
On Monday, 19 May 2014 at 20:46:43 UTC, Andrej Mitrovic via 
Digitalmars-d-announce wrote:
 On 5/19/14, Andrej Mitrovic <andrej.mitrovich gmail.com> wrote:
 Btw, I'm currently porting the Box2D physics engine to D.
For a second there I thought Dash was a 2D game engine, but it's a 3D one, which is awesome! 2D physics can still be used with 3D graphics to some great effect. But ultimately I would really want us to have a 3D physics engine. I've been eyeing the Bullet physics engine. There have been several attempts at writing bindings, but I think we (s/we/I) should make a port instead. It will definitely take some work though. Porting Box2D took me personally about two days of work (~20Kloc C++ codebase), Bullet is ~150Kloc, but using things like regex for conversion wouldn't scale here. Using a modified parser such as Daniel Murphy's magicport or a C++ parser based on DScanner would probably work. Anyway, I'm just rumbling out loud here to some of my future plans. All of this will likely take a longer initial delay because I'm relocating soon, so things will be hectic. :)
Good to hear about Box2D! We just had someone approach us about using our engine for a 2D physics based game, so we'll definitely point him in your direction. As far as bullet goes, that would be amazing, but definitely no small undertaking. We talked about it internally, but decided it wasn't worth the time for just trying to get Dash off the ground. You should know, though, that if you do it, you'll have at least one user :)
May 19 2014
parent reply "ponce" <contact g3mesfrommars.fr> writes:
On Monday, 19 May 2014 at 21:00:37 UTC, Colden Cullen wrote:
 As far as bullet goes, that would be amazing, but definitely no 
 small undertaking. We talked about it internally, but decided 
 it wasn't worth the time for just trying to get Dash off the 
 ground. You should know, though, that if you do it, you'll have 
 at least one user :)
This might be of interest then: https://github.com/MeinMein/BulletD
May 19 2014
parent "Colden Cullen" <ColdenCullen gmail.com> writes:
On Monday, 19 May 2014 at 21:28:45 UTC, ponce wrote:
 This might be of interest then:
 https://github.com/MeinMein/BulletD
That's pretty cool! It doesn't appear (from the wording, at least) to be incredibly stable, but it certainly seems like a good start. I'll do some more research into it.
May 19 2014
prev sibling next sibling parent Ben Boeckel via Digitalmars-d-announce writes:
On Mon, May 19, 2014 at 22:46:33 +0200, Andrej Mitrovic via
Digitalmars-d-announce wrote:
 For a second there I thought Dash was a 2D game engine, but it's a 3D
 one, which is awesome! 2D physics can still be used with 3D graphics
 to some great effect. But ultimately I would really want us to have a
 3D physics engine.
Derelict has a module[1] for ODE[2]. --Ben [1]https://github.com/DerelictOrg/DerelictODE [2]http://www.ode.org/
May 19 2014
prev sibling parent Andrej Mitrovic via Digitalmars-d-announce writes:
On 5/19/14, Ben Boeckel via Digitalmars-d-announce
<digitalmars-d-announce puremagic.com> wrote:
 Derelict has a module[1] for ODE[2].
I've heard about ODE but I'm not sure about the state it's in these days. Bullet seems to be the place of active development. I've yet to try it though so I can't really give a proper review.
May 19 2014