Jump to content
The Dark Mod Forums

Nyarlathotep's Application Thread


New Horizon

Recommended Posts

  • Replies 58
  • Created
  • Last Reply

Top Posters In This Topic

Before the interviewing process begins, perhaps it is best for people to get some small idea of me...

 

My only experience in coding is in Java and Python (unless you are willing to count fucking around with StarLogo). I don't have much that I would consider to be in a presentable format right now, unfortunately (most of what I have are school projects--not very interesting).

 

As for my willingness to learn, I am a college student (CS major). If I am unwilling or can't learn, then I belong neither here nor at my (rather prestigious) school. Being a second-year, I don't have much experience; in fact, I'm applying to get more experience.

 

I have 2 cats, enjoy romantic dinners for two and long walks down the beach.

 

Looking for (TDM) love,

Nyarlathotep

Link to comment
Share on other sites

Sounds promising. The Doom3 SDK is available for download, and is written in C++. Doom3 scripting is somewhat like C++, but with some features missing (like structs). So if you're comfortable with that, you might want to find some way to learn C++ and download the Doom3 SDK version 1.3 just to take a look at what it's all about. A lot of the SDK is poorly documented, so it can get frustrating at times.

Link to comment
Share on other sites

I am generally much more confident of Java/Python -> C++ programmers than ASM/C -> C++ programmers. The former are more likely to understand modern design idioms rather than being obsessed with bitbashing and performance (refusing to use strings, vectors etc. because they are "too slow" and other rubbish).

Link to comment
Share on other sites

Is it really worth getting applicants to download the plain SDK? I'm not sure it's all that useful. It wasn't for me.

 

It would be nice to see some sample code, but if you don't have any I guess there's not a lot to be done about that. :)

My games | Public Service Announcement: TDM is not set in the Thief universe. The city in which it takes place is not the City from Thief. The player character is not called Garrett. Any person who contradicts these facts will be subjected to disapproving stares.
Link to comment
Share on other sites

  • 2 weeks later...

This thread has languished for two weeks now. What did I do wrong? :blink: Looking back through the thread, I noticed that Crispy stated that I didn't have any sample code (how did I miss THAT?), which simply isn't true. I have plenty of code from school projects--it's simply that I'm not much proud of them (I'd like to clean them up, minimally).

 

As for the Doom 3 SDK, I haven't been able to find my copy of D3 anywhere. A hallmate of mine has a copy on his external hard drive I could borrow, at least until I find mine or get a new one. As his hard drive is ext2, are there any problems with using Linux for TDM (especially since I don't have a Windows C++ compiler)?

 

Finally, I'm making a trip by the bookstore for textbooks on Friday; can anyone recommend a good C++ and/or OpenGL book I could use?

Link to comment
Share on other sites

As for the Doom 3 SDK, I haven't been able to find my copy of D3 anywhere. A hallmate of mine has a copy on his external hard drive I could borrow, at least until I find mine or get a new one. As his hard drive is ext2, are there any problems with using Linux for TDM (especially since I don't have a Windows C++ compiler)?

 

TDM doesn't yet work on Linux, as there are some Windows-specific implementations that have not been ported. This would be a pretty large task for somebody not familiar with the codebase to take on as their first contribution, although there are plans to add Linux support at some point.

Link to comment
Share on other sites

If you haven't managed to obtain a copy of Doom 3 how are we supposed to continue the application thread? Obviously the point of the application is to evaluate your fitness for the mod, and this means that you will be assigned a task that is stuiable to see if you are willing to work for the mod. And this means that the minimum requirement, for somebody applying as a programmer, is to have a copy of D3. Should be fairly simple to understand, right?

Gerhard

Link to comment
Share on other sites

Well honestly, the only thing you can do is answer what questions I have, such as this one:

 

Finally, I'm making a trip by the bookstore for textbooks on Friday; can anyone recommend a good C++ and/or OpenGL book I could use?

...and whether or not you want to look at some Java school projects I've done. Although--word of warning--I'm not overly proud of these projects.

Link to comment
Share on other sites

You will need to run Doom 3 under Windows, so you may have to buy a copy. Should be pretty cheap now, I picked mine up for $20 Australian dollars (about $15 US dollars).

 

I wouldn't mind seeing whatever code you do have, even if it's nothing particularly special. Just to establish that you can actually code. :)

 

As for C++/OpenGL books, I don't know any I'm afraid. I usually look stuff up on the internet if I need to. This post may help with regard to OpenGL books: http://forums.thedarkmod.com/index.php?s=&am...ost&p=94636

My games | Public Service Announcement: TDM is not set in the Thief universe. The city in which it takes place is not the City from Thief. The player character is not called Garrett. Any person who contradicts these facts will be subjected to disapproving stares.
Link to comment
Share on other sites

  • 1 month later...

