sábado, marzo 28, 2020

Spyro Reignited Trilogy | Review, Gameplay, News & More...


Spyro Reignited Trilogy Release date, review, gameplay, News, Spyro Reignited Trilogy

Spyro Reignited Trilogy | Review, Gameplay, News & More...

Activision is plunging into its library to restore amazingly, one more platforming great as Spyro: Reignited Trilogy. Cherished by gamers in the 1990s, the first Spyro encounters are set to get an entire makeover with new visuals, mechanics and that's just the beginning. Playing this game just dives you into the 90's when games were crazy for such games where they did not just want graphics, story, blah blah blah to play the game, what they really wanted is just a fun time with their buddies. 


Quick Facts:



  • Initial release date: 13 November 2018
  • Developer: Toys for Bob
  • Engine: Unreal Engine
  • Series: Spyro
  • Platforms: PlayStation 4, Xbox One

Spyro Reignited Trilogy: Release Date

it's a bummer to need to hold up somewhat longer to play the Spyro Reignited Trilogy, Spyro: Reignited Trilogy is coming to PS4 and Xbox One on November 13. Initially planned for a September discharge, the deferral is so the advancement group can put an extra 'love and care' into the experience so that you can relive the beautiful early 90's.


Spyro Reignited Trilogy: Gameplay Preview

Development duties on the remaster have been given to in-house studio Toys For Bob, the studio that shepherded Spyro through the Skylanders establishment from 2011 onwards.



Undoubtedly, the way that Spyro never had the broadened nonappearance that Crash did may mean the wistfulness factor won't be as solid here, basically because we've seen the character all the more as of late. Be that as it may, the opportunity to return to things without purchasing a physical toy will be a charming change from late years, it's probably going to please fans old and new.

The remastering itself is magnificently done – universes hold basically indistinguishable geometry from they did on PS1, however, are more point by point and bright. Voice performer Tom Kenny repeats his job as Spyro all through, including recording new lines for the first game, Players will have the choice of which soundtracks to tune in to, also.






Here's a brief gameplay by PlayStation.

As I have earlier said, This game basically makes you relive the amazing gaming era,  'Stone Hill', from the first Spyro, demonstrates its age the most, with a basic design and scarcely any test, notwithstanding for a child's game. Spyro searches for his dragon elders, head-rams or inhales fire on some uninteresting enemies, and ways out the level. It's charming and windy, however fantastically essential, even with the remaster.




The genuine enjoyment, however, was encountering the Spyro: Year of the Dragon level 'Sunny Villa' out of the blue. Having matured out of being especially keen on the Spyro games when the third installment came around, the remastered rendition was a completely new ordeal.




What's more, there are now save points in the game, with pixies guaranteeing checkpoints are logged consequently as opposed to you saving manually and seek after the best, as previously.



First Impression:

Besides a couple of drawbacks, like Spyro frequently feels dubious to point while completing a head-smash charge, and the tended camera which goes wild whenever you submerged into the water, Spyro Reignited Trilogy is just simply looking magnificent, but still the trio without a doubt require an excess of a lick of paint to cut it in the present market, yet Toys For Bob has beaten itself with the makeover. 


Spyro Reignited Trilogy: Trailers

All the trailers which are currently available look really amazing, and I am sure, many Spyro lovers can't wait to put their hands on this beautiful game. 




Downlod Gta 3 Highle Compresed In 98.0Mb By (Ayush Anand)











                                                         download gta 3 full free verson

gta 3 minimum reqirments2 gb ram1 tb hardiskintel pentunium processorwindow 7.8.xp only                                      (plese downlod winrar software to wotk )                                                     (also downlod direct x)                                                      (plese disable antivirus)the game is given by ayush anand  and sponserd by y.yada gamerGrand Theft Auto III is an action-adventure video game developed by DMA Design and published by Rockstar Games. It was released in October 2001 for the PlayStation 2, in May 2002 for Microsoft Windows, and in October 2003 for the Xbox. A remastered version of the game was released on mobile platforms in 2011, for the game's tenth anniversary. It is the fifth title in the Grand Theft Auto series, and the first main entry since 1999's Grand Theft Auto 2. Set within the fictional Liberty City, based on New York City, the game follows Claude after he is left for dead and quickly becomes entangled in a world of gangs, crime and corruption.The game is played from a third-person perspective and its world is navigated on foot or by vehicle. The open world design lets players freely roam Liberty City, consisting of three main islands. Development was shared between DMA Design, based in Edinburgh and Rockstar, in New York City. Much of the development work constituted transforming popular series elements into a fully 3D world. The game was delayed following the September 11 attacks, to allow the team to change references and gameplay deemed inappropriate.Upon release, the game received critical acclaim, with praise particularly directed at its concept and gameplay. However, the game also generated controversy, with criticism directed at the depiction of violence and sexual content. Grand Theft Auto III became the best-selling video game of 2001, and has sold over 14.5 million copies since. Considered one of the most significant titles of the sixth generation of video games, and by many critics as one of the greatest video games of all time, it won year-end accolades, including Game of the Year awards from several gaming publications. Since its release, it has received numerous ports to many gaming platforms. Its successor, Grand Theft Auto: Vice City, was released in October 2002.



game pssword is = i dontknow password



https://www.sendspace.com/file/7cleo5







Exploring Monster Taming Mechanics In Final Fantasy XIII-2: Data Validation And Database Import

Continuing on with this miniseries of exploring the monster taming mechanics of Final Fantasy XIII-2, it's time to start building the database and populating it with the data that we collected from the short script that we wrote in the last article. The database will be part of a Ruby on Rails project, so we'll use the default SQLite3 development database. Before we can populate the database and start building the website around it, we need to make sure the data we parsed out of the FAQ is all okay with no typos or other corruption, meaning we need to validate our data. Once we do that, we can export it to a .csv file, start a new Rails project, and import the data into the database.


Validating a Collection of Data

