Author Topic: Project Update  (Read 6679 times)

Offline leeor_net

  • Administrator
  • Hero Member
  • *****
  • Posts: 2352
  • OPHD Lead Developer
    • LairWorks Entertainment
Project Update
« on: November 07, 2005, 09:09:06 PM »
Hmmm... my other post has been lost. So I'll add a new version here:

After poking around through the current OP:MIA code, I've come to the conclusion that the current version of the software needs some MAJOR design reviews.

Basically, the program is written in half C++ and half C. Not a good mix if you ask me. The only reason I understand any part of the code is because I wrote it.

Basically, the code is like this: Half of the functions are stand-alone kept in module source files like and procedural program. The rest of the code is contained within C++ classes or Objects. it doesn't really make sense to mix the two: it becomes inefficient and difficult to read/modify code.

So I'm redesigning the engine on paper first and then creating the various C++ classes or Objects in the code.

For instance, the original handling of the Technology/Research section of the game meant that I would have to keep track of just about everything and call the approriate functions when necessary.

in the new design, there is an object called cTechnology which handles everything. Basically, I initialize the object (or create it) and give it a file name pointing to the file containing the Technology Script (which will closely resemble the OP2 technology tree scripts). It then parses the script and creates internal data structures to organize everything. It keeps track of what research topics are completed, available for research and are currently being researched. It also has several functions so that viewing internal information can be seen so that the research screen (an class derived from the GUI system) knows how do draw itself.

It's a little bit more complex and in-depth than that but basically it makes my job as a programmer a hell of a lot easier.

It also makes the task of porting OP:MIA to another environment (whether that be MacOS, Linux, Unix or even the PSX/PS2) a hell of a lot easier too. Additionally, it has the side effect of making the engine extremely reusable with little to no modification to the source code.

long story short: OP:MIA is still in production but with a new and signifigantly improved engine that will allow for faster development and debugging.

Offline Stormy

  • Hero Member
  • *****
  • Posts: 678
    • http://www.op3game.net
Project Update
« Reply #1 on: November 07, 2005, 09:33:42 PM »
Great work leeor_net! :D

Can't wait to see the next update... they keep getting better and better :)
 :op2:  