These are some optoins off the top of my head. Sparhawk might have some ideas also (he is our real programming team lead, someone really needs to change my title so it doesn't mislead people :) ):

 

Look into how reading key states and button states works in the new SDK (1.3.1).

The earlier SDK versions had a problem where they could only detect about 8 keys as "buttons", that is, you could tell if they were held down or not. All the others were "impulses." Since we wanted to add some things with controls that could be held down, we jumped through a lot of hoops trying to put in hooks for mouse and keyboard states.

 

The new SDK just came out a month or so ago, and promises "access to mouse and button states" I believe they're on an object called "common" in the SDK. If you want, you could look into how to get mouse states and key states (held down/not) in the new SDK. Once you've figured it out, you could make a test mod where it just outputs to the screen which keys or mouse buttons are pressed. (Outputting to the screen can be done thru gameLocal->DrawText, I think).

 

If it is actually possible, we can get rid of our low-level hooks and go with what works in the new SDK. This would be very useful if someone could look into it.

 

Relatively simple scripting for player tools

We have a lot of player tools that will go in the inventory and be used. "Use item" calls a script on the object, so we have to go through the various player tools and write scripts for them. Usually it will be very simple, add so much health for a health potion, add so much air for the breath potion, spawn a projectile that gives off a flash on detonation for the flashbomb, zoom in and apply a GUI overlay with the telescope, put down an idMoveable with a trigger bound to it for the mine, and so on. We had someone working on the flashbomb but I haven't heard from him in a while.

 

Object manipulation: Stuck objects (requires our codebase)

I got the impression from the public forums that you are interested in the object manipulation physics. You could implement a system for momentarily stopping the player from moving when their object gets stuck, then dropping it if they continue to move in the same direction for some time. This requires stuff in our existing codebase (the rest of the object manipulation code, immobilization code for stopping the player and not conflicting with anything else that's immobilizing the player).

 

I was planning to write this, but it's fine if someone else writes it too since there's plenty of stuff for all of us to do. This may not be the best task to start out with though, since it requires our codebase and integrating stuff with a bunch of other code.

 

 

 

Let me know if any of those sound interesting. If not we can think of something else.

Link to comment
Share on other sites

The third is the most interesting, but as you point out, there are a lot of caveats to that particular one. I probably will require more time to familiarize myself with Doom 3's code intricacies before I can do, but I'd love to. Maybe after I pass our little test here.

 

As for the second one, it strikes me as a great way of getting into the code and syntax, and I probably ought to do that one. Obviously, I'll need a little more detail before I can do anything with that.

 

The first one is interesting, if for no other reason than that I can start immediately, without the aid of others. It will likely take me a little longer, as I'm still unfamiliar with D3E scripting, but I can check it out tomorrow, barring personal emergencies.

 

In the interest of clearing up my confusion, I wish to ask a question. What is the bloody purpose of the '$' in front of every variable reference? As far as I'm aware, D3E scripting has no code for direct pointer handling (am I wrong?). I can't think of a good reason for the bloody thing. It doesn't help that I'm still reading the beginner's tutorials, but they to be a little more specific.

Link to comment
Share on other sites

Not all variables are prefixed with $. Only direct entity references are. The name of the "variable" is actually the name of an entity. So if there's an entity in the level with the name "guard_bob", then $guard_bob refers to that entity.

 

Other variables, like function arguments, don't have the $.

 

See http://www.modwiki.net/wiki/SCRIPT_%28file...#General_Syntax

 

(BTW, bookmark http://www.modwiki.net/wiki/Doom_3 and in particular http://www.modwiki.net/wiki/Script_events_%28Doom_3%29 if you're looking into scripting. Very handy reference site.)

My games | Public Service Announcement: TDM is not set in the Thief universe. The city in which it takes place is not the City from Thief. The player character is not called Garrett. Any person who contradicts these facts will be subjected to disapproving stares.
Link to comment
Share on other sites

They're preprocessor statements, both in C/C++ and in D3 scripting.

 

#include is an ugly, obsolete 1970s substitute (IMO) for proper module handling. Basically it includes the entire contents of the specified file, verbatim, where it is specified.

 

#ifndef __COMMON_H__ means "only compile the following code (until a matching #endif) if the preprocessor definition __COMMON_H__ is not defined". Preprocessor definitions are defined with the #define directive.

 

In this case it's being used with #define (which is immediately after it) and #endif (down the bottom of the file) to form an "include guard" - since headers are often included from multiple locations (sometimes recursively - main.c includes foobar.h, but also includes hello.h which also includes foobar.h), and declaring something more than once (within the same file, as the compiler sees files) is an error, those preprocessor statements serve to prevent those multiple declaration errors.

 

The C++ headers concept is probably quite foreign to you since you've only used Python and Java, but it's pretty important.

 

http://en.wikipedia.org/wiki/C_preprocessor <--- decent intro

http://gcc.gnu.org/onlinedocs/cpp/ <--- bit heavy

My games | Public Service Announcement: TDM is not set in the Thief universe. The city in which it takes place is not the City from Thief. The player character is not called Garrett. Any person who contradicts these facts will be subjected to disapproving stares.
Link to comment
Share on other sites

It might actually be easier to start with stuff in the SDK rather than script, since C++ is obviously much more documented than D3Script, and D3Script has some limitations that can make it frustrating at times. If you feel like looking into the key and mouse state things in the new SDK, that sounds like it could be a good match.

 

I'm not sure where to look, but it might be in /game/gameLocal.h. I remember hearing on D3World that you can get the mouse state from the "common" object now. If you don't know, http://www.doom3world.org is a great resource. If you're really having trouble finding it, you could get the 1.3 SDK and diff it with the 1.3.1 SDK, since I don't think that much is different.

Link to comment
Share on other sites

#include is an ugly, obsolete 1970s substitute (IMO) for proper module handling.

 

You can say that again. "Whoops, I've changed the implementation of Vector3. Better go an make a coffee while the whole bloody program is recompiled from scratch."

Link to comment
Share on other sites

If it is actually possible, we can get rid of our low-level hooks and go with what works in the new SDK. This would be very useful if someone could look into it.

 

IMO this would be the best place to start.

 

Relatively simple scripting for player tools

 

For this it is too early. I have to imlpement the interface for this, and it might change a bit. Currently I don't have so much time, as we are rebuilding several rooms in our house, which will take the next few weekends, so don't expect to much from me at the moment.

Gerhard

Link to comment
Share on other sites

I'm not sure where to look, but it might be in /game/gameLocal.h. I remember hearing on D3World that you can get the mouse state from the "common" object now. If you don't know, http://www.doom3world.org is a great resource. If you're really having trouble finding it, you could get the 1.3 SDK and diff it with the 1.3.1 SDK, since I don't think that much is different.

How do I tell which version of the SDK I have, and how the hell do I find both versions? Checking BuildVersion.h reveals the current build number (for the SDK) is 1282. Checking the version of the SDK from where I downloaded it has an interesting result: the last modified date is in 2004. Great.

 

Edit: I've downloaded SDK 1.3 version now (and 1.3.1). It's a lot different; it's better, much better. It occurs to me, however, that I don't have a way to compile any of this for Winblows. Any specific recommendations?

Link to comment
Share on other sites

Ah ha! The offending code in Common.h (1.3.1) is right here!

 

						// Returns key bound to the command
virtual const char *		KeysFromBinding( const char *bind ) = 0;

					// Returns the binding bound to the key
virtual const char *		BindingFromKey( const char *key ) = 0; 

					// Directly sample a button.
virtual int				ButtonState( int key ) = 0;

					// Directly sample a keystate.
virtual int				KeyState( int key ) = 0;

I'll try to create a mod to test the functionality of these commands, but I figured ^this would be useful for now.

 

Edit:

Once you've figured it out, you could make a test mod where it just outputs to the screen which keys or mouse buttons are pressed. (Outputting to the screen can be done thru gameLocal->DrawText, I think).

Quick question. Could I use scripting to test it out, or do I need to do more significant modifications to the codebase?

Link to comment
Share on other sites

Unless the functionality is exposed to scripting (which I doubt), you will need to do SDK modification.

 

You need Visual C++ to compile the mod under Windows. MS has a free Express version that works fine. http://msdn.microsoft.com/vstudio/express/...ds/default.aspx

 

Takes a bit of tedious setting up (e.g. it will generate a lot of spurious warnings to begin with, until you disable them all; and it links to random crap like ODBC for some reason - you can safely remove the linking to odbc) but it's worth it. Compile under Release mode first, IIRC it's easier to set up.

 

I'd send you my VC++ 2005 project files, which would help avoid most of the setting-up pain, except that they've got a bunch of DarkMod-specific stuff in them, so they won't work with the plain SDK...

My games | Public Service Announcement: TDM is not set in the Thief universe. The city in which it takes place is not the City from Thief. The player character is not called Garrett. Any person who contradicts these facts will be subjected to disapproving stares.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recent Status Updates

    • Petike the Taffer

      I've finally managed to log in to The Dark Mod Wiki. I'm back in the saddle and before the holidays start in full, I'll be adding a few new FM articles and doing other updates. Written in Stone is already done.
      · 1 reply
    • nbohr1more

      TDM 15th Anniversary Contest is now active! Please declare your participation: https://forums.thedarkmod.com/index.php?/topic/22413-the-dark-mod-15th-anniversary-contest-entry-thread/
       
      · 0 replies
    • JackFarmer

      @TheUnbeholden
      You cannot receive PMs. Could you please be so kind and check your mailbox if it is full (or maybe you switched off the function)?
      · 1 reply
    • OrbWeaver

      I like the new frob highlight but it would nice if it was less "flickery" while moving over objects (especially barred metal doors).
      · 4 replies
    • nbohr1more

      Please vote in the 15th Anniversary Contest Theme Poll
       
      · 0 replies
×
×
  • Create New...