Considering that we parsed out 164 monsters with dozens of properties each from the FAQ, we don't want to manually check all of that data to make sure every property that should be a number is a number and all property names are correctly spelled. That exercise would be way too tedious and error prone. This problem of validating the data sounds like it needs an extension to our script. Since we have the data in a list of hash tables, it should be fairly straightforward to create another hash table that can be used to validate each table in the list. The idea with this hash table is to have a set of valid properties as the keys in the table, and the values are regexes that should match each property value that they represent. These regexes will be more specific to each property, since those properties have already matched on the more general regexes that were used to collect the data in the first place. Additionally, every key in each monster hash should be in this template hash, and every template hash key should be in each monster hash. We could get even more detailed with our checks, but this validation should be enough to give us confidence in the data.

To get started, we'll build up the first couple entries in the template hash and write the validation loop. Once it's working, we can fill out the rest of the entries more easily. Here are the name and minimum base HP entries along with the validation loop:
PROPER_NAME_REGEX = /^\w[\w\s]*\w$/
NUMBER_REGEX = /^\d+(:?,\d{3})?$/

VALID_MONSTER = {
"Name" => PROPER_NAME_REGEX,
"Minimum Base HP" => NUMBER_REGEX
}

data.each do |monster|
VALID_MONSTER.each do |key, regex|
if monster.key?(key)
unless monster[key] =~ regex
puts "Monster #{monster["Name"]} has invalid property #{key}: #{monster[key]}."
end
else
puts "Monster #{monster["Name"]} has missing property #{key}."
end
end

monster.each do |key, value|
unless VALID_MONSTER.key?(key)
puts "Monster #{monster["Name"]} has extra property #{key}: #{value}."
end
end
end
This is a fair amount of code, so let's take it in parts. First, we define two regexes for a proper name and a number. The proper name regex is the same as part of our previous property value regex in that it matches on multiple words separated by whitespace, but it has two extra symbols at the beginning and end. The '^' at the beginning means that the next character in the pattern has to appear at the start of the string, and the '$' at the end means that the last character that matches has to be at the end of the string. Together, these symbols mean that the entire string needs to match the regex pattern.

The number regex is similar to the proper name regex, except that it matches on numbers instead of words. The (:?,\d{3}) group matches on a comma followed by three digits because the {3} pattern means that the previous character type, in this case a digit, must be repeated three times. This group is optional, so the regex will match on 1234 as well as 1,234. The number regex is also wrapped in a '^' and a '$' so that the entire string must match the pattern.

The next constant is simply the start of our monster template hash with "Name" and "Minimum Base HP" entries. What follows is the validation loop, and it is laid out about how it was described. First, we iterate through each monster in the data list that we have already populated with the monsters from the FAQ. Within each monster we iterate through every entry of the valid monster template. If the monster has the property we're looking at, we check if the property value matches the regex for that property. If it doesn't, we print out an error. If the property doesn't exist, we print out a different error. Then we iterate through every property of the monster, and if a property doesn't exist in the template, we print out another error.

If we run this script now, we end up with a ton of errors for extra properties because we haven't added those properties to the template, yet. However, from looking at the first few monster's outputs, it appears that the other checks are working, so we can start filling out the rest of our template. We can quickly add in the obvious properties, checking the script periodically to make sure we haven't gone astray. The mostly finished template looks like this:
PROPER_NAME_REGEX = /^\w.*[\w)!%]$/
NUMBER_REGEX = /^\d+(:?,\d{3})?$/
SMALL_NUMBER_REGEX = /^(\d\d?\d?|N\/A)$/
PERCENTAGE_REGEX = /^(\d\d?\d?%|N\/A)$/
LIST_REGEX = /^((:?All )?\w+(:?, (:?All )?\w+)*|N\/A)$/
FREE_TEXT_REGEX = /^\S+(?:\s\S+)*$/
TIME_REGEX = /^\d\d?:\d\d$/

VALID_MONSTER = {
"Name" => PROPER_NAME_REGEX,
"Role" => PROPER_NAME_REGEX,
"Location" => PROPER_NAME_REGEX,
"Location2" => PROPER_NAME_REGEX,
"Location3" => PROPER_NAME_REGEX,
"Max Level" => SMALL_NUMBER_REGEX,
"Speed" => SMALL_NUMBER_REGEX,
"Tame Rate" => PERCENTAGE_REGEX,
"Minimum Base HP" => NUMBER_REGEX,
"Maximum Base HP" => NUMBER_REGEX,
"Minimum Base Strength" => SMALL_NUMBER_REGEX,
"Maximum Base Strength" => SMALL_NUMBER_REGEX,
"Minimum Base Magic" => SMALL_NUMBER_REGEX,
"Maximum Base Magic" => SMALL_NUMBER_REGEX,
"Growth" => PROPER_NAME_REGEX,
"Immune" => LIST_REGEX,
"Resistant" => LIST_REGEX,
"Halved" => LIST_REGEX,
"Weak" => LIST_REGEX,
"Constellation" => PROPER_NAME_REGEX,
"Feral Link" => PROPER_NAME_REGEX,
"Description" => FREE_TEXT_REGEX,
"Type" => PROPER_NAME_REGEX,
"Effect" => FREE_TEXT_REGEX,
"Damage Modifier" => FREE_TEXT_REGEX,
"Charge Time" => TIME_REGEX,
"PS3 Combo" => FREE_TEXT_REGEX,
"Xbox 360 Combo" => FREE_TEXT_REGEX,
"Default Passive1" => PROPER_NAME_REGEX,
"Default Passive2" => PROPER_NAME_REGEX,
"Default Passive3" => PROPER_NAME_REGEX,
"Default Passive4" => PROPER_NAME_REGEX,
"Default Skill1" => PROPER_NAME_REGEX,
"Default Skill2" => PROPER_NAME_REGEX,
"Default Skill3" => PROPER_NAME_REGEX,
"Default Skill4" => PROPER_NAME_REGEX,
"Default Skill5" => PROPER_NAME_REGEX,
"Default Skill6" => PROPER_NAME_REGEX,
"Default Skill7" => PROPER_NAME_REGEX,
"Default Skill8" => PROPER_NAME_REGEX,
"Special Notes" => FREE_TEXT_REGEX,
}
Notice that the PROPER_NAME_REGEX pattern had to be relaxed to match on almost anything, as long as it starts with a letter and ends with a letter, ')', '!', or '%'. This compromise had to be made for skill names like "Strength +10%" or constellation names like "Flan (L)" or feral link names like "Items Please!" While these idiosyncrasies are annoying, the alternative is to make much more specific and complicated regexes. In most cases going to that extreme isn't worth it because the names that are being checked will be compared against names in other tables that we don't have, yet. Those data validation checks can be done later during data import when we have the other tables to check against. Waiting and comparing against other data reduces the risk that we introduce more errors from making the more complicated regexes, and we save time and effort as well.

