Check out my new course Learn you some Lambda best practice for great good! and learn the best practices for performance, cost, security, resilience, observability and scalability.
After an 11-hour marathon session at the London GameCraft event yesterday, I am very proud to say that my team’s entry – Agents of P.R.I.S.M was awarded with the MOST INTERESTING INTERPRETATION OF THE THEME award for the theme of the day – Impact of P.R.I.S.M.
I’d like to take this opportunity to say thanks to everyone for organizing such a wonderful event, we had a great time and I saw many interesting games developed by a wide variety of different technologies and frameworks. Personally I used this opportunity to experiment with Dart and StageXL and I’m pleased with what I was able build with them in less than 11 hours.
Agents of P.R.I.S.M
To directly answer the question of ‘what’s the impact of PRISM’, it’s the creation of a surveillance capability that whilst can serve to help prevent crime and terrorist attacks, is also subject to misuse and abuse.
If underused and unable to stop the sort of disaster it is intended to prevent, it’ll no doubt come under much public criticism. On the other hand, if it’s misused or overused and cause too much intrusion to everyday lives of innocent people then it’ll also cause public unrest. It is therefore a fine balance between not doing enough and doing too much, and it is this need for balance that we wanted to focus on with Agents of P.R.I.S.M.
As an agent with access to P.R.I.S.M, your task is to identify a criminal out of a set of potential targets, and you have a set of surveillance options that can be used against each of these targets, in the order of each option’s cost and level of effectiveness and intrusiveness:
1. CCTV surveillance (least expensive, effective and intrusive)
2. Credit card surveillance
3. Email surveillance
4. Phone surveillance
5. Send agents on the field to conduct in-person surveillance (most expensive, effective and intrusive, this is truly a high risk, high reward approach)
You need to balance against:
- Time – if you don’t identify the criminal before time runs out then he gets away and you failed your task, so move fast!
- Intrusion level – if you’re too aggressive with your use of surveillance options then it’ll make the citizens unhappy, when they become angry with how much you’re intruding on their lives it leads to civil unrest and you lose.
- Budget – government agencies have to operate within its budget, so do you, spend carelessly on expensive surveillance options will drain your budget and when you run out of budget you can no longer catch the criminal and you lose.
As you progress through the levels, the amount of budget and time you have and number of potential suspects will change and make the game more and more challenging.
Clicking on each target allows you to start or stop the different types of surveillance on him/her.
As you continue to apply surveillance on each of your targets their level of happiness will decrease (even the criminal has the right to be unhappy about being watched you know!), as does the overall civilian happiness.
As surveillance reveals more information about each of your targets your level of suspicion against them will also grow. However, for the innocent civilians you’ll soon realize that they’re clean. For these civilians, continued surveillance on them will no longer raise your suspicion level but would continue to cause them upset so it’s best for you to stop any surveillance on targets as soon as the suspicion level stops growing.
The more intrusive form of surveillance option you use the faster the target’s happiness decreases, and the faster your suspicion level will grow since the surveillance will reveal more information about your target, it also decreases your budget faster too as you fork out to likes of Google, Microsoft and telephone companies in order to acquire communication records..
I hope after reading you find the idea of the game interesting and would like to give it a try. I appreciate that the game doesn’t feel as fun as it could be in its current form, it needs much more work balancing the various constraints the player has to work with, for example, more time and less budget can encourage a more considered and careful approach to playing.
The UI can also be improved to offer the player more useful guidance and a tutorial wouldn’t go amiss too.
That said, please bare in mind that the entire game was written by one person in less than 11 hours using an unfamiliar language and framework. If time permits and there are interest out there, I’m more than happy to put in a few more hours and give the game a much needed final polish.
I specialise in rapidly transitioning teams to serverless and building production-ready services on AWS.
Are you struggling with serverless or need guidance on best practices? Do you want someone to review your architecture and help you avoid costly mistakes down the line? Whatever the case, I’m here to help.
Check out my new course, Learn you some Lambda best practice for great good! In this course, you will learn best practices for working with AWS Lambda in terms of performance, cost, security, scalability, resilience and observability. Enrol now and enjoy a special preorder price of £9.99 (~$13).
Are you working with Serverless and looking for expert training to level-up your skills? Or are you looking for a solid foundation to start from? Look no further, register for my Production-Ready Serverless workshop to learn how to build production-grade Serverless applications!
Here is a complete list of all my posts on serverless and AWS Lambda. In the meantime, here are a few of my most popular blog posts.
- Lambda optimization tip – enable HTTP keep-alive
- You are thinking about serverless costs all wrong
- Many faced threats to Serverless security
- We can do better than percentile latencies
- I’m afraid you’re thinking about AWS Lambda cold starts all wrong
- Yubl’s road to Serverless
- AWS Lambda – should you have few monolithic functions or many single-purposed functions?
- AWS Lambda – compare coldstart time with different languages, memory and code sizes
- Guys, we’re doing pagination wrong