Posted by: xSicKxBot - 04-09-2020, 09:44 AM - Forum: Windows
- No Replies
Project xCloud preview to expand to 11 Western European countries
Bringing the Project xCloud preview to gamers across Western Europe is a top priority for us. We know gaming is an important way for people to remain connected, particularly during these times of social distancing, but we also recognize how internet bandwidth has been impacted with strain on regional networks as large volumes of people responsibly stay home and go online.
It has been said too many times, but it’s true we are living in unprecedented times due to the global COVID-19 pandemic. Here at Xbox, we look to our products to bring joy and connection at all times and particularly during these weeks and months when we’re asked to stay at home. We know we’re in this together and the support we can provide one another is of critical importance now more than ever.
Phil Spencer has talked often about what he sees as the unique power of games to bring people together, to entertain, to inspire and connect. We all believe that in our current circumstances that’s even more true, and we hope that the freedom to discover and play with Project xCloud brings even more joy and connection.
Project xCloud, which has continued to grow and evolve since preview started last year, is our game-streaming technology allowing players to play console games from the cloud on an Android phone or tablet. As we promised at X019 in November, we’ve had our sights set on expanding the Project xCloud preview this year to more countries.
With that in mind, we continue to evaluate the COVID-19 situation and will begin rolling out the Project xCloud preview across 11 Western European countries when we are confident it is sensible to do so. We will take a measured approach to help conserve internet access, beginning the preview in each market with a limited number of people and adding more participants over time.
Upcoming Project xCloud preview countries:
Belgium
Denmark
Finland
France
Germany
Ireland
Italy
Netherlands
Norway
Spain
Sweden
Today, we’re opening up registration for Android customers in these preview markets and asking players across Western Europe who want to participate in Preview to sign up, then when we’re ready to begin, you’ll receive a notification email with further instructions. We’ll continue to evaluate the situation and will follow up as soon as we can to confirm when selected participants can begin to test the technology and help build the future of game streaming with us. For those interested in joining the Project xCloud preview, please visit www.xbox.com/projectxcloud and register today.
Thank you for your patience at this time. Your participation and feedback is critical as we learn what it means to bring you the very best game streaming platform. We can’t wait to go on this journey with you.
Mini Review: HyperParasite – Proof That It’s Fun To Be Bad
We’ve seen quite a lot of rogue-lite games in the past few years, but HyperParasite is quite a unique one. Taking place within a typical cyberpunk cityscape, an alien parasite has invaded the planet and is looking to leech onto every unfortunate soul that happens to get in its way. The twist here is that you get to play as the parasite, and all the heroic characters defending the city are your enemies. It’s a neat little spin on a game that otherwise borrows its aesthetics and gameplay structure from other examples of the genre.
With solid twin-stick controls, HyperParasite boasts a wide range of characters that you can play as. At first, though, the game can be a bit of a grind. You’ll only have access to a few characters, and in order to unlock more, you’ll need to kill them during your run and transport its brain to the in-game store. That’s not all though; once the characters’ brains are safely stored away, you’ll need to invest precious currency in order to actually unlock the character. Once you’ve got a few under your belt, the game becomes a lot more manageable, as you can always infect a new host if your current one gets killed. When playing as the parasite in its pure form, however, caution is highly advised, as one hit will immediately kill you and end your run.
A mix of offence and defence is required if you’re to successfully navigate the stages within HyperParasite. Whether playing as the parasite in its pure form or as an infected host, you’re granted the ability to dash, which makes you invulnerable for a split second as you execute it. Each character also has an enhanced version of their main attack, so, for example, the hobo can blast his trolley towards enemies, ploughing through several at once, and the police officer can power up his handgun so it shoots out gigantic bullets. It’s worth saving these abilities for boss battles, or for when you’re feeling completely overwhelmed by enemies.
Overall, the gameplay is pretty solid, with the unlockable characters proving to be a great incentive to dive in again and again. It takes a great deal of patience during your initial sessions to keep playing, however, because without having a decent range of hosts to choose from, you’re at risk of dying over and over again if you’re stuck within the parasite’s pure form. Thankfully, the enemies do tend to telegraph their attacks from a mile off, so you can mitigate the danger significantly once you know how to look out for this.
Unfortunately, the graphics and overall presentation don’t hold up quite as well at the gameplay itself. The environments are nice enough and display an ’80s aesthetic that works rather well, but the character models themselves lack detail, resulting in a bit of difficulty telling them apart during the more hectic moments. We also noticed some slowdown here and there, but thankfully this is minimal. If you’re not too fussed about detailed visuals, then HyperParasite will no doubt keep you hooked with its unique parasite gameplay mechanic and exciting gun-play.
Yesterday, Sony revealed the upcoming PlayStation 5’s brand new controller, the DualSense. Our chums over at Push Square have details on everything you need to know about if you’re thinking of grabbing a PS5 later this year, but we couldn’t help but notice one small – and very silly – detail ourselves.
Actually brought to our attention thanks to the tweet below, we’ve realised that the controller’s shiny new ‘Create’ button looks strangely familiar. We’re not sure what the design is really supposed to represent exactly, but it sure does look an awful lot like the honk of everyone’s favourite indie goose.
Since launching on Switch last September, Untitled Goose Game has also waddled on over to the PS4. If a sequel should be released later down the line on PS5, wouldn’t that just make for the perfect honk button?
Do you like the new PS5 controller design? Think it’ll be any nicer than the Switch’s Pro Controller? Give us a honk in the comments.
Posted by: xSicKxBot - 04-09-2020, 09:43 AM - Forum: Lounge
- No Replies
NXT's Johnny Gargano Isn't Planning On Doing Marvel Inspired Ring Gear Anymore
NXT wrestler Johnny Gargano is an immensely talented performer. He puts on stellar matches--especially when facing longtime rival Tommaso Ciampa--and even when the character is hated by fans, he's still loved.
One thing Gargano is known for is his comic book-inspired cosplay. In the past, Gargano has had ring attire that pays homage to Marvel characters like Star Lord, Punisher, Captain Marvel, and our personal favorite, Iron Man. However, now that Gargano has gone heel, will those cosplays keep happening? According to Johnny Wrestling himself, don't count on it.
"[The Johnny Gargano] character is changing and evolving, so I do not know if there will be another Marvel-inspired gear," Gargano told GameSpot. "Well, that's the first I've ever said that on record, but I'm not really sure if that's where it is headed. In my head--in my character's head--he did a lot of things that put smiles on fan faces to make people happy, but it was very much of a detriment to himself. That's the reason he brought back DIY. That's the reason he [teamed] with Tomasso [Ciampa] again, even though he had ill will towards Tomasso. So I don't know. I don't know if there will ever be another Marvel cosplay. I don't know if they'll another Marvel inspiration. You'll have to watch and find out, but we'll see what happens."
Posted by: xSicKxBot - 04-09-2020, 01:31 AM - Forum: Python
- No Replies
How to Get the Key with Minimum Value in a Python Dictionary?
I have spent my morning hours on an important mission. What is the cleanest, fastest, and most concise answer to the following question: How do you find the key with the minimum value in a Python dictionary? Most answers on the web say you need to use a library but this is not true!
Simply use the min function with the key argument set to dict.get:
income = {'Anne' : 1111, 'Bert' : 2222, 'Cara' : 9999999} print(min(income, key=income.get))
# Anne
The min function goes over all keys, k, in the dictionary income and takes the one that has minimum value after applying the income.get(k) method. The get() method returns the value specified for key, k, in the dictionary.
Play with it yourself in our interactive code shell:
Now, read the 4-min article or watch the short video to fully understand this concept.
What’s the Min Function in Python?
Most likely, you already know Python’s min(…) function. You can use it to find the minimum value of any iterable or any number of values. Here are a few examples using the min function without specifying any optional arguments.
income = {'Anne' : 1111, 'Bert' : 2222, 'Cara' : 9999999} print(min(income, key=income.get))
# Anne # Key that starts with 'smallest' letter of the alphabet
print(min(income))
# Anne # Smallest value in the dictionary income
print(min(income.values()))
# 1111 # Smallest value in the given list
print(min([1,4,7,5,3,99,3]))
# 1 # Compare lists element-wise, min is first list to have a larger
# element print(min([1,2,3],[5,6,4]))
# [1, 2, 3] # Smallest value in the given sequence of numbers
print(min(5,7,99,88,123))
# 5
So far so good. The min function is very flexible. It works not only for numbers but also for strings, lists, and any other object you can compare against other objects.
Now, let’s look at the optional arguments of the min function. One of them is 'key'. Let’s find out what it does.
How Does the Key Argument of Python’s min() Function Work?
The last examples show the intuitive workings of the min function: you pass one or more iterables as positional arguments.
Intermezzo: What are iterables? An iterable is an object from which you can get an iterator. An iterator is an object on which you can call the next() method. Each time you call next(), you get the ‘next’ element until you’ve got all the elements from the iterator. For example, Python uses iterators in for loops to go over all elements of a list, all characters of a string, or all keys in a dictionary.
When you specify the key argument, define a function that returns a value for each element of the iterable. Then each element is compared based on the return value of this function, not the iterable element (the default behavior).
We define a function inverse() that returns the value multiplied by -1. Now, we print two executions of the min() function.
The first is the default execution: the minimum of the list [2, 4, 8, 16] is 2.
The second uses key. We specify inverse as the key function. Python applies this function to all values of [2, 4, 8, 16]. It compares these new values with each other and returns the min. Using the inverse function Python does the following mappings:
Original Value
Value after inverse() (basis for min())
2
-2
4
-4
8
-8
16
-16
Python calculates the minimum based on these mappings. In this case, the value 16 (with mapping -16) is the minimum value because -2 > -4 > -8 > -16.
Now let’s come back to the initial question:
How to Get the Key with the Minimum Value in a Dictionary?
We use the same example as above. The dictionary stores the income of three persons John, Mary, and Alice. Suppose you want to find the person with the smallest income. In other words, what is the key with the minimum value in the dictionary?
Now don’t confuse the dictionary key with the optional key argument of the min() function. They have nothing in common – it’s just an unfortunate coincidence that they have the same name!
From the problem, we know the result is a dictionary key. So, we call min() on the keys of the dictionary. Note that min(income.keys()) is the same as min(income).
However, we want to compare dictionary values, not keys. We’ll use the key argument of min() to do this. We must pass it a function but which?
To get the value of 'Anne', we can use bracket notation – income['Anne']. But bracket notation is not a function, so that doesn’t work. Fortunately, income.get('Anne') does (almost) the same as income['Anne'] and it is a function! The only difference is that it returns None if they key is not in the dictionary. So we’ll pass that to the key argument of min().
income = {'Anne' : 1111, 'Bert' : 2222, 'Cara' : 9999999} print(min(income, key=income.get))
# Anne
How to Get the Key with the Maximum Value in a Dictionary?
If you understood the previous code snippet, this one will be easy. To find the key with maximum value in the dictionary, you use the max() function.
income = {'Anne' : 1111, 'Bert' : 2222, 'Cara' : 9999999} print(max(income, key=income.get))
# Cara
The only difference is that you use the built-in max() function instead of the built-in min() function. That’s it.
Find the Key with the Min Value in a Dictionary – Alternative Methods
There are lots of different ways to solve this problem. They are not as beautiful or clean as the above method. But, for completeness, let’s explore some more ways of achieving the same thing.
In a StackOverflow answer, a user compared nine (!) different methods to find the key with the minimum value in a dictionary. Here they are:
income = {'Anne' : 11111, 'Bert' : 2222, 'Cara' : 9999999} # Convert to lists and use .index(max())
def f1(): v=list(income.values()) k=list(income.keys()) return k[v.index(min(v))] # Dictionary comprehension to swap keys and values
def f2(): d3={v:k for k,v in income.items()} return d3[min(d3)] # Use filter() and a lambda function
def f3(): return list(filter(lambda t: t[1]==min(income.values()), income.items()))[0][0] # Same as f3() but more explicit
def f4(): m=min(income.values()) return list(filter(lambda t: t[1]==m, income.items()))[0][0] # List comprehension
def f5(): return [k for k,v in income.items() if v==min(income.values())][0] # same as f5 but remove the max from the comprehension
def f6(): m=min(income.values()) return [k for k,v in income.items() if v==m][0] # Method used in this article
def f7(): return min(income,key=income.get) # Similar to f1() but shortened to 2 lines
def f8(): v=list(income.values()) return list(income.keys())[v.index(min(v))] # Similar to f7() but use a lambda function
def f9(): return min(income, key=lambda k: income[k]) print(f1())
print(f2())
print(f3())
print(f4())
print(f5())
print(f6())
print(f7())
print(f8())
print(f9())
# Bert (all outputs)
In a benchmark performed on a large dictionary by the StackOverflow user, f1() turned out to be the fastest one.
So the second best way to get the key with the minimum value from a dictionary is:
We know how to find the minimum value if the values are numbers. What about if they are lists or strings?
Let’s say we have a dictionary that records the number of days each person worked this month. If they worked a day, we append 1 to that person’s list. If they didn’t work, we don’t do anything. At the end of the month, our dictionary looks like this.
The total number of days worked each month is the length of each list. If all elements of two lists are the same (as is the case here), they are compared based on their length.
# Length 2 is less than length 4
>>> [1, 1] < [1, 1, 1, 1]
True
So we can use the same code we’ve been using in the article to find the key with the minimum value.
>>> min(days_worked, key=days_worked.get) 'Anne'
If we update our dictionary so that Bert has worked the most days and apply min() again, Python returns 'Anne'.
>>> days_worked = {'Anne': [1, 1, 1, 1], 'Bert': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'Cara': [1, 1, 1, 1, 1, 1, 1, 1]} # Anne has now worked the least
>>> min(days_worked, key=days_worked.get)
Find Key With Min Value in a List of Dictionaries
Let’s say we have 3 dictionaries containing income information. We want to find the key with the min value from all 3 dictionaries.
We can see that 'Anne' has the lowest income so we expect that to be returned.
There are several ways to do this. The simplest is to put all key-value pairs into one dictionary using a for loop. Then we call min() as usual.
# Initialise empty dict
>>> big_dict = {} # Use for loop and .update() method to add the key-value pairs
>>> for dic in list_of_dicts: big_dict.update(dic) # Check the result is as expected
>>> big_dict
{'Anne': 1111, 'Bert': 2222, 'Cara': 3333, 'Dani': 4444, 'Ella': 5555, 'Fred': 6666, 'Greg': 7777, 'Hope': 8888, 'Igor': 999999999999} # Call min() and specify key argument
>>> min(big_dict, key=big_dict.get) 'Anne'
Where to Go From Here?
Every Python master must know the basics. Improving your basic code understanding skills by 20% will improve your productivity by much more than anything else. Why? Because everything else builds upon the basics.
But most material online is tedious and boring. That’s why I’ve written a new and exciting way of learning Python, while measuring and comparing your skills against other coders. Check out the book “Coffee Break Python”. It’s LeanPub 2019 bestseller in the category Python!
The 169th GalaQuiz will be LIVE soon, win up to $50 in GalaCredit!
[www.indiegala.com] The GalaQuiz will take place in less than 10 minutes from this announcement Today's GalaQuiz[www.indiegala.com] hints are up. The theme will be Animals Redux #4.
Unigine is a commercial 3D game engine used heavily in the simulation and engineering industry. Last year Unigine started offering a game oriented license, however compared to Unity and Unreal, it was still quite pricey, especially for smaller or indie developers who make less than $100,000 a year. Thankfully Unigine are offering a new Community license (available sometime this week) specifically targeting these developers.
Details of the new Unigine Community version:
Version
Community
Eligibility
● Non-commercial projects
● Revenue or funding less than $100K in the last 12 months
Not available for
● Defense-related projects
● Enterprises from Energy, Mining, Oil & Gas industries
● Gambling
● See other editions
Price
Free, no royalty
The community version will be available later this week. In the meanwhile you can check out Unigine Community in action in the video below. You can also check out our prior hands-on video here.
Door Kickers: Action Squad is now available on Android
April 8, 2020 KillHouse Games has just confirmed that Door Kickers: Action Squad is finally available on Android, and that many of the bugs users over on iOS have been experiencing, including crashes, have been fixed.
April 3, 2020 Door Kickers: Action Squad isn’t available on Android in all regions yet, and we apologise for the confusion. KillHouse Games has confirmed that the release is still pending on Google’s side. We’ll update you all further when it’s actually available.
If you’ve ever wished that the real world resembled that found in ’80s police movies, Door Kickers: Action Squad is the game for you. It’s a pleasingly-retro side-scrolling shooter in which you direct a SWAT trooper on a murderous rampage across Nowhere City USA. Bullets will fly, heads will roll, and many doors will be kicked.
Like any self-respecting SWAT member, you’ll begin by selecting your gear. There’s a wide variety of weaponry and useful items, like health packs or refills, and each gun has its own unique set of recoil and reload speeds. Given that this is a sequel to the deeply-strategic Door Kickers, you can expect to develop some level of mastery over time.
Because while, on paper, it looks like a Contra-style shoot-’em-up, it’s actually an experience that requires a fair amount of thought. The action might fly in thick and fast, but those that go in prepared will have a much easier time. You can use cover to stay safe, utilise a variety of strategic abilities to turn the tide, and unleash your ultimate skill to clear out a room.
There are six different characters to select from too, which each have their own playstyle. You can level each of them up individually, with different improvements available per character.
In terms of gameplay, there’s a single-player campaign to beat that features a whopping 84 explorable levels, an endless tower mode, and a zombie invasion mode, which remixes the base campaign to include the shambling undead.
It’s an intriguing sequel in that it maintains much of what we loved about the original, the strategic play, while changing pretty much everything else. If you’d like to check it out for yourself, you can grab it right now on iOS via the App Store and Android via Google Play. It’s a premium app at $2.99 (£2.99).
The Python developers have already released five alpha versions of Python 3.9.0 and you can already try the latest one in Fedora! Test your Python code with 3.9 early to avoid surprises once the final 3.9.0 is out in October.
Install Python 3.9 on Fedora
If you run Fedora, you can install Python 3.9 from the official software repository with dnf:
$ sudo dnf install python3.9
In order to get the very latest pre-release, you might need to enable the updates-testing repository:
As more alphas, betas and release candidates of Python 3.9 will be released, the Fedora package will receive updates. No need to compile your own development version of Python, just install it and have it up to date. New features will be added until the first beta planned for mid May.
Test your projects with Python 3.9
Run the python3.9 command to use Python 3.9 or create virtual environments with the builtin venv module, tox or with pipenv and poetry. For example:
$ python3.9
Python 3.9.0a5 (default, Mar 24 2020, 00:00:00) [GCC 10.0.1 20200311 (Red Hat 10.0.1-0.9)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> d = {'spam': 1, 'eggs': 2, 'cheese': 3}
>>> e = {'cheese': 'cheddar', 'aardvark': 'Ethel'}
>>> d | e
{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}
>>> e | d
{'cheese': 3, 'aardvark': 'Ethel', 'spam': 1, 'eggs': 2}
>>> d |= e
>>> d
{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}