The location property has an odd feature that makes it a bit difficult to handle. Some monsters appear in up to three different areas in the game, but it's only a handful of monsters that do this. Having multiple locations combined in the same property is less than ideal because we'll likely want to look up monsters by location in the database, and we'll want to index that field so each location value should be a unique name, not a list. Additionally, the FAQ puts each location on a separate line, but not prefixed with the "Location-----:" property name. This format causes problems for our script. To solve both problems at once, we can add "Location2" and "Location3" properties anywhere that a monster has a second or third location by directly editing the FAQ.

This template covers nearly all of the monster properties, except for the level skill and passive properties. We'll get to those properties in a second, but first we have another problem to fix. It turns out that the two location properties we added and the last three properties in the template don't always occur, so we have to modify our check on those properties slightly:
OPTIONAL_KEYS = [
"Location2",
"Location3",
"Default Passive1",
"Default Passive2",
"Default Passive3",
"Default Passive4",
"Default Skill1",
"Default Skill2",
"Default Skill3",
"Default Skill4",
"Default Skill5",
"Default Skill6",
"Default Skill7",
"Default Skill8",
"Special Notes"
]
# ...
elsif !OPTIONAL_KEYS.include? key
puts "Monster #{monster["Name"]} has missing property #{key}."
end
# ...
We simply change the else branch of the loop that checks that all properties in the template are in the monster data so that it's an elsif branch that only executes if the key is not one of those optional keys.

Now we're ready to tackle the level properties. What we don't want to do here is list every single level from 1 to 99 for both skill and passive properties. There has to be a better way! The easiest thing to do is add a check for if the key matches the pattern of "Lv. XX (Skill|Passive)" in the loop that checks if each monster property exists in the template, and accept it if the key matches and the value matches the PROPER_NAME_REGEX. This fix is shown in the following code:
LEVEL_PROP_REGEX = /^Lv\. \d\d (Skill|Passive)$/
# ...
monster.each do |key, value|
unless VALID_MONSTER.key?(key)
if key =~ LEVEL_PROP_REGEX
unless value =~ PROPER_NAME_REGEX
puts "Monster #{monster["Name"]} has invalid level property #{key}: #{value}."
end
else
puts "Monster #{monster["Name"]} has extra property #{key}: #{value}."
end
end
end
# ...
I tried to make the conditional logic as simple and self-explanatory as possible. I find that simpler is better when it comes to logic because it's easy to make mistakes and let erroneous edge cases through. If this logic was any more complicated, I would break it out into named functions to make the intent clearer still.

With this addition to the data validation checks, we've significantly reduced the list of errors from the script output, and we can actually see some real typos that were in the FAQ. The most common typo was using "Lvl." instead of "Lv." and there are other assorted typos to deal with. We don't want to change the regexes to accept these typos because then they'll appear in the database, and we don't want to add code to the script to fix various random typos because that's just tedious nonsense. It's best to fix the typos in the FAQ and rerun the script. It's not too bad a task for these few mistakes.

Exporting Monsters to a CSV File

Now that we have this nice data set of all of the monster properties we could ever want, we need to write it out to a .csv file so that we can then import it into the database. This is going to be some super complicated code. Are you ready? Here it goes:
require 'csv'
opts = {headers: data.reduce(&:merge).keys, write_headers: true}
CSV.open("monsters.csv", "wb", opts) do |csv|
data.each { |hash| csv << hash }
end
Honestly, Ruby is one of my favorite languages. Things that you would think are complicated can be accomplished with ease. Because we already structured our data in a csv-friendly way as an array of hashes, all we have to do is run through each hash and write it out through the CSV::Writer with the '<<' operator.

We need to take care to enumerate all of the header names that we want in the .csv file, and that happens in the options that are passed to CSV.open. Specifically, headers: data.reduce(&:merge).keys tells the CSV::Writer what the list of header names is, and the writer is smart enough to put blank entries in wherever a particular header name is missing in the hash that it is currently writing out to the file. The way that code works to generate a list of header names is pretty slick, too. We simply tell the data array to use the Hash#merge function to combine all of the hashes into one hash that contains all of the keys. Since we don't care about the values that got merged in the process, we simply grab the keys from this merged hash, and voila, we have our headers.

The .csv file that's generated from this script is a real beast, with 204 unique columns for our 164 monsters. Most of those columns are the sparsely populated level-specific skills and passive abilities. We'll have to find ways to deal with this sparsely populated matrix when using the database, but it should be much better than dealing with one or two fields of long lists of abilities. At least, that's what I've read in books on database design. I'm learning here, so we'll see how this goes in practice.

Importing Monsters Into a Database

This part isn't going to be quite as easy as exporting because we'll need to write a database schema, but it shouldn't be too bad. Before we get to that, we need to create a new Ruby on Rails project. I'll assume Ruby 2.5.0 or higher and Rails 6.0 are installed. If not, see the start of this Rails Getting Started guide to get that set up. We start a new Rails project by going to the directory where we want to create it and using this Rails command:
$ rails new ffxiii2_monster_taming
Rails generates the new project and a bunch of directories and files. Next, we descend into the new project and create a new model for monsters:
$ cd ffxiii2_monster_taming
$ rails generate model Monster name:string
In Rails model names are singular, hence "Monster" instead of "Monsters." We also include the first database attribute that will be a part of the migration that is generated with this command. We could list out all 204 attributes in the command along with their data types, but that would be terribly tedious. There's an easier way to get them into the migration, which starts out with this code to create the Monster table:
class CreateMonsters < ActiveRecord::Migration[6.0]
def change
create_table :monsters do |t|
t.string :name

