Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp13/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp13/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp13/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2013 - MMOG - Planeten Und Gebaeude Ressourcen
?

Ressourcen

Marco Geertsema

Planung

Zu Beginn des Praktikums haben wir uns überlegt, welche Ressourcen es geben soll.

Planetengebundene Ressourcen

  • Ore/Eisenerz: Eisenerz wird in der Eisenmine abgebaut.
  • Crystal/Kristalle: Kristalle werden in der Kristallmine abgebaut, jedoch nur auf Kristallplaneten vorhanden.
  • Energy/Energie: Diese Ressource wird im Kraftwerk produziert.
  • Citizen/Einwohner: Werden durch die Stadt hergestellt.

Spacecash - Globale Ressource

Unsere Währung im Spiel. Das Geld wird durch die "Steuereinnahmen" erhöht. Daher ist der Betrag, der stetig dazu kommt, abhängig von der Einwohnerzahl und dem Level des Hauptquartiers.

Regeln

Allgemein

  • Die Ressourcen werden in bestimmten Zeitabständen in abhängigkeit von Gebäudelevel und Planetentypen erhöht.
  • Bei Verbrauch werden Ressourcen abgezogen. Beispielsweise beim Bau von Raumschiffen, Gebäudeausbau oder Forschung.
  • Energie wird dauerhaft von den Gebäuden verbraucht. Im negativen Energiezustand wird erst wieder produziert, wenn die Energie im positiven Bereich liegt.

Wertbestimmung

Die Ressourcen werden im Hintergrundprozesse geupdated, daher gehen wir dort näher dazu ein.

Der Wert der Upgedated wird unterliegt einer Formel.

Wert der dazu kommt = Produktion(Gebäude) * Forschung * Planetenspecial

def get_production(type)
    btype = Buildingtype.where(name: type.to_s)
    production_building = self.buildings.where(buildingtype_id: btype).first
    return 0 if production_building.nil?
    prod_building_type = Buildingtype.where(id:production_building.buildingtype_id).first
    prod = prod_building_type.production
 
    #sci_factor =1
    if type == :Oremine
      sci_factor = self.user.get_ironproduction
      c = sci_factor * prod * @spec[0]
    elsif type == :City
      c = @spec[2] *( prod + (self.population/500).to_i)
    elsif type == :Headquarter
      sci_factor = self.user.get_income
      c = sci_factor * @spec[3] * (self.population / 100) * prod
    elsif type == :Powerplant
      sci_factor = self.user.get_energy_efficiency
      c = sci_factor * prod * @spec[1]
    elsif type == :Crystalmine
      c = @spec[4] * prod
    end
    c = c*1.10 if id == user.home_planet_id
    c = c.round
    c = 1 if c < 1
 
    return c   
  end

Update

Hier nur ein kurzer Ausschnitt des Updates, wie genau das abläuft, kann man bei den Hintergrundprozessen nachlesen.

Der bestimmte Wert wird im Zuge des Hintergrundprozesses addiert. Dazu dient die Methode update_ressources.

Bsp.:

if energy > 0
 
      #
      # updates ore production
      #
      ore_production = self.get_production(:Oremine).to_i
      if ore_production.integer? then
        if (self.ore + ore_production) < self.maxore then
          self.ore += ore_production
        else
          self.ore = self.maxore
        end
      end


Page last modified on August 24, 2013, at 03:25 PM