Announcement

Collapse
No announcement yet.

Crazy idea? Rewriting SMAX from scratch

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Crazy idea? Rewriting SMAX from scratch

    Well we all know there are some shortfalls in SMAX/SMAC, that could be solved if there was a sort of version two, or the source code was released. I recently thought of the idea: why not rewrite it from scratch? The engine isn't impossible to replicate, and users could contribute to this (open source ), and someone good in graphics could make the graphics. I plan to write this in C/C++, and then use openGL for graphics, and this also will not take off without volunteers who can contribute in any way, any form.

    This might not be an impossible task, again, already I have a source code file in the works that functions as the calculation code for battles. Ie. take factors, calculate, return, and integrate with the rest.

    Main objectives:

    Improve game balance and social balance - crawlers, choppers, ICS (ICS, you must agree, has to be toned down somewhat)

    Fix some bugs

    I think its also good if we thin the line between "builder" and "momentum" things - I mean, people in real life do not adopt a strategy like that at all.

    Rewrite social engineering - its quite good, but could use improvement.

    Even more dynamics! More SP's! More ways of representing the rhythm of unrest that surges through society, more ways of representing of representing the heavy hand of oppression, more ways of representing social structure ! More terrain improvements! Lets make a new wave of possibilities!

    Warfare immersion:

    Improve graphics

    Make more movies?

    Flexibility in community changes - easier to modify the AI/engine/graphics/etc for a new mod, make it open source.

    Some sort of flexible engine: ie. its easier to modify one part without modifying all.

    Changes in detail:

    Moves and attacks: Have a separate value for how many times a units can move, passively, and how many times a unit can move, actively. This might fix the chopper problem. Ie. a fission copter will have 8 moves but only can attack twice.

    Crawlers: Crawlers will now have to move to collect resources. They might now have to represent a worker as in RTS, they collect for a few turns, then they return to base. This might create a nice chain of "trade" though - crawlers will move between bases to collect resources, to be more efficient, (transport them assembly-line like). Economic techs might increase the capacity of crawlers, such that they return every four turns instead of eight. (Also a new command to make them return in emergencies, etc.). This is also makes for interesting situations where crawler dependent cities might effectively have supplies cut off in a siege. Commerce might also deal with this.




    Some more, need suggestions!

    So, what do you think? I am also aware of other failed similar projects, but perhaps we can continue their cause. Import their code and the like.
    36
    Yes, I like it, think its possible, and I want to participate in it.
    25.00%
    9
    I like this idea, and I think its possible.
    38.89%
    14
    I would support this, if not for the fact its impossible
    25.00%
    9
    No! I don't even think there should be improvements!
    11.11%
    4
    Arise ye starvelings from your slumbers; arise ye prisoners of want
    The reason for revolt now thunders; and at last ends the age of "can't"
    Away with all your superstitions -servile masses, arise, arise!
    We'll change forthwith the old conditions And spurn the dust to win the prize

  • #2
    This has occurred to me, and I've played around with what it would take to write a TBS engine, but I haven't gotten far because I have lots of other things to do, both useful and useless.
    "Cutlery confused Stalin"
    -BBC news

    Comment


    • #3
      Well I'm looking for contribution in any way I can. Basically you can reccomend me a kind of structure for code to use, or any tips, or any ideas or suggestions, because any help is a great help.

      So far I've mostly done just void functioname() functions which do some calculations or cross-references, etc. which I intend to call up later. Quite inefficient as of now (cross-references where its not needed), actually, so perhaps you have some experience in that area?

      I haven't gotten far as well, but if I get some good momentum going, I think I will.
      Arise ye starvelings from your slumbers; arise ye prisoners of want
      The reason for revolt now thunders; and at last ends the age of "can't"
      Away with all your superstitions -servile masses, arise, arise!
      We'll change forthwith the old conditions And spurn the dust to win the prize

      Comment


      • #4
        While I am all for improvements to SMAC/X, you'll have to forgive my skepticism. Many projects like this have come and gone during a time when there were more SMAC enthusiasts than now. Anyway, if you are serious about this, you have to start with design. Write up your design docs before you even load up your C++ editor.

        I'll be willing to put in some of my valuable design input .....but ultimately success breeds success. If people see you working hard, and producing something tangible, others will jump onboard. If all people see is a "Wouldn't it be cool if....." thread, don't expect folks to be volunteering to code for you.

        Anyway, I am just regurgitating the obvious wisdom, I wont waste anymore bits on a hard drive half way around the world.

        Good luck.


        edit: Let me leave this on a positive note. If you manage to pull this off, it would be a the perfect thing to add to a resume. Making a game is the best way into a game company's payroll.
        Last edited by livid imp; September 24, 2004, 13:14.
        "They’re lazy troublemakers, and they all carry weapons." - SMAC Manual, Page 59 Regarding Drones
        "Without music, life would be a mistake." -- Friedrich Nietzsche
        "If fascism came to America it would be on a program of Americanism." -- Huey Long
        "Voice or no voice, the people can always be brought to the bidding of the leaders. That is easy. All you have to do is tell them they are being attacked, and denounce the pacifists for lack of patriotism and exposing the country to greater danger. It works the same in any country." -- Hermann Goering

        Comment


        • #5
          If you're actually committed to this, I can finish writing a matrix/dynamic expression tree library that I've been fiddling with off and on (mostly off) for a while. You could use it to parse a parameter file for such things as bureaucracy drone formulae, or SE effects
          "Cutlery confused Stalin"
          -BBC news

          Comment


          • #6
            Hmm that would be helpful. Thanks!

            However, this is my first time writing code for such a large scale project, so I'm worried how best to organise it. I've seen projects split up their code into different headers and such, and I have little knowledge about tying / integrating it all together.

            And yeah, I suppose I should have some design documentation up, so within the coming days I shall try to think of some proper structure.
            Arise ye starvelings from your slumbers; arise ye prisoners of want
            The reason for revolt now thunders; and at last ends the age of "can't"
            Away with all your superstitions -servile masses, arise, arise!
            We'll change forthwith the old conditions And spurn the dust to win the prize

            Comment


            • #7
              Why not use ClanLib? www.clanlib.org

              Anyone here know how to make CVS go?
              #play s.-cd#g+c-ga#+dgfg#+cf----q.c
              #endgame

              Quantum P. is a champion: http://geocities.com/zztexpert/docs/upoprgv4.html

              Comment


              • #8
                Well, I can't say I dislike the idea! However, you'll need a lot of community support to pull it off - games require a large investment of resources, not only code, but graphics, sounds, and so on. Granted, SMAC isn't as complex as, say, a flight sim, but don't think it's going to be easy!

                Originally posted by Natalinasmpf
                However, this is my first time writing code for such a large scale project, so I'm worried how best to organise it. I've seen projects split up their code into different headers and such, and I have little knowledge about tying / integrating it all together.
                A good rule of thumb is, put each class definition in a separate header, and put each class implementation (functions and such) in a separate code file. The idea is to separate interfaces (the way you manipulate classes, which shouldn't change) from implementation (the inner workings of the class, which may change). Modularity is key, it makes maintaining the code a lot easier.

                Originally posted by Natalinasmpf
                And yeah, I suppose I should have some design documentation up, so within the coming days I shall try to think of some proper structure.
                Definately have a design document before you start working. Outline what you want to do and how you plan to do it. The actual programming should come easily from there.

                Originally posted by Natalinasmpf
                Flexibility in community changes - easier to modify the AI/engine/graphics/etc for a new mod, make it open source.
                I agree. What you could do is implement a scripting language, such as Lua, to handle game mechanics. You can script the AI, techs, SPs, etc, and have the engine parse the scripts at runtime. This would make it very easy for the community to modify the game, without having to muck around with the engine.

                Comment


                • #9
                  ClanLib has support for reading XML resource files which specify the locations of stuff that will be loaded and game constants and things that shouldn't require recompilation. It's cross platform, has GUI support which I don't understand and network support that I don't understand either. Maybe if I spent more time reading the docs..

                  I'll stop plugging it now.
                  #play s.-cd#g+c-ga#+dgfg#+cf----q.c
                  #endgame

                  Quantum P. is a champion: http://geocities.com/zztexpert/docs/upoprgv4.html

                  Comment


                  • #10
                    Originally posted by #endgame
                    ClanLib has support for reading XML resource files which specify the locations of stuff that will be loaded and game constants and things that shouldn't require recompilation. It's cross platform, has GUI support which I don't understand and network support that I don't understand either. Maybe if I spent more time reading the docs..

                    I'll stop plugging it now.
                    XML is good, but it lacks the power of a real programming language.

                    Generally, I'm against frameworks. You have no guarantee that it was well-written, or that it will work with your code or even on your particular platform. If you must, stick to low-level frameworks like SDL.

                    Comment


                    • #11
                      I can't help myself.

                      The XML resourcefiles are just to be used to record things like "where do I find the image for unit #234234234?" and changeable game constants like in the alphax.txt (like what goomeister said about using Lua for). ClanLib is a crossplatform SDK for handling all the messy stuff like drawing images to the screen, sounds, etc. I'm not really keen on starting a framework holy war, so I'll quiet down about this.
                      #play s.-cd#g+c-ga#+dgfg#+cf----q.c
                      #endgame

                      Quantum P. is a champion: http://geocities.com/zztexpert/docs/upoprgv4.html

                      Comment


                      • #12
                        I won't be able to help...

                        But my question is just how much are you aiming to change the game?

                        Sometimes I think just rewriting the code so that some bugs are fixed and maybe extra features are added (while keeping the look, feel, format the same) would be sufficient.
                        I once was a slave to the Alderbaran 2 project!
                        Now I shall work towards cIV:AC!... Oh Wait, that's dead too...
                        It's Nword like 'lord' and 'sword'

                        Comment


                        • #13
                          Originally posted by #endgame
                          The XML resourcefiles are just to be used to record things like "where do I find the image for unit #234234234?" and changeable game constants like in the alphax.txt (like what goomeister said about using Lua for).
                          Well, yes, Lua can do that. But it can do infinitely more - you can change the fundamentals of the game. Right now, the effects of each SP, facility, unit ability, etc are hard-coded. With a scripting language, you could move all of that into easy-to-modify scripts. If you wanted to change the AI, you could just modify the script, no need to mess with the source code. We could give all the modders out there a lot more freedom to tinker with the game.

                          Originally posted by #endgame
                          ClanLib is a crossplatform SDK
                          You keep saying that, but let's put it into context: "cross-platform" apparantly means Windows and Linux, with your choice of GCC, VC++, Borland, or MingW. A rather short list - note the omission of Mac and CodeWarrior, which leaves me out on both counts.

                          Cross-platform support is a quixotic goal, and a poor reason to choose a framework. If you must, use a low-level library like SDL, which has implementations on virtually every platform known to man, and avoids some of the problems of higher-level frameworks.

                          Originally posted by Lord Nword
                          Sometimes I think just rewriting the code so that some bugs are fixed and maybe extra features are added (while keeping the look, feel, format the same) would be sufficient.
                          Indeed, but since we don't have the source, we have to build everything from scratch, and if we're doing that, we may as well go all the way.

                          Comment


                          • #14
                            Okay, since there are several kinds of proposals and approaches (I am intrigued by Lua), I'm going to have to ask you people again for suggestions....

                            Also I have never done design documentation before, I don't know how to go about it in format and such.

                            Ie. by using an existing scripting language, how would I go about integrating it? I read its basically "a small library of functions" - so I just include them, or?

                            Right now I have a good draft, but its on paper which I thought of during my free time - I don't know how to make it into actual design documentation.

                            But my question is just how much are you aiming to change the game?


                            Actually two things concerned mainly: balance and modability. And thirdly, perhaps better graphics, but thats less of a priority.
                            Arise ye starvelings from your slumbers; arise ye prisoners of want
                            The reason for revolt now thunders; and at last ends the age of "can't"
                            Away with all your superstitions -servile masses, arise, arise!
                            We'll change forthwith the old conditions And spurn the dust to win the prize

                            Comment


                            • #15
                              http://cs.anu.edu.au/student/comp2100 - Software construction
                              http://cs.anu.edu.au/student/comp3110 - Software analysis and design

                              Just did a quick search of the ANU's computing courses. Perhaps you could get something useful from the lecture notes? I don't actually do the courses... yet.
                              #play s.-cd#g+c-ga#+dgfg#+cf----q.c
                              #endgame

                              Quantum P. is a champion: http://geocities.com/zztexpert/docs/upoprgv4.html

                              Comment

                              Working...
                              X