t.timestamps
end
end
end
All we have to do is add the other 203 attributes along with their data types and we'll have a complete table ready to generate, but how do we do this efficiently? Conveniently, we already have a list of the attribute names as the header line in the monsters.csv file. We just have to copy that line into another file and do some search-and-replace operations on it to get the list into a form that can be used as the code in this migration file.

First, we'll want to make a couple changes in place so that the .csv header has the same names as the database attributes. This will make life easier when we import. All spaces should be replaced with underscores, and the periods in the "Lv." names should be removed. Finally, the whole line should be converted to lowercase to adhere to Rails conventions for attribute names. Once that's done, we can copy the header line to a new file, replace every comma with a newline character, and replace each beginning of a line with "      t.string " to add in the attribute types. They are almost all going to be strings, and it's simple to go back and change the few that are not to integers, floats, and times. I did this all in Vim, but any decent text editor should be up to the task. Now we have a complete migration file:
class CreateMonsters < ActiveRecord::Migration[6.0]
def change
create_table :monsters do |t|
t.string :name
t.string :role
t.string :location
t.string :location2
t.string :location3
t.integer :max_level
t.integer :speed
t.string :tame_rate
t.string :growth
t.string :immune
t.string :resistant
t.string :halved
t.string :weak
t.string :constellation
t.integer :minimum_base_hp
t.integer :maximum_base_hp
t.integer :minimum_base_strength
t.integer :maximum_base_strength
t.integer :minimum_base_magic
t.integer :maximum_base_magic
t.string :feral_link
t.string :description
t.string :monster_type
t.string :effect
t.float :damage_modifier
t.time :charge_time
t.string :ps3_combo
t.string :xbox_360_combo
t.string :default_passive1
t.string :default_passive2
t.string :default_passive3
t.string :default_passive4
t.string :default_skill1
t.string :default_skill2
t.string :default_skill3
t.string :default_skill4
t.string :default_skill5
t.string :default_skill6
t.string :default_skill7
t.string :default_skill8
t.string :special_notes
t.string :lv_02_passive
t.string :lv_02_skill
#...
# over a hundred more lv_xx attributes
#...
t.string :lv_99_passive
t.string :lv_99_skill

t.timestamps
end
end
end
Now, we can run this migration with the command:
$ rails db:migrate
And we have the beginnings of a monster table. We just need to populate it with our monsters. Rails 6.0 makes this task quite simple using a database seed file, and since we have the same names for the database attributes as the .csv file column headers, it's dead simple. In the lib/tasks/ directory, we can make a file called seed_monsters.rake with the following code:
require 'csv'

namespace :csv do

desc "Import Monster CSV Data"
task :import_monsters => :environment do

csv_file_path = 'db/monsters.csv'

CSV.foreach(csv_file_path, {headers: true}) do |row|
Model.create!(row.to_hash)
puts "#{row['name']} added!"
end
end
end
When we run this task, the code is going to loop through each line of the .csv file (that we make sure to put in db/monsters.csv), and create a monster in the database for each row in the file. We also print out the monster names so we can see it working. Then it's a simple matter of running this command:
$ rails db:seed
And we see all of the monster names printed out to the terminal, and the database is seeded with our 164 monsters.

We've accomplished a lot in this post with running some validation checks on the monster data, exporting it to a .csv file, creating a database table, and importing the monsters.csv file into that table. We still have plenty to do, creating and importing the other tables and relating the data between tables. That will be the goal for next time.

lunes, marzo 23, 2020

DE: Tips And Tricks On Movement

Archon School is the best School.

I'm going to be traveling on business soon so I want to get this one out to you guys ASAP.  This is a quick article on some tips and tricks when it comes to vehicle-heavy play.  As you can see in a lot of my lists, it has a lot to do with vehicles.  However, in order for DE players to get the most out of their vehicles and the units inside them, you have to be very careful in how you play them.

Dark Eldar vehicles are powerful because they have Fly and great movement, however, they are fragile and if you use them incorrectly, they will die like bitches and so will your dudes.  If you're going to die, you better kill a lot of shit to make your death worthwhile.

Before we begin, here are some useful terms for you to remember:

Falling Back
Units starting the Movement phase
within 1" of an enemy unit can either
remain stationary or Fall Back. If you
choose to Fall Back, the unit must end its
move more than 1" away from all enemy
units. If a unit Falls Back, it cannot
Advance (see below), or charge (pg 182)
later that turn. A unit that Falls Back
also cannot shoot later that turn unless it
can FLY.

Open-topped: Models embarked on this model can attack
in their Shooting phase. Measure the range and draw line
of sight from any point on this model. When they do so,
any restrictions or modifiers that apply to this model also
apply to its passengers; for example, the passengers cannot
shoot if this model has Fallen Back in the same turn,
cannot shoot (except with Pistols) if this model is within
1" of an enemy unit, and so on. Note that the passengers
cannot shoot if this model Falls Back, even though the
Raider itself can.

Hovering: Instead of measuring distance and ranges to and
from this model's base, measure to and from this model's
hull or base (whichever is closer).

Airborne: This model cannot charge, can only be
charged by units that can FLY , and can only attack or be
attacked in the Fight phase by units that can FLY.

Look at this threat range man.

OK, now we're ready to begin.  First, I want you to look at this picture for at least 5 minutes.  Look at the measuring tape, and then bask in the glory that is DE movement and threat range.  You get out of the vehicle by measuring from the hull (including the tip of that Shock Prow) for 3".  You move 7" with your Warriors and 8" with your Wyches.  You then have roughly 1" because you measure to the edge of your 25mm base, so you have a total movement hull to edge of base of 11".  You then have a Rapid Fire range of 12", your Blasters reach out to 18", and the rest of your shit that matters literally hits from a mile away.  Just with Rapid Fire Splinters mean you have a total threat of a little over 23" out of a transport when you measure from the base.  This is why Obsidian Rose is so worth it to me, because it extends the threat range of this bullshit even further.

