I suck at Objects. Help?



  • Ok so I am going to be working on this game, and I've had a thousand people try to explain object oriented programming to me and i've even written a bunch, but they're all really simple classes.

    (i think) i want a class called "ShipClass". According to the documentation in front of me, there are 51 classes of warship, and 24 classes of Cargo ships. Both of these would derive from "ShipClass".

    Through the use of adjectives, you can determine everything you need to know about the ship, namely it's speed, armor, and "hard points"

    For instance, there's a class of ship called "Dreadnaught" that extends the definition of a "Battleship".

    There can be Super Dreadnaughts, Assault Dreadnaughts, Heavy Dreadnaughts, and Medium Dreadnaughts. Each of those Adjectives describes to the program exactly how much more armor and speed/weaponry they can have (assault dreadnaughts can have say 5 cannons, medium can only have 2, for instance.) it says nothing about what they DO have, just what they are capable of having.

    I'm working on putting this all into a database, and i'd like to have Ship contain whatever values a ship would have, like acceleration, engine space, weapon space, crew space, max armor, max load, max speed, etc. I'd like to be able to extend or distend (is that the opposite) this class if need be (for instance i was told that all "ShipClass" needs is 'acceleration' but i don't buy that)

    Then i want to be able to put on the adjectives at will (through whatever means i need to)

    Do i have to do

    Class Yacht extends ShipClass {}  //(or whatever it is in VB.NET)

    Class Battleship extends ShipClass {} 

    Class Cruiser extends ShipClass {} 

    etc?

    And then how do i make Super Dreadnaughts?

    If i wasn't using objects i'd have an array of booleans to determine what type of ship and what adjectives it had, and use Xors to verify that only one of each type of adjective was applied to whatever ship was being created. Is there a way to translate this into a class?

    Class ShipClass{

    private:

    Boolean isSuper;

    Boolean isHeavy;

    //etc

    }

    if i can get any help with this i shouldn't need help with the rest of the classes, because I'm having a hard time with the complex class structures rather than how to interact with classes themselves (and objects in the class). So i won't be asking "how do i make a PerishableClass object called 'yay-soda' "  or anything like that. :-)

     

    thanks, you guys are a fire hydrant of knowledge.



  • Thinking about it a bit leads me to believe that the adjectives are rather unecessary from a design point of view. a ship has 400 armor or it has 4000 armor, the class doesn't need to know if that's called Super or not.. i guess.

    I can probably just dump all those values into ShipClass and not have to extend it at all except for the base ship types. I guess the database will have to know all of that stuff, but i can just create a table that allows the program to reference the different ship attributes and i can even update it without too much of a headache.



  • Well, you seem to be well on your way to class multiplication hell. :)

    You want to represent your entities as classes, but you also want as few classes as possible. You certainly do NOT want separate classes for HeavyCruiser, MediumCruiser and LightCruiser UNLESS it simplifies the rest of the code or they are fundamentally different. In fact, you would likely do better with a common Ship class that use composition and include a vector (or similar container) or Hardpoint objects, etc.

    Type distinctions could be made through enums rather than run-time type information, for instance:

    
    class ShipBase
    {
        enum TYPE { light, medium, heavy, superheavy } ship_type;
        enum CLASS { freighter, fighter, cruiser, carrier } ship_class;
    };
    


  • IMO you only need new classes when you need different behaviour. If the only difference between a rowboat and a super-dreadnaugh is the values for "size", "speed", "weight" and "number of cannons", you don't need a class hierarchy. But it seems likely to me that a dreadnaugh does something different than a rowboat. You might want to learn about the prototype design pattern, I guess it might be usefull for your purpose.

    Of course the name of the base class should be "Ship", not "ShipClass". "Ship" is most likely an abstract class. From this class, you derive "WarShip" and "CargoShip". WarShip has methods like "fireGuns", while CargoShip might have methods like "loadStuff" and "unloadStuff". From then on, it depends. You might use the prototype design pattern to differentiate between small and large warships; or you might create subclasses to accommodate for the differences between a light cruiser and a heavy dreadnaugh.




  • @Mikademus said:

    Well, you seem to be well on your way to class multiplication hell. :)

    You want to represent your entities as classes, but you also want as few classes as possible. You certainly do NOT want separate classes for HeavyCruiser, MediumCruiser and LightCruiser UNLESS it simplifies the rest of the code or they are fundamentally different. In fact, you would likely do better with a common Ship class that use composition and include a vector (or similar container) or Hardpoint objects, etc.

    Type distinctions could be made through enums rather than run-time type information, for instance:

    
    class ShipBase
    {
        enum TYPE { light, medium, heavy, superheavy } ship_type;
        enum CLASS { freighter, fighter, cruiser, carrier } ship_class;
    };
    

    enum implies only one can be used at any given time? that sounds like what i want, if so.



  • Well, you CAN use enum:s cleverly in C++ to have the variable take more values, as in

    enum VALUE { t1 = 0x0001, t2 = 0x0002, t3 = 0x0004, t4 = 0x0008 } my_value;
    my_value = VALUE::t1 | VALUE::t3;

    (with reservation for mistakes in the bitwise operations)

     but a typical operation would be something like

    Ship a_fighter;
    a_fighter.type = Ship::fighter;
    a_fighter.class = Ship::medium;
    ...
    if (some_ship.type == Ship::carrier) launch_all_ZIG( a_fighter );
    


  • in Cache as a CLS

     <FONT color=#000080>/// Collection of ship types</FONT>
    <FONT color=#000080>Class </FONT><FONT color=#000080>User.ShipClass </FONT><FONT color=#000080>Extends </FONT><FONT color=#000000>(</FONT><FONT color=#000080>%Persistent</FONT><FONT color=#000000>, </FONT><FONT color=#000080>%XML.Adaptor</FONT><FONT color=#000000>)</FONT>
    <FONT color=#000000>{</FONT>

    <FONT color=#000080>Property </FONT><FONT color=#000000>Armor </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>

    <FONT color=#000080>Property </FONT><FONT color=#000000>MaxSpeed </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>

    <FONT color=#000080>Property </FONT><FONT color=#000000>MaxCrew </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Integer</FONT><FONT color=#000000>;</FONT>

    <FONT color=#000080>Property </FONT><FONT color=#000000>TechLevel </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Integer</FONT><FONT color=#000000>;</FONT>

    <FONT color=#000080>Property </FONT><FONT color=#000000>CargoCap </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%ArrayOfDataTypes</FONT><FONT color=#000000>; //Because you can have ships as cargo, or regular cargo, or a black hole... so an array of probably 3 values {other, regular, ships}</FONT>

    <FONT color=#000080>Property </FONT><FONT color=#000000>LifeSupport </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>

    <FONT color=#000080>Property </FONT><FONT color=#000000>Shields </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>

    <FONT color=#000000>}</FONT>



  • No no no no, you're not going to code the/a game in VB? Is there a particular reason, like a course requirement? Please, do use C or C++, or even Java or C#. But do not go down the Path of Pain that is VB games programming, especially if you're going for Windows/DirectX.



  • @Mikademus said:

    No no no no, you're not going to code the/a game in VB? Is there a particular reason, like a course requirement? Please, do use C or C++, or even Java or C#. But do not go down the Path of Pain that is VB games programming, especially if you're going for Windows/DirectX.

    I'm not sure of the language, yet. I'm hoping there's some nifty way to dump the graphics and phyics in C and do everything else in VB. Or C#, but i really don't want to learn quirks of another MS language. :-)



  • @GeneWitch said:

    I'm not sure of the language, yet. I'm hoping there's some nifty way to dump the graphics and phyics in C and do everything else in VB. Or C#, but i really don't want to learn quirks of another MS language. :-)

    You're going to make a game, thus if you know enough of the language I'd really recommend you to go with C++. Unless you are going to make a trivial game, or just a learning experience, you'll need the hardware closeness and all example code ever made will be in C++, . Also, games is one of those areas where you really can benefit from multiple inheritance.  



  • @GeneWitch said:

    <font color="#000080">ShipClass</font>

    @GeneWitch said:

    <font color="#000080">ShipClass</font>

    @GeneWitch said:

    <font color="#000080">ShipClass</font>

    Stop that.  Hungarian warts like "CFoo" and "IFoo" and, in this case, ThingClass are visual and semantic noise in a strongly-typed language.  We already know it's a class; we have the definition available.  Just call it Ship.  Then the code that uses Ship instances doesn't look like ShipClass spaceShip = new ShipClass();.

    IMO, the best way to use inheritance, especially for noun-ish objects like your Ship class, is "not at all".  The first thing you would've done is stuffed a bunch of Ship subclass instances (dreadnaughts, shuttles, etc) in a list and then later tried to get the real type of each Ship back out later.  Not pretty. 



  • You're cargo-culting. 'Start with the classes' is always the wrong approach, but it's what the cargo-cult of OO does because they've watched people who are really good at designing and that's all they saw them do.

    Start by figuring out what the program needs to do. Design work at this stage should focus on the goals of the code and the algorithms that will get you there. Work out the essential parts of each bit of code, and what data they have as input and output.

    When you find a group of related functions that all operate on the same set of data, move them together and draw a class around them. That's where your classes come from. Don't just make them up unless this happens.

    When you find two classes that are largely the same, think about whether any OO features would be useful to let you combine them (as inheritance, polymorphism, mixins, or whatever - focus on what you want to do, not on what the tools offer, then look for tools that happen to match - and if none do, screw it, don't force the code into using a tool that isn't right).

    As you implement the code, continue applying these rules - you never figure out everything in advance, so the classes will have to keep changing.

    People who get really good at this can run through the process very fast in their heads, sometimes without even having to think about it for simple code like this. Then they write down the classes as they go along. But they didn't *start* with the classes - and don't try to emulate them until you can hold an entire design in your head at once. The cargo-cult arose because people didn't understand that really good designers start by spending days or weeks just thinking about the design, before they ever touch a keyboard.

    Maybe you need a tree of 'ship' classes. Maybe you don't. From your description, I'm thinking "no, absolutely not".

    Since I know almost nothing about what your code is doing, this is a complete stab in the dark - but assuming that you have described *everything* relevant, what you want is to load all the stats from a file, keep them in some kind of structure, and extract them based on the contents of each instantiated object - so you would have one 'ship' class, its only member is some kind of class identifier, and it uses that identifier to fetch the values from the structure as necessary.

    If you write more than a dozen lines (hundred lines in Java or C#) of code to implement all that (excluding the bit that reads in the stats), you've probably made it too complicated.



  • @GeneWitch said:

    I'm not sure of the language, yet. I'm hoping there's some nifty way to dump the graphics and phyics in C and do everything else in VB. Or C#, but i really don't want to learn quirks of another MS language. :-)

    Take a look at Lua. It's a relatively simple language, IMO very easy to learn and it's easy to integrate with C. Many professional games have their engines written in C, but a lot of the game scripted in Lua.



  • Classes should be named after real-world things. So, you have a class called Ship...not ShipClass, not CShip, not ShipDip... Ship

     A friend of mine has an open source physics engine for XNA:

     I know he, at one time, had a physics engine out for TrueVision3D as well. You can see TrueVision3D here: http://www.truevision3d.com/home.php

    They used to be completely open source and written in VB (lightweight wrappers to the DirectX platform). It looks like they did a complete rewrite and went to C++ and closed source. but they do a freeware license to at least get you started.

    .Net supports 'flags' for enums. Check those out. I think combinatory enums will solve most of your problems without a need to build an extensive class model



  • @asuffield said:

    Maybe you need a tree of 'ship' classes. Maybe you don't. From your description, I'm thinking "no, absolutely not".

    Since I know almost nothing about what your code is doing, this is a complete stab in the dark - but assuming that you have described *everything* relevant, what you want is to load all the stats from a file, keep them in some kind of structure, and extract them based on the contents of each instantiated object - so you would have one 'ship' class, its only member is some kind of class identifier, and it uses that identifier to fetch the values from the structure as necessary.

    If you write more than a dozen lines (hundred lines in Java or C#) of code to implement all that (excluding the bit that reads in the stats), you've probably made it too complicated.

    cool. I'm using a database that has all the relevant data in it, so the code to make a dreadnaught should just be (psuedo)

    Make a ship object (or whatever)

    shipobject.type("heavy", "Dreadnaught")

    and type will just take the two values, sanity check them and then fetch the values from the database and plug them into the stats variables.

    On a side note, i derived "PC" and "NPC" from Race... (player character and Non-player character).. since race is the most basic and static of the three.

    So following the same logic, Cargoship1 and Dreadnaught45 are going to be ships, not some smaller section.

    I keep looking up cargo cult and i keep forgetting what it means.

    I just had a buddy that said "have a clear idea of what the classes are going to have in them (data, not methods)"

    It was when i was learning Java.

     

    And to everyone else, I know of LUA, i even know a LUA programmer.

    And thanks for the reference to the physics engines. :-)



  • Perhaps i'm mistaken but your description sounds a lot like Space Empire IV. (http://www.malfador.com/)
    They have a demo version, you can look at.

     Also SEIV shows a really modular implementation of units, which i think is just what your going after.

    Ships which have a "class" which describes what kind of stuff can be loaded on the ship, and also denotes it's attributes (weight, speed, size, graphics)


     

     


     



  • @GeneWitch said:

    Make a ship object (or whatever)

    shipobject.type("heavy", "Dreadnaught")

    and type will just take the two values, sanity check them and then fetch the values from the database and plug them into the stats variables.

    You should use enums for the characteristics of your ship e.g. "Warship.new(Warship::Weaponry::HEAVY, Warship::Type::DREADNAUGHT)". That way the code is clearer, and you don't need to sanitize anything.

    @GeneWitch said:

    On a side note, i derived "PC" and "NPC" from Race... (player character and Non-player character).. since race is the most basic and static of the three.

    Feels very bizarre, PC and NPC should at best derive from "character" of which "race" should be an attribute. Either from an enum (used only for skinning) or as a Race object (if variable races have variable attributes e.g. special capacities and stuff)

    @GeneWitch said:

    So following the same logic, Cargoship1 and Dreadnaught45 are going to be ships, not some smaller section.

    Yeah, or one will be a Warship and the other one a Cargoship if it makes sense in the context of the game (e.g. Warships have weapons and Cargoships have cargo but no weapons, some game work like that, in other games any ship can have cargo, weapons, or both)

    @GeneWitch said:

    I keep looking up cargo cult and i keep forgetting what it means.

    It's doing something because you saw someone else do it successfully (monkeying) without understanding the reasons why he did it.

    If you've never read it, I suggest that you read Richard Feynman's Cargo Cult Science, it's englightening and has all the wit and skills of Feynman in it, it'll probably stick. I know it did with me.



  • @Mikademus said:

    No no no no, you're not going to code the/a game in VB? Is there a particular reason, like a course requirement? Please, do use C or C++, or even Java or C#. But do not go down the Path of Pain that is VB games programming, especially if you're going for Windows/DirectX.

    Python is good too, cause it has Pygame. Pygame is über nice.



  • @GeneWitch said:

    I keep looking up cargo cult and i keep forgetting what it means.

    My favorite example....



  • @masklinn said:

    If you've never read it, I suggest that you read Richard Feynman's Cargo Cult Science, it's englightening and has all the wit and skills of Feynman in it, it'll probably stick. I know it did with me.

    <3 Dick Feynman!

    I just finished the Second Biography of him that i read, entitled "Genius" It is amazing, and looks at all the neat stuff that he did as well as his life story. I've used stuff from that book to win arguments about all topics physics so many times it was worth the purchase price many times over.



  • @masklinn said:

    use enums for the characteristics of your ship e.g. "Warship.new(Warship::Weaponry::HEAVY, Warship::Type::DREADNAUGHT)". That way the code is clearer, and you don't need to sanitize anything.

    That may work, but i'd rather be able to take input from anywhere (IE a database or a button on the screen that says "heavy cruiser") and have my code just figure out what it means after it needs it, IE, pull the adjectives out of the database and load the stats into the variables realtime. that way i don't have to ENUM anything (what if i add classes of ships in an expansion? i toss a new record into the database for "fooclass assault ship" and my code doesn't even have to know WTF a fooclass means. Case in point, eventually in the storyline (a year or two after release) a new type of supercruiser gets introduced into the universe that isn't player usable.. it's called a demon class, and it's a 4 man ship that can take out carriers and space stations by itself without a wing supporting it. For those interested, The owner of this demon class is actually the main "good guy" or "bad guy", depending on what race you pick

    @masklinn said:

    Feels very bizarre, PC and NPC should at best derive from "character" of which "race" should be an attribute. Either from an enum (used only for skinning) or as a Race object (if variable races have variable attributes e.g. special capacities and stuff)

    Well, the races determine your base stats. Humans have a certain stats, Til'mek have stats. but they all have the same basic set of stat names (AP, AC, dex, Sta, Cha, lockpick, etc)

    In cache:

     <FONT color=#000080>/// Race base database</FONT>
    <FONT color=#000080>Class </FONT><FONT color=#000080>User.Race </FONT><FONT color=#000080>Extends </FONT><FONT color=#000000>(</FONT><FONT color=#000080>%Persistent</FONT><FONT color=#000000>, </FONT><FONT color=#000080>%XML.Adaptor</FONT><FONT color=#000000>) [ </FONT><FONT color=#000080>ClassType </FONT><FONT color=#000000>= persistent ]</FONT>
    <FONT color=#000000>{</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>RaceName </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%String</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Techlevel </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Integer</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Strength </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Integer</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Stamina </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Integer</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Dexterity </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>LandSpeed </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>SeaSpeed </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Armor </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Integer</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>HP </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Integer</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Punch </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Kick </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Manipulator </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Lock </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Integer</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>AttackSpeed </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>PSIMax </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Agility </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Description </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%String</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Reputation </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%String</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Height </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Weight </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000000>}</FONT>

    and:

     <FONT color=#000080>/// The description of a player character</FONT>
    <FONT color=#000080>Class </FONT><FONT color=#000080>User.PlayerCharacter </FONT><FONT color=#000080>Extends </FONT><FONT color=#000000>(</FONT><FONT color=#000080>%Persistent</FONT><FONT color=#000000>, </FONT><FONT color=#000080>Race</FONT><FONT color=#000000>) [ </FONT><FONT color=#000080>ClassType </FONT><FONT color=#000000>= persistent ]</FONT>
    <FONT color=#000000>{</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Name </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%String</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Level </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%String</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Age </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Integer</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>LocX </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>LocY </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>LocZ </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Bearing </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000080>Property </FONT><FONT color=#000000>Speed </FONT><FONT color=#000080>As </FONT><FONT color=#000080>%Double</FONT><FONT color=#000000>;</FONT>
    <FONT color=#000000>}</FONT>
    @masklinn said:

    Yeah, or one will be a Warship and the other one a Cargoship if it makes sense in the context of the game (e.g. Warships have weapons and Cargoships have cargo but no weapons, some game work like that, in other games any ship can have cargo, weapons, or both)

    Basically any ship can have anything that is allowed by the static set of rules that i am putting in the database or wherever. A tug can have a cannon if it has a hardpoint, and if i decide tugs can have hardpoints, then a tug owner can buy a plasma cannon and attach it to his ship. that's why i am trying to offset allllll game information into a database, so it is really easy to change things without having to screw with the actual code. (the logic code)



  • @GeneWitch said:

    That may work, but i'd rather be able to take input from anywhere (IE a database or a button on the screen that says "heavy cruiser") and have my code just figure out what it means after it needs it, IE, pull the adjectives out of the database and load the stats into the variables realtime. that way i don't have to ENUM anything (what if i add classes of ships in an expansion? i toss a new record into the database for "fooclass assault ship" and my code doesn't even have to know WTF a fooclass means. Case in point, eventually in the storyline (a year or two after release) a new type of supercruiser gets introduced into the universe that isn't player usable.. it's called a demon class, and it's a 4 man ship that can take out carriers and space stations by itself without a wing supporting it. For those interested, The owner of this demon class is actually the main "good guy" or "bad guy", depending on what race you pick

    You can use the "Factory" pattern to keep all the generating-code in one place.

    ShipFactory.createBoat();
    ShipFactory.createCruiser();

    The creating methods can then initialize the class as needed, i.e. "return new Ship(Ship::This, Ship::That, 200, 43, -1);"

    Of course, nothing's stopping you from looking up the parameters through SQL if that's what you want to do, just make a createByName(String shipName); function, Select * FROM ships WHERE name = shipName, and go your merry way..

    Btw, I can only recommend the 'Refactoring' book (Fowler, et. al.), get it from your library if you can. It deals very heavily with removing duplicate code into common classes, which is really one of the big advantages of OO.
     



  • @Nandurius said:

    @GeneWitch said:

    That may work, but i'd rather be able to take input from anywhere (IE a database or a button on the screen that says "heavy cruiser") and have my code just figure out what it means after it needs it, IE, pull the adjectives out of the database and load the stats into the variables realtime. that way i don't have to ENUM anything (what if i add classes of ships in an expansion? i toss a new record into the database for "fooclass assault ship" and my code doesn't even have to know WTF a fooclass means. Case in point, eventually in the storyline (a year or two after release) a new type of supercruiser gets introduced into the universe that isn't player usable.. it's called a demon class, and it's a 4 man ship that can take out carriers and space stations by itself without a wing supporting it. For those interested, The owner of this demon class is actually the main "good guy" or "bad guy", depending on what race you pick

    You can use the "Factory" pattern to keep all the generating-code in one place.

    ShipFactory.createBoat();
    ShipFactory.createCruiser();

    The creating methods can then initialize the class as needed, i.e. "return new Ship(Ship::This, Ship::That, 200, 43, -1);"

    Of course, nothing's stopping you from looking up the parameters through SQL if that's what you want to do, just make a createByName(String shipName); function, Select * FROM ships WHERE name = shipName, and go your merry way..

    Btw, I can only recommend the 'Refactoring' book (Fowler, et. al.), get it from your library if you can. It deals very heavily with removing duplicate code into common classes, which is really one of the big advantages of OO.
     

    I might have it already. i'll look into it. Thanks!



  • Now what was that we told you about VB and games programming?!



  • Hopefully, he only has to deal with VB at work, and codes in a real language in his off-hours... :)



  • @Mikademus said:

    Now what was that we told you about VB and games programming?!

    lewl. this isn't for a game. Do you really think C# is a better pick? i mean don't they just turn out the same thing?



  • @GeneWitch said:

    @Mikademus said:

    Now what was that we told you about VB and games programming?!

    lewl. this isn't for a game. Do you really think C# is a better pick? i mean don't they just turn out the same thing?

    That depends if you do things the VB way or not.  If you use a lot of the VB helper monkey stuff (Cstr, CInt, My Namespace, etc), then no.  If you reflect the MSIL you'll see if comes out different than what you get with C# as it does a lot of additional checks for you.  That is one of the reasons VB can result in slower execution as it does a lot of unnecessary checks.  Some will argue that you should be doing those checks anyways but that isn't always the case.

     

     



  • @GeneWitch said:

    @Mikademus said:

    Now what was that we told you about VB and games programming?!

    lewl. this isn't for a game. Do you really think C# is a better pick? i mean don't they just turn out the same thing?

    With the risk of drawing flak, almost ANYTHING would be a better  pick than VB. The only advantage VB has is that the DirectX documentation also comes in VB flavour. If you're really set on using proprietary solutions based on BASIC for your games development you might check out DarkBASIC (if it is still developed).

    Basically (yikes, lousy pun, me bad): Use another language == perhaps bliss; use VB == certain misery.  



  • @Mikademus said:

    With the risk of drawing flak, almost ANYTHING would be a better  pick than VB. The only advantage VB has is that the DirectX documentation also comes in VB flavour. If you're really set on using proprietary solutions based on BASIC for your games development you might check out DarkBASIC (if it is still developed).

    Basically (yikes, lousy pun, me bad): Use another language == perhaps bliss; use VB == certain misery.  

    I tawt I taw a language bigot!

    I DID I DID!!! 



  • @GeneWitch said:

    @Mikademus said:

    Now what was that we told you about VB and games programming?!

    lewl. this isn't for a game. Do you really think C# is a better pick? i mean don't they just turn out the same thing?

    They've got the same abilities, but the way you'll approach them will probably be different.

    And I still think that you should go with Python and PyGame.



  • This chart actually gives quite a bit of cred to VB for me:

    http://en.wikipedia.org/wiki/Comparison_of_programming_languages#_ref-2 

    I agree that Python would be a better choice though.



  • @rmr said:

    This chart actually gives quite a bit of cred to VB for me:

    http://en.wikipedia.org/wiki/Comparison_of_programming_languages#_ref-2 

    I agree that Python would be a better choice though.

    It's interesting how they consider VB nearly twice as expressive as Java and C++. I think it's a fair assumption that Java and C# are equal in their expressiveness, so this also means that VB is nearly twice as expressive as C#.



  • @ammoQ said:

    It's interesting how they consider VB nearly twice as expressive as Java and C++. I think it's a fair assumption that Java and C# are equal in their expressiveness, so this also means that VB is nearly twice as expressive as C#.

    Does 'type twice as much' equate to expressiveness? If that's the case, I'm going to actually write the spec for my Blessed.Net language.



  • @webzter said:

    @ammoQ said:

    It's interesting how they consider VB nearly twice as expressive as Java and C++. I think it's a fair assumption that Java and C# are equal in their expressiveness, so this also means that VB is nearly twice as expressive as C#.

    Does 'type twice as much' equate to expressiveness? If that's the case, I'm going to actually write the spec for my Blessed.Net language.

    Well, the wikipedia article rates the relative expressiveness of VB with 4.5, while Java and C++ score 2.5.

    "A higher ratio means that each line of code in the language listed accomplishes more than does each line of code in C."



  • @webzter said:

    @ammoQ said:

    It's interesting how they consider VB nearly twice as expressive as Java and C++. I think it's a fair assumption that Java and C# are equal in their expressiveness, so this also means that VB is nearly twice as expressive as C#.

    Does 'type twice as much' equate to expressiveness? If that's the case, I'm going to actually write the spec for my Blessed.Net language.

    A language is considered expressive when typing less does more, when the language's primitives are high level.

    Which doesn't mean that it's readable: ASM has a very low expressivity and is unreadable, Perl has a very high expressivity and is also unreadable. C has a low expressivity (you need many lines to do anything non-trivial) and can be very readable when used well, Python has a high expressivity and can likewise be extremely readable when not misused.

    By every account, APL is one of the most expressive language there is. It's also one of the least readable. At the other end, Whitespace or Moo are also completely unreadable, but also feature an abysmally low expressivity.



  • @masklinn said:

    @webzter said:
    @ammoQ said:

    It's interesting how they consider VB nearly twice as expressive as Java and C++. I think it's a fair assumption that Java and C# are equal in their expressiveness, so this also means that VB is nearly twice as expressive as C#.

    Does 'type twice as much' equate to expressiveness? If that's the case, I'm going to actually write the spec for my Blessed.Net language.

    A language is considered expressive when typing less does more, when the language's primitives are high level.

    Which doesn't mean that it's readable: ASM has a very low expressivity and is unreadable, Perl has a very high expressivity and is also unreadable. C has a low expressivity (you need many lines to do anything non-trivial) and can be very readable when used well, Python has a high expressivity and can likewise be extremely readable when not misused.

    By every account, APL is one of the most expressive language there is. It's also one of the least readable. At the other end, Whitespace or Moo are also completely unreadable, but also feature an abysmally low expressivity.

    you made my head hurt.

     on another note: i have an application that works fine when debugging on my machine, but when i dump it onto the webserver and have it do what it is supposed to, it does it, but slowly, and DW20.exe runs with every call.

    I'm running option explicit and option strict on, and am getting no errors with either compile of the code.

    also, if i open a command line, and run the program from there, it jumps in and out of the code, no crashing.

    Oh, nevermind i found the bug. I forgot to copy a file over into the right directory. :-p

    Hehe! The Debug version was crying about io errors; that's how i nailed it. (the file is supposed to be in the same dir as the exe, the rest of the files the exe accesses are in a CONST directory string.

    option explicit is a pain in the ass, When you're doing file IO, readline reads in as a string (heh) and read() reads in as integers... WTF?

    So i was doing chr(file.read()) to get around that, but then option strict threw a warning at this

    Dim out as integer

    'open file for reading

    out = d.readline() ' throws an error with option strict, but not otherwise (and it worked fine, too)

     I had to change it to this (this is BS)

    <FONT color=#0000ff size=2>

    While</FONT><FONT size=2> d.Peek() > -1

    </FONT><FONT color=#008000 size=2>'peek method of StreamReader object tells how much more data is left in the file

    </FONT><FONT size=2>

         castable = d.ReadLine()

    </FONT><FONT color=#0000ff size=2>     Dim</FONT><FONT size=2> iTemp </FONT><FONT color=#0000ff size=2>As</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>Short</FONT><FONT size=2> = 0S

    </FONT><FONT color=#0000ff size=2>     If</FONT><FONT size=2> Len(castable) <> 2 </FONT><FONT color=#0000ff size=2>Then

    </FONT><FONT size=2>

              out = </FONT><FONT color=#0000ff size=2>Integer</FONT><FONT size=2>.MinValue

    </FONT><FONT color=#0000ff size=2>     End</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>If

    </FONT><FONT size=2>

         CopyMemoryCVI(iTemp, castable, 2I)

         out = </FONT><FONT color=#0000ff size=2>CInt</FONT><FONT size=2>(iTemp) </FONT><FONT color=#008000 size=2>'Cast Short into Integer

    </FONT><FONT size=2>

    </FONT><FONT color=#0000ff size=2>End</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>While</FONT>

    <FONT color=#0000ff size=2><FONT color=#0000ff size=2>

    Private</FONT><FONT color=#000000 size=2> </FONT><FONT color=#0000ff size=2>Declare</FONT><FONT color=#000000 size=2> </FONT><FONT color=#0000ff size=2>Sub</FONT><FONT color=#000000 size=2> CopyMemoryCVI </FONT><FONT color=#0000ff size=2>Lib</FONT><FONT color=#000000 size=2> </FONT><FONT color=#800000 size=2>"Kernel32"</FONT><FONT color=#000000 size=2> </FONT><FONT color=#0000ff size=2>Alias</FONT><FONT color=#000000 size=2> </FONT><FONT color=#800000 size=2>"RtlMoveMemory"</FONT><FONT size=2><FONT color=#000000> </FONT>(</FONT><FONT color=#0000ff size=2>ByRef</FONT><FONT size=2> hDest </FONT><FONT color=#0000ff size=2>As</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>Short</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>ByVal</FONT><FONT size=2> hSource </FONT><FONT color=#0000ff size=2>As</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>String</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>ByVal</FONT><FONT size=2> iBytes </FONT><FONT color=#0000ff size=2>As</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>Integer</FONT><FONT size=2>)</FONT>

    <FONT size=2>Is there a better way? in java can't you just <int>d.readline() ?</FONT>

    <FONT size=2>weird.

    </FONT></FONT>


  • ...in java can't you just <int>d.readline()

    And in VB you can do CType(d.readline,integer) or CInt(d.readline).  Or if you aren't sure about the contents of the file you could use Integer.TryParse



  • @piptheGeek said:

    ...in java can't you just <int>d.readline()

    And in VB you can do CType(d.readline,integer) or CInt(d.readline).  Or if you aren't sure about the contents of the file you could use Integer.TryParse

    Surprisingly enough i figured out the integer.tryparse thing when i was programming a craps simulator yesterday.

    I suppose i'll go and edit the other code.



  • Speaking of crap, I'll write you down as another soul lost to VB. Oh well, have fun.



  • @Mikademus said:

    Speaking of crap, I'll write you down as another soul lost to VB. Oh well, have fun.

    i really don't feel like learning the quirks of C#, and i don't like C++ that much, and java is a giant cluster of WTFs. I'm thinking of learning Python, and maybe ruby (ruby?)

    But as i see it, if i am going to develop for MS platforms, VB is easy cheese. I know programming concepts, vb lets me spell them out simply. Do this, do that, some of this and then exit. Why would i waste time learning C# when there isn't anything that i can do in C# that i couldn't do in VB?

    If your arguement is that i should be using C or C++ you might have a point... but other than that... i can't see any reason to learn some other language when VB has the tools and documentation that i need to acheive what i am trying to do (albiet a little LAMELY.)

    For those that have been tracking this thread...

    I am probably going to get a devel team (ALA http://news.bbc.co.uk/2/hi/technology/6422333.stm) and either use the HL2 engine, the doom III engine, or start from scratch with directX ten. It's an MMO, so the graphics don't have to be superb (people don't expect that from MMOs) - i can scale the graphics system - the physics have to be top notch (the 3d space physics. gravity well physics can be elementary), so i really don't need a huge team. The serious "engine" code can be done by a few people (if we mod HL2 or another engine) or a team of ten (from scratch) in a few months, and the rest of the development time will be storyline, movie-style directing (voice acting, etc), animation, and terrain/texture artistry.

    Seeing as how i am doing the music and the master textures for everything, as well as most of the "foley" tracks, I can cut the team down to say... 10 people total if we do a pre-existing engine, or 20 people total if we have to start from scratch.

    I've seen the Quake and Doom III code, it's not very monolithic. Games aren't elegant code, they're a bunch of disgraceful hacks that work fast and produce cute graphics on the screen. I've had a few people scream at me to use the tribes 2 engine, and a few others mention that i should just mod HL2, ala that sci-fi mod that takes place entirely in space. I really haven't decided, as i need to figure out how the game progression works to decide on a style of engine to use; but since DirectX 10 SDK is out, i see no reason to support linux or mac OS machines.

    I am a fan of open source, but unless there are a ton of people that want to devote themselves to this game, it's going to be closed source, and using the DX 10 SDK with .net as the backbone. Which means it will require XBOX 360 or a PC capable of windows vista... which means that i can almost guarantee the user experience. which also means i won't have to deal with customer problems so much.

    One thing i WILL do is avoid anti-piracy shams. No Pace, no safedisc. just WOW style serial numbers, and online play only.

    So far the team has three people in it. Conceptual mastermind, Lead programmer, and lead artist. Anyone else want to muck around with our team?

    We're not looking to becoming a game studio, really. We want to develop this game, support it, expand the universe, and be done with it. I'm no Chris Taylor, or any other game developing genius. I wish i were, but i'm not. so this game is our baby, and we'd love to see it come out, regardless of how long it takes.



  • @GeneWitch said:

    I am a fan of open source, but unless there are a ton of people that want to devote themselves to this game, it's going to be closed source, and using the DX 10 SDK with .net as the backbone. Which means it will require XBOX 360 or a PC capable of windows vista... which means that i can almost guarantee the user experience. which also means i won't have to deal with customer problems so much.

    If you require Vista, chances are you won't have to deal with customers so much. 



  • I really shouldn't post more in this thread, it's a dead duck, but since I want to sleep well at night I just want to warn you about the road to Hell you're embarking on.

     Let me summarise some of what you're saying.

    • You "know programming concepts"
    • You do not want to learn C, C++, or C#, and Java "is a cluster of WTFs"
    • VB let you spell out the programming concepts easily
    • There isn't anything you can do in C# that you can't do in VB
    • You're going to use a 3rd party graphics engine (HL2, Doom III, or make your own in DX10).
    • You're going to make a top-notch physics engine
    • These engines will be done in a few months
    • You're going to make a "MMO"
    • "Games aren't elegant code, they're a bunch of disgraceful hacks that work fast and produce cute graphics on the screen."
    • Using XBOX 360 or DX10/Vista "means that i can almost guarantee the user experience. which also means i won't have to deal with customer problems so much."
    • "since DirectX 10 SDK is out, i see no reason to support linux or mac OS machines."
    • "the team has three people in it. Conceptual mastermind, Lead programmer, and lead artist."
    • "this game is our baby, and we'd love to see it come out, regardless of how long it takes."

    Now, please don't take what's going to follow as bashing --it is not intended as such-- but please consider what follows, if for no other reason, then to be able to learn from the mistakes you will make.

    First, I don't know how young or green you are, but from what you're writing you seem very novice and idealistic, and quite naïve about real-world programming.  I can tell you I'm very much younger than the oldest folks roaming these halls, some of which have been part of industrial computing since the mainframe days, but I do have solid experience of computer games development, and real-world, as in "successful", games development is very little like what you seem to believe.

    First of all, claiming to know "programming concepts" and looking for a language is like saying "I know music consists of acoustic waveforms and am looking for a genre to start composing in". Second, the idea that games consists of inelegant code and disgraceful hacks, which would legitimise you to try to construct a large-scale game without basically any programming experience whatsoever, is utterly false. Modern games are EXTREMELY complex beasts, and trying to write such in a poor way leads to poor games. The successful ones are maintainable and well-designed. Thirdly, MMOs are the most complex games you can do today. They're huge beasts that makes enormous demands for stability, resource-efficiency and concurrency, as well as extremely well-thought-through real-time client-server responsibility designs. Fourthly, though basic (3D) graphics engines are relatively simple, high-end such are another thing altogether. Regardless of your élan you will NOT make a decent one (i.e. one that looks like from the year 2000) in a couple of months, much less a high-end one. Neither will you manage a physics system built from scratch in that time frame. And you're thinking of doing both at the same time...

    In sum, you're suggesting to create a game of the most complex and stability/efficiency-demanding type today, with utterly inexperienced programmer(s) using the worst possible language for large-scale games development, in too short time, using utterly misguided notions about programming and games development, and with a team completely consisting of idealistic and novice conceptual-designer-wannabies. Before hating me, sit back for a second and thing this through as from a theoretical investor's point of view. The think about what you CAN and SHOULD do, borind as it may appear to your enthusiastic mindset.

    Fist of all, you should LEARN TO PROGRAM -- real, actual programming, not "conceptual" programming. If you wish to make games you should learn to program in the industry standard language(s), and this means C or C++. They're standard for a reason, and that reason is not for being "old languages" -- games, especially large-scale games, require the facilities these languages offer. Then, after gaining the required skillset, you should SELECT YOUR PROJECT based on your areas and level of experience. "MMO"s, as you call them, requires the most and highest levels of skills, thus you should go for something more manageable.

    Though there is much more I could say here, I will leave off, knowing that you'll probably just shrug off what I'm saying anyway. As everyone else you too must learn from your own mistakes. The reason I wrote this was just because you were doing so many at once and as it is now your unerringly headed WTF-land.



  • @Mikademus said:

    I really shouldn't post more in this thread, it's a dead duck, but since I want to sleep well at night I just want to warn you about the road to Hell you're embarking on.

     

    Yeah...I've been keeping quiet here, and actually being a little annoyed at people who keep forcing other languages on you... I do consider VB to be a WTF all it's own, but I kept thinking "hey, the guy just wants to learn some programming techniques by building some game concepts in a language he knows...leave him alone".  But if you think your plan is even a vaguely realistic way to build something like an production-quality MMO, you've got a world of hurt coming. 

    -cw



  • I'm mostly posting in this thread so i don't bump any older threads of mine up for no reason.

    I never said i didn't want to learn c and C++. I know c and C++. I also know enough of java to know that i don't like it, either.

    I also know fortran, but i am not going to code the MMO in fortran. I also know assembler on the IIgs (at least i used to, i've probably forgotten most of it by now); but i don't want a game for the IIgs.

    To reiterate (and so you know i am not shrugging any of you off -- i'm actually learning python right now, for instance).

    I don't expect a production quality MMO to just appear in a few months. I said that the physics engine is going to be top notch for 3d space. if you go take a look at Freespace 2 Open Source project, they have a top notch physics engine in their game (top notch relative to the year it was made, and what processors were capable of).

    The reason i shouldn't need to build a graphics engine from scratch is that HL2 or doom III or something of that nature can provide the first person aspects of the game (like when you're on a planet killing all their mans), and the "in space" aspect is going to be done like "real battleships in space". The bridge will be located deep within the confines of the ship, the fighters are unmanned; I don't need to render anything but a bridge in space, with a video screen showing drive heat signatures, and a 3d projection (think holograph) of 3d space, say 10-100 klicks out (depending on whatever scanners you have bought) around your fleet, with IFF signatures showing up as colors, and mass and heat showing up as size.

    The gameplay style is going to start out as a cross between Knights Of The Old Republic and World of Warcraft and Morrowind, you start out doing chores for people, killing wolves that are attacking their sheep and whatnot, and as your planet progresses together, you can make money and eventually be able to buy a ship. Once you have a ship, in theory you don't need to visit planet surfaces any more (if you don't want to), as you can buy a warship and just escort ships for money, or you can buy a cargo ship as your first ship and pay for escorts (which would be other players who bought warships).

    So, all in all i am really not terribly concerned with the graphical or physics aspects of the game, because they mean less than the player experience of the game overall.

    All i really wanted to do in vb is get a skeleton "game engine" going... like one where i could populate a section of space arbitrarily from a database, and then let the computer just fight it out with itself, so people can see how the space combat system works. I'm not looking to revolutionize the gaming industry with my stunning raytracing lighting vertex animation shader technology. I want to stun them with really awesome planet art, ship art, and fun, epic style space battles.

    If it turns out that Valve's licensing isn't too insane, i may just build it on top of HL2 (or three, or 4, depending on how long our game takes)

    So once again... Just using VB as the skeleton. If you read up i said i wanted the game engine in C. Someone else mentioned doing the logic and scripting in LUA... sounds good to me. Python is a choice i am taking seriously, after seeing that one of the "major" MMOs actually used python as it's source code. That also happens to be in the same genre as the game i am doing.

     And to reply to your comment about accoustic waveforms and needing to pick a genre... That really isn't a good analogy, because i am a musician, and i do have a lot of talent as a producer/composer - but i couldn't write a pop40 song to save my life. I have close friends that can, and i polish their work using the tools i have availible to me in my studio. Everyone is happy and i never have to lay down a C-Maj upbeat track with vocals and backup vocals!

    It's synonomous with this situation. I have close friends that CAN program in all of the languages you guys mentioned, and if they aren't enough, we can either open source the code, or hire outside of our circle. we're hoping to avoid the latter.

    We're also projecting that if everyone involved works on this whenever we have time (aside from our full-time jobs, i mean) that we should have a workable product after about 4 or 5 years. So it's gunna take a while. :-D

     Thanks for your input, your time, your patience, and even your flames. I realize i sound insane when i talk about making a video game. But that's why i come here and blab on about it at great lengths, so you guys will go "that's a horrible idea". and then someone else like CW will come in and go "i second that notion"

    and then i go "well hell, i guess i won't use that language then"

     and was it... ammoQ that said something about vista = no customers? I'd assume that is the case for right now, but give it a couple of years... when more and more complex and awesome games come out for the XBOX360 and ps3 you'll start to see more of them requiring directx 10, multicore, and oodles of video ram and system ram... and that is when you'll see vista take hold. i actually see vista being driven by the game industry, for a change, as opposed to the game industry being driven by microsoft (as it has been since win98)

    Then again, these are just my opinions. and i could be wrong.



  • As an aside, this is the third "game project" that i am taking part in. I just need to get that VB skeleton working to convince other people that the space battles are feasible from a physics standpoint (meaning that modern processors can handle the amount of calculations needed.) - so that i can get real developers in on the real game engine. I really don't want to devote my life to coding for this project; i'm an artist, and not a 'programming artist'. And i'm not even a character artist. I don't even know who we're going to get to do the character modeling and rigging. I have a few people in mind that are really really amazing 2d artists, and i'm thinking of giving them Maya to learn.

    I can't talk about the other two game projects as they are still in development and i am not at liberty to discuss anything about them other than they are both console games for two different consoles.



  • @CodeWhisperer said:

    @Mikademus said:

    I really shouldn't post more in this thread, it's a dead duck, but since I want to sleep well at night I just want to warn you about the road to Hell you're embarking on.

     

    Yeah...I've been keeping quiet here, and actually being a little annoyed at people who keep forcing other languages on you... I do consider VB to be a WTF all it's own, but I kept thinking "hey, the guy just wants to learn some programming techniques by building some game concepts in a language he knows...leave him alone".  But if you think your plan is even a vaguely realistic way to build something like an production-quality MMO, you've got a world of hurt coming. 

    -cw

    I get the feeling that something bad is about to happen, and I just can't not watch.



  • The problem here is that you started the thread asking how to make object and saying that you thought you should have a seperate class for each type of ship.  Then you go on to say that you know programming concepts and if you don't your friends do.  If your friends know the concepts so well why are you coming here to ask if you should make a BattleShipClass extend ShipClass? 


     



  • How many games did you develop before?

    I think you should first try to make Pong!

     



  • @Ice^^Heat said:

    How many games did you develop before?

    I think you should first try to make Pong!

    For starting out I'm a tetris fan. Complete with all the trimmings (highscore table, different game modes, configurable keys etc.). It's obtainable yet complex enough you will get in a complete mess if you don't know what you are doing.

    I've found pong is too simple. You can make every mistake in the book and still produce something that works without too much effort.

    Once you have finished you can pat yourself on the back for being in the small minority of amateur game developers that have actually completed a game. You will probably also develop a tendency to laugh at anybody proposing to make a mmorpig.
     



  • @stinch said:

    @Ice^^Heat said:

    How many games did you develop before?

    I think you should first try to make Pong!

    For starting out I'm a tetris fan. Complete with all the trimmings (highscore table, different game modes, configurable keys etc.). It's obtainable yet complex enough you will get in a complete mess if you don't know what you are doing.

    I've found pong is too simple. You can make every mistake in the book and still produce something that works without too much effort.

    Once you have finished you can pat yourself on the back for being in the small minority of amateur game developers that have actually completed a game. You will probably also develop a tendency to laugh at anybody proposing to make a mmorpig.
     

    IMO Pacman is an even better exercise. Tetris... well, if it works, it works. Pacman is more open for improvement. Smarter ghosts, Smoother animation etc. 


Log in to reply