`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·
3D artist in Blender, MS3D, and Terragen.
Trying to get good with Scene composition and lighting.

Offline spirit1flyer

  • Hero Member
  • *****
  • Posts: 621
Project Update
« Reply #2 on: November 07, 2005, 10:06:14 PM »
will the new engine work faster now? or will it work slower because of the more complex engine?
"Until you stalk and overrun You can't devour anyone"


Loyal Xfir supporter

Offline Leviathan

  • Hero Member
  • *****
  • Posts: 4055
Project Update
« Reply #3 on: November 08, 2005, 07:14:12 AM »
Sounding realy great.

Offline leeor_net

  • Administrator
  • Hero Member
  • *****
  • Posts: 2352
  • OPHD Lead Developer
    • LairWorks Entertainment
Project Update
« Reply #4 on: November 09, 2005, 06:49:26 PM »
Quote
will the new engine work faster now? or will it work slower because of the more complex engine?

I'm not sure how you got the idea that the engine was more complex. Using C++ classes, rather, making use of the Object Oriented nature of C++'s language syntax makes the coding/programming much more efficient and a lot less complex. It also makes the engine easier to understand, update, fix, port and even use certain objects in other programs (e.g., when I finish the technology class, I have every intention of using it in the OP3 engine. It works, it's not dependant on the rest of the engine and it's designed in such a way that I can even store it in a *.LIB file, why reprogram it when I can just plug it in? After all, that's the purpose of Object Oriented programming: reusability).

Anyway, I've mapped out probably about 50% of the engine's internal structure (what I would consider the most important parts) so I'm probably going to start writting out the C++ code for it soon enough. This will hopefully make things run a little bit faster.

Of course, I since the engine is 2D, it's going to be making heavy use of 'sprites'. Since the sprite code is already in a C++ class (object), I won't even have to worry about that at all! So I have at least one major part of the engine ready to go.

Offline Betaray

  • Administrator
  • Hero Member
  • *****
  • Posts: 2897
Project Update
« Reply #5 on: November 09, 2005, 06:56:47 PM »
sweet, can't wait!!

sprites, reminds me of the origional Doom
I am the nincompoop, I eat atomic bombs for breakfest, fusion bombs for lunch, and anti-matter bombs for dinner

I just hope they don't explode

Offline leeor_net

  • Administrator
  • Hero Member
  • *****
  • Posts: 2352
  • OPHD Lead Developer
    • LairWorks Entertainment
Project Update
« Reply #6 on: November 09, 2005, 07:10:04 PM »
Well, a sprite is defined as " A two dimensional image that moves around the screen". While OP:MIA's structures aren't really moving around the screen like DooM's sprites, they are none-the-less still sprites.

Offline Betaray

  • Administrator
  • Hero Member
  • *****
  • Posts: 2897
Project Update
« Reply #7 on: November 09, 2005, 07:49:07 PM »
so does op2 use sprites for the struture and unit anamations?
I am the nincompoop, I eat atomic bombs for breakfest, fusion bombs for lunch, and anti-matter bombs for dinner

I just hope they don't explode

Offline leeor_net

  • Administrator
  • Hero Member
  • *****
  • Posts: 2352
  • OPHD Lead Developer
    • LairWorks Entertainment
Project Update
« Reply #8 on: November 09, 2005, 07:50:42 PM »
Yes. Any 2D game that has animated or even static objects on screen that are not part of the background has sprites.

Sp I guess a better definition of a sprite is "a 2D image (animated or static) that is not part of the background".

Offline Betaray

  • Administrator
  • Hero Member
  • *****
  • Posts: 2897
Project Update
« Reply #9 on: November 09, 2005, 07:55:09 PM »
you learn somthing new everyday
I am the nincompoop, I eat atomic bombs for breakfest, fusion bombs for lunch, and anti-matter bombs for dinner

I just hope they don't explode

Offline omagaalpha

  • Sr. Member
  • ****
  • Posts: 372
Project Update
« Reply #10 on: November 10, 2005, 05:08:40 AM »
Keep good work and this time make sure on paper that detail so don't has go redo it again.
Sorry if my grammar and spelling is bad, but I have disablity with it.
Yes, English is the first and only language that I know.

Offline Betaray

  • Administrator
  • Hero Member
  • *****
  • Posts: 2897
Project Update
« Reply #11 on: November 10, 2005, 09:41:35 AM »
um, can you restate that please, I have no idea what your saying
I am the nincompoop, I eat atomic bombs for breakfest, fusion bombs for lunch, and anti-matter bombs for dinner

I just hope they don't explode

Offline Mcshay

  • Administrator
  • Sr. Member
  • *****
  • Posts: 404
Project Update
« Reply #12 on: November 10, 2005, 03:09:45 PM »
Quote
Keep good work and this time make sure on paper that detail so don't has go redo it again.
Here you are Beta:

Keep up the good work! This time plan everything out on paper in detail, so you don't have to redo it again.
« Last Edit: November 10, 2005, 03:10:03 PM by Mcshay »

Offline omagaalpha

  • Sr. Member
  • ****
  • Posts: 372
Project Update
« Reply #13 on: November 12, 2005, 05:12:02 AM »
thankyou Mcshay
Sorry if my grammar and spelling is bad, but I have disablity with it.
Yes, English is the first and only language that I know.

Offline leeor_net

  • Administrator
  • Hero Member
  • *****
  • Posts: 2352
  • OPHD Lead Developer
    • LairWorks Entertainment
Project Update
« Reply #14 on: November 12, 2005, 10:21:56 AM »
Well, I'll let you guys in on a little secret:

I was enrolled in a boarding school for several years prior to March/April 2003 (a truelly awful experience). Anyway, I had been dreaming of recreating OUTPOST at some point for a project that I called the Reminiscence Project.

In February of 2003, I learned of a programming API called SDL (Simple DirectMedia Layer) and thought it was awesome because I didn't need to deal with any of the Win32 crap (whose concepts were eluding me at the time).

Anyway, my mother passed away at the end of March and I ended up flying to Isreal for the services. I was staying at my Uncles house and they had a computer there. I was ready to freak out and just give up on everything so I found a way to keep myself going by using his computer. Already having knowledge of SDL and knowing that it would work with Dev-C++, I started writing some code and came up with a bunch of stuff that worked (including the initial diamond map). I needed the tiles from OP1 so that I could really get started and somehow found OPU.

Anyway, I dropped that version of the engine because it was disgustingly slow. SDL, it turns out, has a whole lot of overhead with it.

So I moved to DirectX and it worked a lot better.

I stopped look at the OP:MIA code for awhile because I had moved on to other things. I then got back to looking at it (after working some on OP3's code and a few other things) and realized how primitive and sloppy the OP:MIA code was. I just wanted to 'make it work' before and didn't really think about how to approach it so I just banged out various lines of code and viola - a preliminary version of OP:MIA.

Point being that this time I have done a lot of thinking about the structure and nature of OP:MIA's engine and its requirements so this version that I'm going to start is the version that I'm going to stay with. Chances are I'll be using some of the classes from OP:MIA for OP3 as well so OP3's development after OP:MIA will hopefully move along quickly.

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4955
Project Update
« Reply #15 on: November 12, 2005, 06:49:37 PM »
Nice to know it's still being worked on. Also nice to know you're taking pride in your work. Although, I have to ask, how long is this going to take?  :huh: It seemed like you were pretty far on it, and it sounds like you're restarting now.
 

Offline leeor_net

  • Administrator
  • Hero Member
  • *****
  • Posts: 2352
  • OPHD Lead Developer
    • LairWorks Entertainment
Project Update
« Reply #16 on: November 12, 2005, 08:49:54 PM »
Well, I wasn't so much 'far into' the project as some might think. I had completed a lot of the programming for drawing animated sprites on screen without having to manually go and update the frames of every single on-screen sprite and I had the map drawing complete. I also had the isometric mouse mapping done and I had basic tile walking workin right.

Other than that there was nothing.

I plan on using a lot of the code that I had already written. The difference is that I'll be sticking much of that code into C++ Classes to make my job a lot easier and make the code easier to look at, modify and write.

There were also several issues that I hadn't addressed such as the hybrid nature of the coding scheme (e.g., half structural with a few C++ classes thrown in here and there).

So I basically said "This code is a disaster" and set about to clean everything up.

This will help tremendously in the debugging process as well as the coding and maintenance process. In addition, it's become apparant that there are those who would love to play Outpost but they don't have Windows machines. So I want to write the system specific stuff (like the networking, input, sound, graphics etc.) into wrapper classes to make the code a lot easier to port to another OS. I didn't know that OP:MIA would end up with such a gigantic following of eager players so it dawned on me that if I was going to finish this project it was very much worth finishing the right way.

As far as how long the OP:MIA project is going to take, I honestly don't know. I've introduced some rather large changes to original concept of the game (like the multiplayer component and new research trees for instance) that OP:MIA is going to take longer than I orignally had anticipated. On the same token, I was operating in the beginning with A LOT of free time. Now I have far less time to work on anything and OP:MIA (as well as various other projects) have had to take a back seat for awhile. Chances are all of my projects are going to continue to stay in the back seat for a long time simply because life demands a lot right now. That doesn't mean I'm not working on them (in fact, I'm working on the engine specs as I write this). I have all intentions of finishing this project at some point or another. That's why I'm still here.

Anyway, thanks everyone for taking an interest in my project and giving me the support of asking "When is it coming out?"  (thumbsup) It's been very... motivating...  :D