Before we continue, I want to say that if you're playing with Warriors in a gunboat, you want to stay in that gunboat as long as possible.  This is because the Raider is Open-topped and you can get much more mileage out of it with better durability (T5 10W 4+/5++/6+++) than shooting at paper armor Warriors out in the open.  You have much greater threat range inside a Raider as well, since the damn thing can move 14" and you can still Rapid Fire out of it measuring from the hull.  That means you have a threat range of 26" of threat, which is a few inches greater than your Warriors walking on foot.  Yes, you heard that right, your Warriors move almost as fast as your Raiders.  Let it sink it good and long.

So why get out?  Because your Archon's aura doesn't work while you're inside the Raider.  It only works when you're outside which is why it's very worthwhile to sometimes unload all of your shit within 3" of your Raider (so they can quickly jump back in next round), get within 6" of that sweet ass bubble of the Archon, and then unload like crazy.  It's like having Flayed Skull's re-roll 1s for all of your weapons.  If you have Writ of the Living Muse while using Black Heart, here's all those crazy re-roll 1s to Wound as well.  However, if you don't need the re-rolls, just sit in the Raider for as long as possible because even if the Raider is engaged, you can still disembark from it and not count as Fallen Back for your Warriors.  You just have to get out first before your Raider Falls Back.

Get out, get buff, shoot, get scooped.

This is what I mean when I say get out, get the bonus from the Archon, and reap the whirlwind.  You're still within 3" of your Raider so you can taxi back in next movement and your Archon is still in range because 6" from base to base is actually ridiculously long.  The biggest thing I want you to take away from this picture is that I angled the camera downwards deliberately here.  Your Warriors can fire from beneath your Raider because Line of Sight is a real thing (model's point of view).  Sure, they can probably only see something in front of them, but LoS is one of those things I will bring up time and time again with Dark Eldar.  LoS really matters for them because denying damage while doing damage is the key hallmark of the faction.

Another subtle tip from this example is that the Archon has 2 units in front of him before he can be shot at if your opponent doesn't have any flyers of their own.  Be very wary when there are flyers on the map because they can zoom across the battlefield and eat you alive if you're not careful.  Those damn Hemlocks of mine have claimed so many careless generals' lives.

Weapon ranges are important.

There is a lot going on in this picture so I'm going to try to explain piecemeal.  The first thing I want you guys to look at is the range and coherency of the models.  Note that all my units in the front drawing red are in Rapid Fire of that unit of Wraithguard while the most valuable damage weapons, the Blasters, are in the back marked yellow.  The reason why I chose to show this off is that when you pull models, you can pull the extra rifles from the front to possibly deny a charge, and to preserve your longer ranged weapons whenever possible.  As a shooty army, you should preserve as much damage whenever you can, however you can.

The second thing I want to show here is the placement of the Raider in front of the Wraithguard.  Yes, I know they're WG and they shoot like crazy, but pretend they aren't for a second and I'm just using them as models.  The Raider is long, a little over 7" and acts as a perfect defensive obstacle for units that want to charge your paper armor duders in the back.  By putting a Raider in front of them, you form an artificial wall for your opponents to go around.  Therefore, you prolong the charge distance of your enemies and keep your Warriors alive another round (possibly).  Sometimes, this means you have to make sacrifices.  For Dark Eldar, I strongly encourage you to employ such tactics because, for us, it's any means to the end.  It's both fluffy and is perfectly applicable in-game.

Here's where Fly comes in handy.  If you have units inside the Raider, once you Fall Back with the Raider, they cannot shoot.  What you do here instead is:  Disembark your Warriors out of the Raider first and then Fall Back with your Raider so they can both shoot.  You just need to be mindful that you're more than 1" away from the enemy when you get out.  If your Warriors are caught in the open and are now in melee, they can't Fall Back and shoot (not conventionally at least).  Try and avoid this at all costs.  Your Raider, however, has the Fly rule and can Fall Back and shoot.  This is why if they don't kill the Raider, they won't stop it from firing on them.  The same applies to our Ravagers as well.

Now you're in range, now you're not.

Next picture is just more salt to injury.  Let's pretend those WG don't auto-hit the Razorwing and therefore will murder him.  Instead, let's treat them like TH/SS Terminators or something.  They see a juicy target, or rather, multiple juicy targets to charge.  Hmm, that Raider is 9" away, and those Warriors are a little under 12 so it's not impossible.  Oh boy, here comes a flyer 1" away.  Yup, I just increased the charge distance of those Terminators to barely possible on the Raider and not possible at all on the Warriors.  It gets even sadder because if you declare the charge because you're not careful and account for the distance traveled, I can still Overwatch even if you fail.  This is the advantage of the Airborne special rule that flyers have.  Unless that unit has Fly, you should do this and make your opponent really upset.

MSU is wonderful when used correctly.

OK, this little picture shows you the value of having multiple units in a Raider.  The above there is 2 units of 5 Warriors (2x5 config) with Blasters in a single Raider.  Everything is in Rapid Fire range and the Blasters are slightly in the back (like they should be).  Red and blue symbolizes the first movement action I take, then the second, and yellow presents where the Raider goes everyone disembarks so I can scoop up blue squad next round if they're still around.  Always have an exit strategy and a follow-up plan.  Too many times I see players just do what's in the moment and not plan ahead.  This is not how Dark Eldar plays because misplays or stupidity can literally end the game for us.  You have to be methodical, cunning and smart with how you play the game.  Now that my plan is laid out, I lay into my targets with firepower.

MSU is an abbreviation for Multiple Small Units.  This has been around forever and I've played way too many years of DE, High Elves, Dark Elves and other MSU-based armies to understand the value of it.  For Dark Eldar, this has some great uses because it allows you to do shit like the above picture.

Here are some of the other benefits of having 2x5:
  • Can split up squad as and when needed
  • Same number of Blasters as 10-man units
  • Can double up on PGLs or other sergeant weapons
  • Less vulnerable to Ld
  • Can build Brigades fast, but you also fill slots quick

