Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
programlover

where to start on making a basic simple doom source port

Recommended Posts

I want to make a simple basic doom source port but I don't now where to start

I run a windows 10 64bit os
I use the codelite ide for building software
I want the source port to be a 64bit build
I also use a g++ compiler or other

Please do help me out I need some advice thanks.

Share this post


Link to post

Just out of pure curiosity: what would you want your new Source Port to do that the others don't at the moment?

Share this post


Link to post

GZDoom is about as far from simple as you can get :)

Just download and start playing with the source code of some port. Chocolate Doom is a good base if you want to start tinkering with something close to vanilla. Learn first how to compile it, and then start editing it.

Share this post


Link to post

Start by studying the header files, understand what goes on underneath the hood.
Then go nuts.

programlover said:

I want the same as Gzdoom has its features that's it.

That's pretty high for an objective.

Share this post


Link to post

Thanks so much. It means so much to learn this any other suggestions I would need to know please comment thanks. Respect to the doom community for help.

Share this post


Link to post

hey I found this I need help https://www.doomworld.com/vb/source-ports/73613-compiling-chocolate-doom-with-visual-studio-a-simple-ish-guide/

I did every step and it still did have errors

I am using visual studio 2013

and I took the lib files and added them to the include and the lib like he wanted me to but I go into visual studio and in the doom sln I go into properties and add the include on 1 and the other the lib and save and I also done the doom config manager also and build it and had errors again what am I doing wrong.

Share this post


Link to post

If you don't know how to start with project you made up for your self than it's too early.

Maybe try something simpler for start. Slow steps.

Finally if you write something it should have purpose that someone or you should use it. Not a *same features as this*. I use programs I wrote long time ago.

Share this post


Link to post

Let's take a step back. If you want a source port that contains the same features as GZDoom, plus or minus a few things, you should start with the GZDoom source. (The code might be more complicated to navigate but it doesn't sound like you care about the original source material and simply want to tweak, in which case there's a lot less to comb through.) From the looks of it, GZDoom uses CMake to eventually reach the build step, so if you aren't familiar with CMake then you'll have to first understand how it works. Here's on post on the ZDoom forums that explains a step-by-step to build GZDoom for Visual Studio 2013. (The post is a couple years old so take that into account.)

I'd like to step back even further, though. The original Doom source code is available on GitHub (link). For anyone to "make a simple basic doom source port" using this alone (we'll assume Windows 10 64-bit as the target environment), at a bare minimum the following would be necessary:

  • Implement sound code (either from scratch or with the help of an existing library)
  • Rewrite any assembly code for 64-bit hardware or port it to C (the latter is recommended)
  • Redesign video code so it can properly render in Windows
Those would be the big ones, with a few hundred other tiny details that fraggle had to deal with as he worked on Chocolate Doom way back when. In my opinion, even attempting to do this much is no simple task, which is why almost anyone you ask will point you to an existing source port to use as a base. Even if you had a perfectly-working source code that took into account working on Windows 10, I feel like adding OpenGL and high-resolution textures would still be pretty advanced given the way that Doom originally rendered everything. If you know how to write this kind of code that's a large chunk of that work simplified, but as with any kind of programming it's always a learning experience unless you've written exactly the same thing before (and that almost never happens).

Why do you want to write a source port? I want to say that a source port is among the hardest things to write, as you're not only starting from scratch in some aspects but amidst immeasurable foreign code in others (where simply understanding how it was designed to work is but the first step). It's not to be taken lightly, and if you're already asking for help without providing more concrete error information, clear indications of a problem, et cetera, then you're not approaching this with the right mindset.

In short, there's no good answer to your original question. Before you continue, try going through this process:
  • Determine your want (i.e., "What do I want as a part of my Doom experience?").
  • See if it's possible to achieve what you want with an existing source port. If you can, don't bother coding, as you've achieved your wants.
  • If you can't, start asking about modifying existing source ports.
  • If none of the existing ports succeed at a fundamental requirement of your wants, then you should start thinking about making your own.

Share this post


Link to post

The first step is to understand how the Doom Engine works. You can read the wiki for information about the Original Doom source http://doom.wikia.com/wiki/Doom_source_code .
Note that the source code is in C (not C++) language, that means no OOP, just functions and global variables. This may look strange to a today's era programmer.
Chocolate-Doom is a good start to play with, but note that choco does not fix the original engine bugs and limitation (On the contrary it reproduces them deliberately). As an other alternative I reccomment is PrBoom+ (https://www.doomworld.com/vb/source-ports/31039-prboom-plus-ver-2-5-1-4/) which provides a solid base and bug fixes of the original engine.

Share this post


Link to post
Guest
This topic is now closed to further replies.
×