The Dink Network

Announcement: Dink Engine Source Code Release Imminent

July 11th 2003, 11:24 AM
custom_king.png
redink1
King Male United States xbox steam bloop
A mother ducking wizard 
Seth Robinson has announced that he intends to release the Dink Source Code next week.

This is Good News.

Why? Have you ever wanted someone to add multiplayer / high-color / movie-playing / etc support to Dink Smallwood? Without the Dink Source Code, it was nearly impossible to add these features without coding an entirely new engine from scratch. With the Dink Source Code it is possible. It might take an awful lot of work, but it is at least possible.

July 11th 2003, 11:31 AM
spike.gif
scratcher
Bard Male Finland bloop
cigarette bonca 
What made him suddenly release the code?? He read the board or something?
July 11th 2003, 11:36 AM
death.gif
Whoa, now that's great news. We were talking about the thong yesterday. And oh, sorry, the 32bit thing, as far as I know, works kinda slow on most PCs (I've played a d-mod, i think, and the creator said that it really worked bad). But it's a great thing! I hope you haven't been blackmailing seth have you?
July 11th 2003, 11:48 AM
wizardb.gif
Kyle
Peasant Male Belgium
 
Who cares, the important thing is we may finally be able to expand on the current possibilities and hopefully keep everyone intersted for a much longer time than it would have without the source. On top of my list would be the high colour support, next multiplayer (which will allow for a lot of new d-mod types to see the light of day) and the movie support last on the list. I'm going to think of a lot more features this night
July 11th 2003, 01:09 PM
wizardb.gif
jameson
Peasant Male
 
Hi,

This is really excellent news! It does, however, raise the question of how further development of the source code should be coordinated-- I'd imagine that there are going to be quite a number of separate attempts at extending the code base and/or porting the game engine to other platforms.