The biggest boon is your ability to split up:  Your opponent has to shoot one squad to death instead of 2 so he can oversaturate fire and potentially waste shots.  This is mainly because when you declare targets, you have to declare where all your shots are going and from which guns before you roll dice.  This means if you really want a squad dead, you have to commit.  Not that it takes a lot to kill off DE infantry units in the open, but being frugal on shots or some lucky 6+++ saves means that a sole Blaster dealing S8 AP-4 D6 damage is going to go around shooting you in the dick.

Likewise, if you spread wide enough, he now has 2 targets to charge instead of 1.  Look at the distance between the two units above.  He's definitely going to commit to one side if he wants a good chance, and even if he charges one squad, that's still another Blaster that's free to shoot and not in Fall Back mode.

It all comes together to make your opponents' life miserable.

We're almost done guys, hang in there.  Look at this example above:  I placed the Archon within buff range of both units while placing two Raiders there to form the Great Wall of bad decisions.  They obviously cannot go around to assault my dudes because that's an impossible charge.  They can't fire on the Archon because there are multiple units in front of him.  The only logical target there is the Raiders, and if they charge into them, Raiders are wide enough (almost 3") to stop any follow-up Consolidation prize in the Warriors in the front.  The only thing they can do is Consolidate into the other Raider, in which case I'll Fly away and shoot him with my entire army next turn.

Now imagine I had about 4 more squads of Warriors in the back there by my Archons ready to go too.  That is a lot of units now ready to follow-up, amplified damage via the Archon's bubble, and ready to lay waste to the units who over-extended and are now in Rapid Fire range of a lot more guns.  This is an instance where charging the enemy is actually bait because it draws them in closer to the kill.  What looks like suicidal Raiders at first are now very worth it because you might have traded an 85-point Raider that is now fodder, with 225 points of key damage dealers.  That is a huge points swing in your favor.

Great, now you're playing like Dark Eldar, or in fact, any Eldar:  There is a reason why you think you're superior to all your enemies and have this outrageous arrogance around you.  You want to force as many decisions for your opponent as possible because the more decision trees you construct, the more paths there are to failure.  Shore this up with baits, feints, LoS, cover, outranging, and movement shenanigans, and you're one step closer to becoming a better Eldar player.

Be mindful of your opponents' most potent weapons and their range.

We're going to take a brief moment here and explore what it means to charge the right way and charge the wrong way.  This is because we have to be constantly reminded me of our opponents' weapon ranges and what that means for our more fragile units.

What I'm going to attempt to do here is to charge my Raider first so I can tie up those units so my lightly armored Wyches can get in there unhindered and do their thing without having to worry about Overwatch.  This is very important for all Dark Eldar players unless you're playing Coven; in which case you probably don't give a fuck because T6 4++ FNP 4W Grots are balanced units.

For example, the Wraithguard up there all have 8" D-Scythes.  They will eat me alive if I charge in there while I'm in range of all their weapons.  Likewise, picture a unit of 10-man Space Marines with Meltaguns in there as well.  This is where your knowledge of weapon ranges come into play.  You know the range of the Meltagun (12", 6" melta range) and you know where the meltas are located.  Great, now don't be within their melta range and position your Raider so that you outrange his greatest chance to hurt you.  Bolters aren't shit compared to a lucky melta shot.

This is how you do it.

Vroom, 14" of movement later, now we're talking:  Look at the position of the Raider here after I relocated.  Now, only ONE of the FIVE Wraithguard with D-Scythes have range onto my Raider.  If I'm feeling extra cheeky, I can be at 8.1" away from him so he can't OW me at all (if you're out of range, you can't declare OW).  But then again, my charge will be a little longer, so there's a risk vs. reward scenario there.  However, I want to mention that my Wyches are positioned the same way, concaved a little because now only 2 of the WG can hit the closest Wyches vs. everyone else who was conveniently placed 8.1" away.  I will pull from the back, of course, allowing my closer Wyches to get the charge and bring the rest of the girls in.  If I'm running a 2x5 squad of Wyches, the principle here still stands.  To min-max, you move the Wyches in a checkerboard formation so both squads have the same chances to get in.  Remember again; measure twice, move once.  That is the Dark Eldar way.

Alright guys, this should be good for now.  Of course, there are a bunch more tricks that I know, but I think these are the main ones that'll help get you stated.  Keep in mind that I'll be more sporadic in the next week when it comes to posting!

sábado, marzo 21, 2020

PUBG Mobile Erangel Map Is Getting A Redesign

About Erangel map:


Erangel map is one of the four playable maps in PUBG. According to a research, more than 80% of PUBG players love Erangel map. This may be due to the existence of high loot, good weapons, tall grass, good hiding locations etc. Erangel map has also a sad untold story.

Reasons behind the update:



Recently, PUBG Corp announced an update regarding Erangel map. This is because many PUBG mobile players have complained to the official PUBG support regarding Erangel map. According to them, they have experienced the following problems:

1.
 The increase of bugs and glitches in Erangel map.

2. The increase of lag while playing PUBG.


3
. The sudden crashing of the game while playing in Erangel map.

4.
 Famous loot locations like Georgopol, Sosnovka military base etc. have very few loots now. 

Understanding the problems of PUBG players, PUBG developers have taken a big decision. They decided that Erangel map will be redesigned to improve such errors. They are working on the development of Erangel map. They added that this could take a few months time to finish. 

Since loot locations are lacking loot so they assured that the new updated Erangel map will have proper loot locations. They mentioned that some parts of the Erangel map may be changed to make it more interesting for players. 

The PUBG team have also decided to work on bugs and glitches and lagging of servers and to improve gameplay.

Which parts will be updated?


An image went viral through a Reddit post when a user posted it claiming that the red dots in the image will be updated in Erangel map. The image is given below:

PUBG mobile erangel map update
Source: Imgur                       Erangel map update locations


The PUBG team responded to the image saying" As some of you inferred from recent leaks of a map image, we are working on new ways to balance loot and otherwise improve our maps, Erangel being the first. The addition of compounds is just one way we're testing internally, but is certainly not the ONLY way."

