1. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  2. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still haven't received your rank award? Then please contact the administration.
    Dismiss Notice
  3. Lead your forces to battle in the 15th Techtree Contest. The call is yours, commander!
    Dismiss Notice
  4. The reforging of the races is complete. Come see the 14th Techtree Contest Results.
    Dismiss Notice
  5. It's time to choose your horse in the race - the 32nd Modeling Contest Poll is up!
    Dismiss Notice
  6. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Life of a Dinosaur

Discussion in 'Map Development' started by Riptokus, Feb 1, 2010.

?

Is the Map ready for release?

  1. Yes

    6 vote(s)
    100.0%
  2. No

    0 vote(s)
    0.0%
  1. Riptokus

    Riptokus

    Joined:
    Aug 7, 2007
    Messages:
    112
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    This map has been uploaded as a finished resource.

    It may be found HERE.

    The "C" variant of the Terrain will be attached to this thread.




    Attached is also an "Improved AI" beta. It currently creates such lag that the map is practically unplayable, but for the masochists out there, you are welcome to give it a go.
     

    Attached Files:

    Last edited: Mar 21, 2010
  2. chilla_killa

    chilla_killa

    Joined:
    Apr 17, 2009
    Messages:
    3,378
    Resources:
    39
    Models:
    34
    Icons:
    5
    Resources:
    39
    Cool map, but the terrain is not the best.
    And when I died nothing happened, the game didnt end and I couldn't choose another dinosaur.
    Also when I died, there were 4 corpses.
     
  3. Riptokus

    Riptokus

    Joined:
    Aug 7, 2007
    Messages:
    112
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    If you die in the first 5 minutes, you get another chance. At the 5 minute mark, you will be given a Protoceratops. It is also given to you if you don't pick anything.

    I know about the terrain. Here's the full story.
    I started by making a request for terrain. I ended up with Midnighters accepting. He made no progress for a week, so I searched for another. Leet.Firefox offered to help and worked on it. He said he finished it and he'd send it to me. I waited for months to get it and never did, and eventually I learned he had lost the finished terrain map. After that I asked sheephunter to do it. The current terrain is a result of a combination of the quick terrain I did for the testing (Tree placement) combined with the work sheephunter did (texture and terrain deformations). I never saw either Midnighters or leet.firefox's efforts, though I did see a screenshot of leet.firefox's work and was much impressed by it.
    If anyone actually wants to terrain the map, I am open to letting them, but right now it doesn't look like that will happen.

    As for 4 corpses, I think you were one of the following dinosaurs:
    Iguanodon, Diplodocus, Parasaurolophus, Suchomimus, Triceratops, Tyrannosaurus Rex, or Therizinosaurus. I suspect you might have been a T-Rex.
    Huge-sized dinosaurs drop 4 corpses on death. Large 3, Med 2, Small 1.
     
  4. Riptokus

    Riptokus

    Joined:
    Aug 7, 2007
    Messages:
    112
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    I believe there will be no bugs in the current version. I still have some terrain adjustments I want to do before a final release, but I think I might be just about there when it comes to a finished map. As such, I would appreciate some "dummy reviews" of the map, where I can examine the good, bad, and ugly of gameplay concepts and determine if I should change them or not. I'd also like opinions from people who feel this map isn't ready for release, and the reasons why.

    Thanks everyone!
     
  5. Riptokus

    Riptokus

    Joined:
    Aug 7, 2007
    Messages:
    112
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    The newest, "Practically Complete" version is up. This version should be stable, Polished, and bug free. Minus the loading screen shouting "THIS IS A BETA MAP", it shouldn't require any more tweaks.

    I would greatly appreciate some "Reviewed if it were a finished map" kind of feedback. Harsh or kind, Spam or thought-provoking, I'm basically looking to see if it truly is ready to be a finished resource.

    Please Provide feedback! Thank you!
     
  6. Riptokus

    Riptokus

    Joined:
    Aug 7, 2007
    Messages:
    112
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    This map is about to begin Beta testing again, due to a massive change in the food system and the AI.

    Here is the AI as it currently stands. It is almost assuredly going to be a massive and spectacular failure, and probably will not work, but it is where I have headed with this so far.
    [hidden="AI System]
    • AI
      • Events
      • Conditions
      • Actions
        • Set Temp_UG[1] = (Units in Rain <gen> matching (((Triggering unit) is Mechanical) Equal to False))
        • Unit Group - Pick every unit in Temp_UG[1] and do (Actions)
          • Loop - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • (Owner of (Picked unit)) Not equal to Player 1 (Red)
                • (Owner of (Picked unit)) Not equal to Player 2 (Blue)
                • (Owner of (Picked unit)) Not equal to Player 3 (Teal)
                • (Owner of (Picked unit)) Not equal to Player 4 (Purple)
                • (Owner of (Picked unit)) Not equal to Player 5 (Yellow)
                • (Owner of (Picked unit)) Not equal to Player 6 (Orange)
                • (Owner of (Picked unit)) Not equal to Player 7 (Green)
                • (Owner of (Picked unit)) Not equal to Player 8 (Pink)
              • Then - Actions
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (Load 0 of (Key (Picked unit)) in AI) Equal to No unit
                  • Then - Actions
                    • -------- has no leader --------
                    • Set Temp_Pt[1] = (Position of (Picked unit))
                    • -------- Below: finds someone who Leads Himself. --------
                    • Set Temp_UG[2] = (Units within 1600.00 of Temp_Pt[1] matching (((Load 0 of (Key (Matching unit)) in AI) Equal to (Matching unit)) and ((Unit-type of (Picked unit)) Equal to (Unit-type of (Matching unit)))))
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (Number of units in Temp_UG[2]) Greater than or equal to 1
                      • Then - Actions
                        • Set Temp_UG[3] = (Random 1 units from Temp_UG[2])
                      • Else - Actions
                        • Set Temp_UG[4] = (Units within 1600.00 of Temp_Pt[1] matching (((Load 0 of (Key (Matching unit)) in AI) Equal to (Matching unit)) and ((Unit-type of (Picked unit)) Equal to (Unit-type of (Matching unit)))))
                        • Set Temp_UG[3] = (Random 1 units from Temp_UG[4])
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • (Number of units in Temp_UG[3]) Greater than or equal to 1
                          • Then - Actions
                            • Hashtable - Save Handle Of(Random unit from Temp_UG[3]) as 0 of (Key (Random unit from Temp_UG[3])) in AI
                          • Else - Actions
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (Number of units in Temp_UG[3]) Greater than or equal to 1
                      • Then - Actions
                        • Hashtable - Save Handle Of(Random unit from Temp_UG[3]) as 0 of (Key (Picked unit)) in AI
                      • Else - Actions
                        • -------- Nobody to follow. --------
                        • -------- Needs to move this unit to a new location. --------
                        • Set RandomArray[1] = (Random integer number between 1 and 25)
                        • Set Temp_Pt[2] = (Random point in RegionLocation[RandomArray[1]])
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • (Level of Eat Meat for (Picked unit)) Greater than or equal to 1
                            • (Load 1 of (Key (Picked unit)) from AI) Less than or equal to ((Integer((Max life of (Picked unit)))) / 12)
                          • Then - Actions
                            • -------- Hungry Carn --------
                            • Unit - Order (Picked unit) to Attack-Move To Temp_Pt[2]
                          • Else - Actions
                            • -------- Herb or Not Hungry --------
                            • Unit - Order (Picked unit) to Move To Temp_Pt[2]
                  • Else - Actions
                    • -------- 0 Is not No unit --------
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (Load 0 of (Key (Picked unit)) in AI) Not equal to (Picked unit)
                      • Then - Actions
                        • -------- 0 Is not no unit, Is not Self --------
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • (Load 0 of (Key (Load 0 of (Key (Picked unit)) in AI)) in AI) Equal to (Load 0 of (Key (Picked unit)) in AI)
                          • Then - Actions
                            • -------- Leader leads himself --------
                            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Owner of (Picked unit)) Not equal to (Owner of (Load 0 of (Key (Picked unit)) in AI))
                                • ((Owner of (Load 0 of (Key (Picked unit)) in AI)) is in ActivePlayers) Equal to False
                              • Then - Actions
                                • Unit - Change ownership of (Picked unit) to (Owner of (Load 0 of (Key (Picked unit)) in AI)) and Change color
                              • Else - Actions
                            • Set Temp_Pt[1] = (Position of (Picked unit))
                            • Set Temp_Pt[2] = (Position of (Load 0 of (Key (Picked unit)) in AI))
                            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Distance between Temp_Pt[1] and Temp_Pt[2]) Greater than 1100.00
                              • Then - Actions
                                • Set Temp_Pt[3] = (Temp_Pt[2] offset by (Random real number between 200.00 and 800.00) towards (Random angle) degrees)
                                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • (Level of Eat Meat for (Picked unit)) Greater than or equal to 1
                                    • (Load 1 of (Key (Picked unit)) from AI) Less than or equal to ((Integer((Max life of (Picked unit)))) / 12)
                                  • Then - Actions
                                    • Unit - Order (Picked unit) to Attack-Move To Temp_Pt[3]
                                  • Else - Actions
                                    • Unit - Order (Picked unit) to Move To Temp_Pt[3]
                              • Else - Actions
                          • Else - Actions
                            • -------- Leader does not lead himself, so abandon the leader. --------
                            • Hashtable - Save Handle OfNo unit as 0 of (Key (Picked unit)) in AI
                            • Unit - Order (Picked unit) to Stop
                      • Else - Actions
                        • -------- 0 Is not no unit, Is Self --------
                        • -------- This is for the AI of the leaders. --------
                        • Set Temp_UG[2] = (Units in Rain <gen> matching ((Load 0 of (Key (Matching unit)) in AI) Equal to (Picked unit)))
                        • Set Temp_UG[3] = (Units in Rain <gen> matching (((Load 0 of (Key (Matching unit)) in AI) Equal to (Picked unit)) and ((Load 1 of (Key (Matching unit)) from AI) Less than or equal to ((Integer((Max life of (Picked unit)))) / 12))))
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • (Level of Eat Meat for (Picked unit)) Greater than or equal to 1
                          • Then - Actions
                            • -------- Packs --------
                            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Number of units in Temp_UG[3]) Greater than 1
                              • Then - Actions
                                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • (Owner of (Picked unit)) Equal to Player 10 (Light Blue)
                                    • Or - Any (Conditions) are true
                                      • Conditions
                                        • (Random integer number between 1 and 30) Equal to 1
                                        • (Owner of (Picked unit)) Equal to Player 9 (Gray)
                                  • Then - Actions
                                    • Unit - Change ownership of (Picked unit) to Player 10 (Light Blue) and Change color
                                    • Set Temp_Pt[1] = (Position of (Picked unit))
                                    • Set Temp_Pt[2] = (Temp_Pt[1] offset by (Random real number between 800.00 and 3000.00) towards (Random angle) degrees)
                                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • (Rain <gen> contains Temp_Pt[2]) Equal to False
                                      • Then - Actions
                                        • Set RandomArray[1] = (Random integer number between 1 and 25)
                                        • Set Temp_Pt[3] = (Random point in RegionLocation[RandomArray[1]])
                                        • Unit - Order (Picked unit) to Attack-Move To Temp_Pt[3]
                                      • Else - Actions
                                        • Unit - Order (Picked unit) to Attack-Move To Temp_Pt[2]
                                  • Else - Actions
                                    • Unit - Change ownership of (Picked unit) to Player 9 (Gray) and Change color
                                    • Set Temp_Pt[1] = (Position of (Picked unit))
                                    • Set Temp_Pt[2] = (Temp_Pt[1] offset by (Random real number between 800.00 and 3000.00) towards (Random angle) degrees)
                                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • (Rain <gen> contains Temp_Pt[2]) Equal to False
                                      • Then - Actions
                                        • Set RandomArray[1] = (Random integer number between 1 and 25)
                                        • Set Temp_Pt[3] = (Random point in RegionLocation[RandomArray[1]])
                                        • Unit - Order (Picked unit) to Attack-Move To Temp_Pt[3]
                                      • Else - Actions
                                        • Unit - Order (Picked unit) to Attack-Move To Temp_Pt[2]
                              • Else - Actions
                                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • (Owner of (Picked unit)) Equal to Player 10 (Light Blue)
                                  • Then - Actions
                                    • Unit - Change ownership of (Picked unit) to Player 9 (Gray) and Change color
                                  • Else - Actions
                                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • (Owner of (Picked unit)) Equal to Player 9 (Gray)
                                      • Then - Actions
                                        • Unit - Change ownership of (Picked unit) to Player 11 (Dark Green) and Change color
                                      • Else - Actions
                          • Else - Actions
                            • -------- Herds --------
                            • Set Temp_Pt[1] = (Position of (Picked unit))
                            • Set Temp_UG[4] = (Units within 1300.00 of Temp_Pt[1] matching ((Level of Eat Meat for (Matching unit)) Greater than or equal to 1))
                            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • ((Number of units in Temp_UG[4]) x (Integer((Max life of (Random unit from Temp_UG[4]))))) Greater than or equal to ((Number of units in Temp_UG[3]) x ((Integer((Max life of (Picked unit)))) / 4))
                              • Then - Actions
                                • Set Temp_Pt[2] = (Position of (Random unit from Temp_UG[4]))
                                • Set Temp_Pt[3] = (Temp_Pt[1] offset by (Random real number between 800.00 and 3000.00) towards ((Angle from Temp_Pt[1] to Temp_Pt[2]) + (Random real number between -45.00 and 45.00)) degrees)
                                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • (Rain <gen> contains Temp_Pt[2]) Equal to False
                                  • Then - Actions
                                    • Set RandomArray[1] = (Random integer number between 1 and 25)
                                    • Set Temp_Pt[4] = (Random point in RegionLocation[RandomArray[1]])
                                    • Unit - Order (Picked unit) to Move To Temp_Pt[4]
                                  • Else - Actions
                                    • Unit - Order (Picked unit) to Move To Temp_Pt[3]
                              • Else - Actions
              • Else - Actions
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • CivilizedLevel[(Player number of (Owner of (Picked unit)))] Equal to 0
                  • Then - Actions
                    • Hashtable - Save Handle Of(Picked unit) as 0 of (Key (Picked unit)) in AI
                  • Else - Actions

    [/hidden]
    As soon as I integrate the new food system into this and do a last "mental exercise" runthrough of the AI, I will be running betatests of the new and improved AI.

    What I think this should do is have "heads" of herds. These dinosaurs will be the focal point of movement by other NPC dinos. Dinos will change to the player color of their pack leader (unless that pack leader is a player, in which case they will remain whatever color they currently are, which is changed by pack commands as usual.)

    NPC dinosaurs who are hungry will attack-move to the vicinity of their pack leader. Others will just move.

    Pack leaders will turn hungry and then aggressive if they cannot feed their pack. Since starving members eventually die, it allows the ecosystem to manage itself a little better. They also no longer run so randomly. Herbivores running only run if they have less than 4 times the mass of a carnivore pack. (That means 2 huge dinosaur will not run unless there are at least 4 small, 2 medium, or 1 large carnivore nearby.) They will also run away from a carnivore, rather than in a random direction. They will continue to run away from carnivores until they are no longer close to one.

    There will be a lot more hungry dinosaurs because of this, I am certain. As such, carnivores may gain slow poison as their cripple instead. This will be something that needs to be tested in beta tests.

    All commands will work relatively the same, although follow is now a command to bring nearby units into your pack/herd, and Banish is now something to evict them from your herd. Banish will still make them walk away to avoid confusion, but follow will no longer act as instantaneously, and will now require you to be much closer to the dinos before it affects them. (Once you get them in your pack, they will stay by you no matter what.)

    I plan to overhaul the system that changes units into fighting dinosaurs as well, so as to ensure that two rival packs can fight. That is a project for future consideration and not immediate though.
     
  7. Riptokus

    Riptokus

    Joined:
    Aug 7, 2007
    Messages:
    112
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    Progress report:

    I have gotten the AI and food systems in. The food system appears to work. The AI doesn't seem to work yet.

    The whole mess generates lag as well. I'm not sure how to deal with it yet. Right now I have it set up to run every second, but it skips every other one, so it runs every 2 seconds. The "Minutes" trigger also runs every 2 seconds, opposite of the AI. This ensures that they don't hit at the same time.

    I am thinking about splitting the 18 species into five parts, and running it every 0.2 seconds instead. That should process only 120 units at once at its max with default settings, which is much easier to deal with. I'll offset it so that there is a brief gap between it and the minutes trigger.

    The AI still doesn't work right though, and my priority is getting that to work.
     
  8. Riptokus

    Riptokus

    Joined:
    Aug 7, 2007
    Messages:
    112
    Resources:
    2
    Maps:
    1
    Tutorials:
    1
    Resources:
    2
    Progress Report:
    The AI still exhibits lag, although the scale has decreased. It is steady, and the game remains unplayable. I have released the "current beta" in its current state due to the fact that my ability to edit this seems to be slipping away. The lag problem seems to be associated with the leadership decision tree in the AI code. Hopefully I will find the source of the problem soon and fix it.