Setting up a project page with CVS access (or a similar revision manager system allowing several people to work on the same program without stepping on each other's toes) would seem like the best approach to this; something like savannah.gnu.org or sourceforge.net (which seems to have some trouble keeping their anonymous CVS up to date lately, though).

-- Christoph
July 11th 2003, 01:19 PM
wizardb.gif
Merlin
Peasant Male
 
I sent Seth an e-mail announcing my Dink-2 project. Maybe that opened his eyes? This just means I have to work reeeealy fast.
July 11th 2003, 01:24 PM
fairy.gif
w00t! *does the happy Fish dance*

Ahem. Anyways. I hope this isn't going to lead to things like 500 mb dmods that take us poor, lost souls (well, we prefer the term "dial-up users") six or seven days to download in chunks.

And now a question: who is going to go about modifying the engine, and how? Obviously one person is going to want to do some things while another is going to not want those same things... and I assume we're going to want one standard Dink 1.5 engine for everybody to use, aren't we?
July 11th 2003, 01:30 PM
fish.gif
Binirit
Peasant Female
 
Now, for those poor souls who don't really know much about engines, like me, will the way you create a D-mod be different or more difficult?
July 11th 2003, 01:36 PM
fairy.gif
Basically what I think will happen (correct me if I'm wrong or stupid) is that it will be pretty much like it is now, except that there will be added features... so you'd still use the same DinkC, but there'd be new commands to use if you wanted them. But you wouldn't have to start over learning a whole new DinkC from scratch or anything. At least, this is my theory, I could be horribly horribly wrong.
July 11th 2003, 01:55 PM
wizardb.gif
jameson
Peasant Male
 
Hi,

I don't think that the problem of whether features should be added or not is that important in a platform-- if a feature is added, it's usually not neccessary to force programmers to use it (there are exceptions, of course). The problem you appear to be seeing, however, namely that Dink might split into two or three different Dink engines with custom extensions, is a very real one.

(Note that any reasonable extension to Dink would have to attempt to be downwards compatible (or, at the very least, to have a switch to allow that), in order to allow older D-Mods to run anyway.)

I believe that the most likely reasons for people not to cooperate on building a huge, unified Dink 1.5 (or whatever) would be practical ones, i.e. issues of code sharing and communication.

Code sharing seems to be the more complex problem here, which is why I suggested getting CVS hosting from an independent and reliable source.

-- Christoph
July 11th 2003, 02:22 PM
wizard.gif
Chrispy
Peasant Male Canada
I'm a man, but I can change, if I have to.I guess. 
This is really good news!! The only thing is, I don't know if much will come of it, because of the snippets I've seen and heard about, its, ah, not really the best of code...
July 11th 2003, 02:23 PM
old.gif
Ok, one tip for the authors and myself , dont wait for the source code, if its released the programmers here cannot modify the engine in 1 day and make sure its bug-free. it will take some weeks to add new commands, and some weeks to make it bug-free...

Redink: I will add some wishes to the wishlist.
July 11th 2003, 03:21 PM
pq_frog.gif
Ric
Peasant Canada
 
Don't worry Merlin, this doesn't quash your project, this guaranties it will happen! There will probably be a team formed to meet the target. Now I realy wish I knew c++. Mabey this is my chance to learn...
July 11th 2003, 04:55 PM
wizardb.gif
merlin
Peasant Male
 
Ric, it took me about 6 hours to learn C++, but that doesn't mean It's an easy language. It all depends on the compiler that you use (I use Dev-Cpp, a frontend for MinGW, which is a windows version of GCC). Also, it gets complicated depending on which libraries you use (i.e. DirectX, OpenGL, DevIL (OpenIL), VxWindows, etc.) But if you just want a program that runs in DOS mode, it's easy as pie.
July 11th 2003, 05:05 PM
wizardb.gif
merlin
Peasant Male
 
Allikitten:

I could be horribly horribly wrong.

You mean, like you usually are?
July 11th 2003, 05:58 PM
custom_striker.gif
Striker
Noble United States steam
Daniel, there are clowns. 
When and where did he make this announcement?

EDIT: Never mind, It's here.
July 11th 2003, 06:11 PM
custom_king.png
redink1
King Male United States xbox steam bloop
A mother ducking wizard 
heh... and I was just going to tell you to fix your link (it was missing the quotes), and by the time I get to the reply page it is fixed
July 11th 2003, 08:08 PM
dragon.gif
Nexis
Peasant
 
Just happened to browse onto the site and what do I see. Well anyways, I can't afford the time to get involved in another project like this after working on WDE (had to force myself off that project). Besides, I really need to start and finish my own game. But I thought I might give everyone a few suggestions on what might be done.

First off the suggestion of some source control is a very good idea. You definitely don't want the codebase splitting off into multiple directions.

The absolute first thing that should probably be done is clean up the source code. Don't do anything else until this is done. Looking at RTSoft's board I saw that Seth had said that there were 30,000 lines of code in mostly 3 files. 3 files is WAY too few files for that amount of code, especially with C++. You will need to split these 3 files in probably 10 times that to even come close to organising them. C++ classes should also be implemented (moreso at least) to contain the code for these files. Looking at the WDE might help in this regard, but perhaps not.

One thing that should definitely be done is port dinkc to a proper interpretter by using a tool such as lex or yak. I'm sure there's better since from what I've seen of those two they are rather difficult to get to work with without a lot of work. The only one I've worked with is Visual Parse which is simply awesome but at $500 a copy not a viable solution. Unless you've had a class on compiler design this could be a difficult thing to set up.

Graphics: 16-bit/32-bit color. I would recommend supporting both but you should give preference to 16-bit for speed and to reduce download size. Adding jpeg support might be an interesting addition to reduce file size. Higher resolutions are not possible without changing the dink format and so should be probably not be done. You also wouldn't want to switch the code to directx 8 or 9 since you won't be using any of the features in them. Better to keep a wide userbase by not requiring users to install them.

Porting: Since someone mentioned porting to other platforms you must keep in mind the game is coded in directx. If you do intend to make this work on other platforms you'll need a C++ cross platform library such as SDL. Allegro might also work although I don't know anything about it. This change should be done to the base source code if done. Splitting off the source code is not a good idea.

Sound/Music: I'm not sure if I can recommend this or not as it will mean very large downloads. Mp3 support should probably not be considered due to license issues and file size. Ogg vorbis support would probably work well. Those files tend to be half the size of comparable mp3s. It's also license free. For implementation you can either choose to use libraries such as fmod or the ogg vorbis library. The ogg vorbis library would be my choice although using fmod would allow support of many many different formats (mp3s, ogg, mods, midi, etc).

Movie playing: choose a high quality codec like divx (such as xvid). This will still absolutely wreak havoc on download sizes but is much preferrable to using mpegs or old avi files. Make sure to not require the codec to be installed but rather is included with the new game. Also make sure of the licensing before choosing a format.

Also, I would recommend splitting off the exes so that you keep the old dink.exe and create a new one. Unless you want to reproduce all the bugs (and I guarantee this will be problematic if you want to make real improvements to dinkc) this is probably the best solution. Maintaining the buggy old code inside the cleaned up code would just be a nightmare. And I'm not sure you can claim to be cleaning up code if you leave bugs in.

The dink editor: If you make any major changes to the dink file structures you will break both WDE and dinkedit. So are you going to update both or not.

File formats: I would recommend eventually changing the file structures so that the dink.dat and map.dat both fit into one file. Adding support for multiple maps seems like something that is desirable. The map.dat also only utilizes on average maybe 10% of the file efficiently. Whether you want to implement some of the features the extra data was for (sprite rotation, etc) or remove them is up for you to decide. You should probably also eliminate the .ff format (microsoft fastfile actually) in favor of some comprehensive wad format for all files. That would also eliminate the need for .d files which are compressed .c files, not compiled .c files.

Removing the limit on sprites and only using the space necessary would also be good. I would note that unless someone has a lot of time to spend you probably don't want to go messing with these files. The limit on tiles could also be removed (rather easily actually). You shouldn't even think of the possibility of eliminating screen scrolling as that would break nearly everything.

Really though, I'm not sure if it's worth it to change the file formats. Might as well start coding a different game from scratch than make major changes to these.

Well I'll stop here. I'm not in any way saying this is how things should be done rather that these are simply some ideas to discuss. I'm sure many people have other/better ideas since I'm just spouting these ideas off as I type.

This comment message board also really needs a preview option. A wider edit box would also be nice.
July 11th 2003, 08:33 PM
pillbug.gif
KI
Peasant Male
 
Seth took the source code too much time, and now Dink Engine is probably too old and uncapable.

I think that Seth released the source to do propaganda, and to look like a benefactor.
July 11th 2003, 09:58 PM
fairy.gif
That was unusually cruel... My feelings are broken.
July 12th 2003, 12:21 AM
wizardb.gif
jameson
Peasant Male
 
Nexis,

you make a number of very good points, but I'd like to comment on some of these as I do not fully agree with everything you have said.

30k lines of code in 3 files sounds horrible, but it doesn't have to be. Ideally, these files could be split into more rather straightforwardly, although I'll admit that this is probably unlikely.

I'm not sure whether your suggestion of porting dinkc to have a "proper" frontend makes sense; if the dinkc frontend works (I have never used it, so I can't comment on that) the only (albeit significant) gain here would be maintainability. But there are other clever ways for coding tokenisers and parsers (although these tend to be done in rather more powerful languages), so this may not be a problem yet.

When it comes to lex and yacc (or flex and bison, their GNU replacements), I should point out that these aren't anywhere as complicated as you make them sound-- they have a syntax of their own, that's true, but it's a simple one. The only issue here is that you will have to know what context-free and regular languages are , and how these are specified (i.e., what regular expressions and BNF grammar specifications are). Granted, without that background knowledge their (extensive) manuals may seem confusing at first glance. Reading up on the theory first, however, should clear a lot of things up.

Adding support for other graphics formats would probably be quite straightforward, given that there are existing libraries which take care of that. I agree that supporting more than one colour depth would be very useful, particularly for systems which don't allow randomly changing the active colour depths.

Requiring movie codecs to be shipped with games would be somewhat problematic with respect to portability-- some codecs are not widely available (only for Mac, or only for Windows, or whatever), and you wouldn't want people to ship executables for each platform the game could possibly be run on. If movie playback was to be supported, I would suggest either falling back to OS-provided mechanisms or standardising on one fixed codec.

A new dink should, at least initially (for purposes of porting and general backwards compatibility) be able to run all of the old stuff. When it comes to changing the dink file structure, it may be possible (I don't know, I'm not familiar with the current one) to use a more scalable format while still providing read-only support (for the actual dink interpreter) for older files. I don't see why you'd want to merge separate files, though-- the file system already provides a neat mechanism for storing separate pieces of information in separate chunks, so just using an off-the-shelf directory instead of a wad or RIFF file would seem like a much more transparent solution to me.

When it comes to porting, I agree that any port should be done in the same code base as used for future development. However, I would suggest first abstracting out (using templates with inline function calls, preprocessor macros or abstract classes where neccessary) all sound, graphics and basic I/O (file selection mechanisms etc.) stuff instead of hopping onto the SDL bandwagon. SDL does not give good performance in some cases-- whether this applies to Dink remains to be seen; admittedly Dink looks like a typical "made for porting to SDL" game, though. However, SDL does not offer any MIDI support as far as I know, so that would have to be done natively (and, while we're at it, why not allow people to code their own native xlib/cocoa/DOS+VESA/photon graphics drivers as well?). Abstraction is the key here, and (besides the effect of massively helping portability) it would yield a considerable code clean-up.

Wrt Allegro: Don't. It's a horrible mess on anything but DOS (and possibly Win32), and it doesn't even seem to try particularly hard to work with non-IA32 (Intel, AMD, Cyrix x86 architecture) CPUs.

-- Christoph
July 12th 2003, 03:00 AM
fish.gif
Simeon
Peasant Male Netherlands
Any fool can use a computer. Many do. 
w00t, now we can really make something Now this might be a good place to say I also have some C++ experience (no 3D worlds yet ) but I should be able to work out some non-graphical stuff.

I'll add to the wishlist if I have wishes

Oh, and I found this.
July 12th 2003, 11:50 AM
goblinm.gif
trav666
Peasant Male
 
its been a bit more than 3 years now lol
July 12th 2003, 12:36 PM
farmer.gif
WC can script C++, and now he's gone...
July 12th 2003, 04:22 PM
fish.gif
Eldron
Peasant
 
hehe.. hehe.. this is what I've been waiting for!!
July 12th 2003, 04:52 PM
pillbug.gif
KI
Peasant Male
 
¿WC has gone?... ¡¡That is good!!

¿Where is The prophet?... ¡Let's do a celebration!
July 12th 2003, 04:53 PM
goblinm.gif
trav666
Peasant Male
 
Wc isnt gone, he is still on aim! get a thousand screennames and force him back... *sigh* i blame it all on politics...
July 12th 2003, 04:54 PM
goblinm.gif
trav666
Peasant Male
 
Kl, comments like that will get you hurt
July 13th 2003, 02:21 AM
goblins.gif
Dukie
Peasant Male
 
Bleh, he's just trying to get attention
July 13th 2003, 09:17 AM
stonegiant.gif
KI Your Are A Attention Seeking Spammer
You Should Be Banned
July 13th 2003, 10:07 AM
old.gif
Uhmfffff
July 13th 2003, 03:09 PM
goblinm.gif
trav666
Peasant Male
 
im pretty sure KI is spanish, his writing is in spanish format, like ?how? (the first ? is supposed to be upside down)
July 14th 2003, 12:52 AM
pq_water.gif
Blue
Peasant Male
 
hmm... wc gone? i wasnt online lately, so i dont know anything what happened to him.... he got kicked or left by himself?
July 14th 2003, 08:08 AM
stonegiant.gif
this is a announcment for the source code not about world destruction
lets move this to off topic! where no one can complain!!
July 14th 2003, 08:14 AM
custom_fish.png
SabreTrout
Noble Male United Kingdom
Tigertigertiger. 
Let's just stop posting about my clones anyway...you had to be there...and you weren't.
About the source...it's good that it's being released, but I think it should be tweaked to get rid of bugs, perhaps one or two more commands, but should generally be left well alone.
July 14th 2003, 09:41 AM
knightg.gif
WC
Peasant Male United States
Destroying noobs since 1999. 
For old times sake:

You all are fudgetards. THis is partly the reason why I left. I come here to see if that source is released yet (since there is nothing on RTSoft), and also to read Garys post he told me about, and you idiots are rambling on about something that doesn't matter anymore.

Comment on Gary's post:

He is 100% correct, it will never work unless the engine is rebuilt. I have seen segments of this code (a few pages worth), and I wouldn't touch it with a 10 foot poll with a condom on it. Just rewrite the engine so you can plan to add all these things later, but just make the egnine work with the formats now and slowly add features and testing it. Also you really, really should not deviate from that format unless you are going to write a backwards compatible engine to read the new format (which should be one file and really flexable), and the old format.

"You seem to forget that WC screwed as many women as he could without a condom so he had several children that will rise ip against and defeat your ass."

Yeah, and one of them was your mom.
July 14th 2003, 09:46 AM
fish.gif
Eldron
Peasant
 
Having something to work with is always better than to try to pull something out of the ass just like that, even if it's oh so horrible its still something to build upon, since its contains all the information on how dink works, ofcourse mostly everything will be replaced and restructured, but now there wont be any "how?".

July 14th 2003, 09:54 AM
bonca.gif
Christiaan
Bard Netherlands xbox
Lazy bum 
hey dude. I think your post makes sense, but what about "This is partly the reason why I left" ? what part? hmm.

Hey and don't leave man. n00bs will always be n00bs, and weren't you the n00b cannon?
July 14th 2003, 01:20 PM
knightg.gif
WC
Peasant Male United States
Destroying noobs since 1999. 
Yeah, but it wasn't the noobs that convinced me to get lost. It was the staff. Oh, and Alli, quit IMing me.

I think it's funny right as I leave the source gets released..I should have left sooner. I plan to rebuild the engine from scrtach as some direct x practice. I do not plan to release it at all even if it gets finished.
July 14th 2003, 01:31 PM
bonca.gif
Christiaan
Bard Netherlands xbox
Lazy bum 
Hey WC, listen. You ARE the bad@ss around here, and you may be angry n' stuff, but hey, what's the DN without you? Are you doing this just to do this, or even for a reason?

I've got a deal for you right here:
WC stay bad@ss. WC still be nice. WC stay. Staff one more chance. WC get flower from Christiaan. Grouphug. (or as ehasl would say, groupsex! whaha. does anyone remember that?)

I doubt you'll even read through this half though, 'cause your mind is too much filled with anger and bad@assity. or something
July 14th 2003, 04:56 PM
goblinm.gif
trav666
Peasant Male
 
(or as ehasl would say, groupsex! whaha. does anyone remember that?)

no christiaan, dont bring up those memories!
July 14th 2003, 07:54 PM
knightg.gif
WC
Peasant Male United States
Destroying noobs since 1999. 
Sorry. I have worn out my welcome here. I think removing my admin, deactivating my account to the point I can't re-activate it, and telling everyone to piss off has done it in. I have a new home now. Now where is that source I waited since 1999 for?
July 14th 2003, 08:44 PM
goblinm.gif
trav666
Peasant Male
 
i really dont think WC will go away forever, he'll be back!
July 15th 2003, 01:26 AM
fish.gif
Eldron
Peasant
 
wc, don't be so dramatic..
July 15th 2003, 09:36 AM
bonca.gif
Christiaan
Bard Netherlands xbox
Lazy bum 
fine.

Redink1, ban this dang noob!
July 15th 2003, 09:45 AM
goblinm.gif
trav666
Peasant Male
 
christiaan are you yelling at yourself?
July 15th 2003, 09:50 AM
bonca.gif
Christiaan
Bard Netherlands xbox
Lazy bum 
all the time
July 16th 2003, 04:33 PM
pq_frog.gif
Ric
Peasant Canada
 
I once left too. I just didn't burn any bridges. WC, can leave just because he feels like it, and shouldn't come back until it feels right to(I know many will welcome him). I just hope he grows the wisdom to look for what's good.
Ps. Hey WC, you were right about R. Miles. Good stuff.
July 17th 2003, 02:00 AM
custom_fish.png
SabreTrout
Noble Male United Kingdom
Tigertigertiger. 
WC isn't being very nice to us.