They later added that" Keep in mind that leaked images are usually just a snapshot in time and rarely represent the entire plane or scope of what's being worked on."

The above words said by PUBG Corp. may suggest that after the Erangel map update, the other maps may be redesigned too.

Release date:


As mentioned above, this update of Erangel map will take a few months time for PUBG developers to finish. The PUBG team has not officially announced any date.

But we expect to get this update after 0.11.5 update i.e  0.12.0 or  0.12.5  update version.

Are you excited about this Erangel map update? What are your thoughts about this update and what update you want? We are curious to know in the comments section below!


jueves, marzo 19, 2020

[DEF CON] DEF CON 28 Call For Training

Good Outcome

What's going on everyone!?


I played some more ZIMP today on and off but figured I would play something different for this post..lol.

Today for the #2019gameaday challenge I played a game of Star Realms. Surprisingly I actually won! And by a pretty good margin! 

As always, thank you for reading and don't forget to stop and smell the meeples!  :)

-Tim

Exploring Monster Taming Mechanics In Final Fantasy XIII-2

Let's just get this out of the way. I'm a huge Final Fantasy fan. I adore the original game even today, Final Fantasy VI is definitely the best of the franchise, and I've found things to enjoy in every one that I've played, which is nearly all of the main-line games. (I still haven't managed to crack open FFIII, but I plan to soon.) Even each of the games in the Final Fantasy XIII trilogy had something that drew me in and kept me going through the game, wanting to learn more. These games get a lot of flack for being sub-par installments in the Final Fantasy franchise, and some of the criticism is warranted. The story is convoluted, and the plot is as confusing as quantum mechanics.

That debate, however, is not why we're here now. We're here to look at one of the great aspects of FFXIII-2: the monster taming and infusion system.


This system is deep and complex, but not in the off-putting way that the plot is. The amount of variety and configurability in the monsters that you can recruit to fight alongside Serah and Noel is astonishing, which is nice because those two are somewhat lacking in that department. Their development paths are fairly linear. There are a few choices about what strengths to give them as they level up in the "crystarium," but it's mostly a matter of ordering the abilities they learn and doesn't make much difference in the end. The monsters, on the other hand, allow for huge variations in development that results in a system with fascinating choices for optimization and prioritization. Figuring out how to capture and develop powerful monsters early in the game is great fun, and its this characteristic of Final Fantasy games—of finding ways to build a strong party early in the game without tedious grinding—that I really enjoy.

On a totally different note, I've been considering different ways to practice using databases and building simple websites, and the monster taming system is complex enough and interesting enough that it would make for a good collection of content to use for that practice while having some fun in the process. So, the other goal of this series, other than exploring the monster taming system in FFXIII-2, is to explore how to get a data set into a database, put it up on a website with Ruby on Rails, and experiment with that data set in some novel ways. Before we get into all of that, however, we need to understand what the heck we're putting in the database in the first place, and to do that we need to understand this monster taming system in detail.

Monster Taming

Okay, what is this monster taming, and why is it so complicated? We'll have to start at the beginning and work our way through the system. At the start of the game there's just Serah, trying to stay alive. (Actually, the very start of the game is a flashy battle sequence and confusing plot points with Lightning, but let's ignore that.) Pretty soon Noel shows up and decides to help Serah out, so now it's a party of two. This setup goes on for a couple levels, but it's pretty weird for a Final Fantasy game. Normally there's three or four characters in a party. Then we come to a pitched battle with a Cait Sith and a Zwerg Scandroid. There will be a lot of weird monster names throughout this series. You're just going to have to roll with it. Anyway, after creaming the cat and the droid, they turn into monster crystals, which are basically the essence of monsters. These crystals are stored in your monster inventory, and you can assign three of them to coveted spots in your "Paradigm Pack" (not the name I would have picked). These three monster spirits will fight with you in battle, and so begins your long and precarious journey as the monster whisperer.

Monsters come in six basic varieties, conveniently matching the six roles that Serah and Noel can assume. These six role are briefly explained as follows:
  • Commando - The Arnold Schwarzenegger role, plenty of strength, short on finesse.
  • Ravager - The mage role, uses attack magic.
  • Sentinel - This is a tank role, not many attacking options, but it absorbs damage like it's nothing.
  • Saboteur - Weakens the enemy by removing protections and inflicting ailments like poison and slow.
  • Synergist - Strengthens the party with offensive and defensive enhancements. Also moonlights as a business executive.
  • Medic - Heals the party, and possibly the only obvious role name of the bunch.
While Serah and Noel can switch between these roles, the tamed monsters have fixed roles. Switching the monster's role switches the monster, and there are three role possibilities for any given battle corresponding to the three monsters that are on deck. The monster's type is only the beginning of what a monster is, though. There is so much more.

Monster Training

Monsters can gain experience just like Serah and Noel. Both the humans and the monsters have crystariums where they advance along a path to gain abilities and increase their stats. While the humans have a crystarium for each of their six roles, the monsters each have one crystarium, possibly with multiple levels, where they gain their abilities and stats. Because the crystariums of the monsters are more unique to the monster itself, each monster type will learn a unique set of abilities and end up with different stats. Additionally, while the humans can move through their crystariums by spending crystarium points gained from winning battles, monsters can only advance on their crystariums by using various types of monster materials that are dropped by defeating monsters in battle. This seems to be some form of cannibalism, but it's pretty mild because the materials are bolts and orbs and other things like that. Monsters require different materials for their crystariums depending on what level they're on their crystarium, and if they're biological or mechanical monsters. Different materials will also give different bonuses to the monster's health, strength, magic, or all three stats.

Following so far? Because we're just getting started. This monster whispering is intricate stuff. On top of the unique upgrade paths, abilities, and materials, each monster spirit has a set of characteristics that relate to how they will develop as they level up. A monster can be a "late bloomer," meaning it may be weak to start with, but it can reach the upper levels 70-99 of its crystarium. Maybe the monster is "brainy," meaning that it will learn lots of abilities, or it's "flameproof," which is pretty self-explanatory. There are 29 characteristics in all, and any given monster can have up to four of them. Monsters will also come with some initial abilities, whether that be actions like casting certain spells and attacking or passive abilities like "armor breaker" that allows it to penetrate an enemy's physical defense. Taming and training monsters are not the only ways to get monsters with certain abilities, however. This is where things get real, as in real complicated.

Monster Infusion

The third way to give a particular monster new and wonderful abilities is to take another monster that has the desired ability(ies) and fuse them into the desired monster through a magical monster infusion process. How does this work exactly? Who knows! How did materia work in FFVII, or guardian force cards in FFVIII? It's a Final Fantasy game; some things you just have to accept without question and move on. The source monster spirit is lost in this process of infusing the target monster with new abilities. It's a destructive process.

Losing the source monster is not the only cost, though. There are restrictions as well. The first restriction is that a monster can only have 10 passive abilities. If a monster accumulates more than 10 passive abilities, some of them are going to have to go. These abilities all have a rank, and higher ranked abilities will stick to a monster better than lower ranked abilities. Also, newer abilities are stickier than older abilities, according to when the monster learned them. The lowest ranked abilities will get the boot first, with order of acquisition being the tie-breaker—first in, first out.

The next restriction is red-locked abilities. These are abilities that cannot be transferred to or removed from a monster, ever. This restriction is pretty simple, unlike the next one.

Monsters can also have yellow-locked abilities, although these locks never exist by default. Yellow locks can be created, propagated, and destroyed by infusing abilities of the same type in various ways. Two abilities are the same type if they modify the same attribute. For example, HP +10% and HP +25% would be of the same type. Also, HP +10% is a lower rank than HP +25%. That's important for yellow locks because if you infuse a monster that already has a lower rank ability with an equal or higher rank ability of the same type, the infused ability comes with a yellow lock and will stay put when the monster's abilities overflow. Generally, if an ability of higher rank is added to a yellow-locked ability of lower rank, the yellow lock is kept. If an ability of equal or lower rank is added to a yellow-locked ability, the yellow lock is destroyed. It's a bit more complicated than that because there are about a dozen different combinations, but this summary should be sufficient for the purpose of setting the requirements of the database. Basically, we want to make sure we know the rank of each ability so that we can figure out the best way to develop monsters' abilities.

All of the red lock and yellow lock stuff has to do with passive abilities, but there are two other types of abilities that come into play with monster infusion: role abilities and hidden abilities. Role abilities are the actions that the monster will take in battle, and there is no limit to the number of these abilities that a monster can have. When a source monster is infused, you can choose from its role abilities up to the number that its crystarium stage is at, which will be 1-5 depending on how much you can level up the monster and how much you actually leveled it up. The disadvantage of infusing too many role abilities on a monster is that you don't have control over what it does in battle, and if it has too many options, it probably won't be doing what you want it to do when you need it most. Decide what you're going to use a monster for, and then don't give it choices. You can't remove role abilities once they're infused.

Lastly, hidden abilities are learned by a monster when it is infused with 99 levels worth of monsters of the opposite role. Commando and Ravager are opposites (makes sense), Saboteur and Synergist are opposites (makes even more sense), and Sentinel and Medic are opposites (the leftovers, I guess). For example, you could infuse nine level 17 Zwerg Scandroids onto your Red Chocobo, and it'll learn Jeopardize, which boosts the bonus the chocobo gets when attacking a staggered enemy. Each role has it's own hidden ability that it gets when those 99 levels of monsters of the opposite role are infused into it.

Acquiring the Data for the Database

Okay, that was a bunch of intricate, complicated stuff, but it gives us a good idea of what kind of data we want to put in our database so we can link it up and ask interesting questions about monster infusion. 

First, we want to know all about monsters:
  • What's its name?
  • Is it tamable? We might have a separate tamable monster table since most of the following properties wouldn't apply to non-tamable monsters.
  • What materials does it drop in battle?
  • What's its role?
  • Where in the game can we find it?
  • What are its characteristics?
  • What's its max level?
  • What are its starting and ending stats (HP, strength, and magic)?
  • What are its starting abilities?
  • What abilities does it learn and at which crystarium levels?
  • How many crystarium stages does it have?
  • What is its feral link? (We didn't talk about this. It's a special action that can be triggered when the monster gets hit too much.)
  • What does the feral link do?
  • We could also include pictures if we want to get fancy.
We also want to know about abilities. This will be a separate table:
  • What's its name?
  • What's its rank?
  • What does it do?
  • Is it passive, role, or hidden? These may be separate tables, since they're different enough to warrant it.
  • Which role is it associated with?
We'll be interested in at least one aspect of the areas in the game:
  • What's its name?
  • How early can we reach this area? I.e. which area unlocks this area?
Since there's a fair number of monster materials, we'll want to keep track of those:
  • What's its name?
  • Is it biological or mechanical?
  • What stage of the crystarium is it for?
  • Does it boost HP, strength, magic, or all three? (The name does give this away, but let's be thorough.)
We'll also want to know a little about the monster characteristics because the names are not self-explanatory:
  • What's its name?
  • What does it mean?
This is shaping up to be a reasonably complex database with 5-8 tables interlinked by these different items' names. The relations in the database will happen through IDs, but everything does have a name as well. The names will be what appears in the tables presented as views of the database, likely with hyperlinks to their information in their own tables. So how should we get all of this data into a database? I certainly don't want to enter it by hand. There's over 150 monsters, dozens of abilities, and dozens of properties for each monster. 

Luckily, some ambitious people have already done the hard work of writing out all of these things in an FAQ, and it's available on gamefaqs.com. The Monster Infusion FAQ by sakurayule, BMSirius, and Taly932 contains almost everything we want to put in the database. It also contains example builds for post-game super monsters, but we're going to look at something a bit different with this series. We want to figure out the best monster builds we can do during the game in order to have monsters that can help us through the game without the need to do any grinding. All of the necessary information is in that FAQ. We just have to write a script to parse it and put it in a form that's easy to import into the database. That parsing script is what we'll figure out how to write in the next episode.