• 0 Posts
  • 10 Comments
Joined 1 year ago
cake
Cake day: July 5th, 2023

help-circle
  • Yeah, that’s definitely the way to see it, and as that I think it’s great. I think it might overload the term dark patterns a bit too much, and would have liked to have seen a different name used (as a game design academic), but I absolutely agree with and appreciate the approach otherwise.

    Edit to include, I guess why I have that hesitation with an example - I couldn’t link this in a class I’m teaching without loads of caveats because suddenly 80% of the curriculum gets seen as abusive when it’s really just experience design and explain the grey (which we do, so this is quite helpful for that particular purpose), and I would need to caveat that when they see the term out in the wild it will be used differently.


  • All I’m commenting on, as a game design researched and professor, is that it’s an established term in a discipline which means something else to those actually within the discipline. These are still patterns, and they can absolutely be harmful patterns, but the terminology is being overloaded and there is some interesting nuance within it.

    Also, just to comment on the last quip there, and yes - to those I’ve spoken to, they are okay with those because they (being actively involved in the industry) know more than most people to educate and supervise and ensure that playing games with these patterns doesn’t turn into harmful behaviours. They also call them out for what they are - often, very bad design.

    I guess that’s really the line they drew - these patterns are more gray than the examples they presented. Most are good sometimes and terrible other times depending on how it is used. The term “dark patterns” as used professionally refers to always bad, always deceptive, always harmful. I do like having that line, even if it means the dark side is a much smaller subset of the greater space, then you can easily say, “If this uses a single dark pattern, it’s out. If it uses a lot of ‘grey’ patterns, be cautious. If it’s nothing but grey patterns, it’s purely abusive trash.”


  • Interesting. I was chatting with a lot of big name AAA designers and indie designers discussing dark patterns, and they’ve got a very different opinion on what constitutes a dark pattern. To them, largely, it needs to be more technical deception - like having a fake “X” button, or immediately popping up an ad over where a button was to trick you into clicking it, or bait-and-switching pricing before the user notices.

    I tried to raise these kinds of patterns as problematic, and it was a mixed bag. The general vibe from them was that they’d only call it a dark pattern if it deceives the player to get more money than they were prepared to spend (or similar for ads). If the player knows what they’re getting into, and they are presented with a choice to stop or continue, it’s on them.

    And I’ll admit, while I don’t go that far (and there were designers in both camps), I can at least understand how all game design is manipulation, in the same way that teaching and storytelling is manipulation, and drawing the lines can be very hard. Your job is to convince the player that they are having fun and want to keep playing. Resources in a game have no real value, only valued by the scarcity and utility of them, which the designer intentionally assigns to convince the player it’s more or less valuable.

    Curiously, the examples listed in the OP were exactly the patterns I see designers discuss, but don’t seem to be the patterns on the website (like “illusion of control”, artificial scarcity, which is like, game designs while thing).

    Either way, nice to have this as a resource because honestly a lot of these elements are what I’d put in the “bad / abusive design” category rather than purely dark patterns, but still great to highlight, but I can agree that we should probably be careful blanket calling these dark patterns; examples: It mentions illusion of control being separating you into shards of leader boards so that you can be in the top 500 of a shard rather than top 200,000 world ranking or whatever, or claw machines choosing whether you successfully grab an item rather than relying on skill. How does this compare to Uncharted not letting enemies successfully shoot you in the first few seconds of an action sequence to give you time to ground yourself, or Resident Evil spawning different loot and enemies based on how good/bad you play?

    I’d say, is it to extract money from you in the short term, but it’s more grey than a non-designer might read into from lists like these.




  • My two cents, after years of Markdown (and md to PDF solutions) and LaTeX and a full two years of trying to commit to bashing my head against Word for work purposes, I’m really enjoying Typst. It didn’t take long to convert my themes, having docs I can import which are basically just variables to share across documents in a folder has been really helpful. Haven’t gone too deep into it but I’m excited to give it a deeper test run over the next little bit.


  • Yeah, this is the approach people are trying to take more now, the problem is generally amount of that data needed and verifying it’s high quality in the first place, but these systems are positive feedback loops both in training and in use. If you train on higher quality code, it will write higher quality code, but be less able to handle edge cases or potentially complete code in a salient way that wasn’t at the same quality bar or style as the training code.

    On the use side, if you provide higher quality code as input when prompting, it is more likely to predict higher quality code because it’s continuing what was written. Using standard approaches, documenting, just generally following good practice with code before sending it to the LLM will majorly improve results.


  • I sit somewhere tangential on this - I think Bret Victor’s thoughts are valid here, or my interpretation of them - that we need to start revisiting our tooling. Our IDEs should be doing a lot more heavy lifting to suit our needs and reduce the amount of cognitive load that’s better suited for the computer anyways. I get it’s not as valid here as other use cases, but there’s some room for improvements.

    Having it in separate functions is more testable and maintainable and more readable when we’re thinking about control flow. Sometimes we want to look at a function and understand the nuts and bolts and sometimes we just want to know the overall flow. Why can’t we swap between views and inline the functions in our IDE when we want to see the full flow? In fact, why can’t we see the function inline but with the parameter variables replaced by passed values to get a feel for how the function will flow and compute what can be easily computed (assuming no global state)?

    I could be completely off base, but more and more recently - especially after years of teaching introductory programming - I’m leaning more toward the idea that our IDEs should be doubling down on taking advantage of language features, live computation, and co-operating with our coding style… and not just OOP. I’d love to hear some places that I might be overlooking. Maybe this is all a moot point, but I think code design and tooling should go hand in hand.


  • When I teach story points (not in an official Agile Scrum capacity, just as part of a larger course) I emphasize that the points are for conversation and consensus more than actual estimates.

    Saying this story is bigger than that one, and why, and seeing people in something like planning poker give drastically differing estimates is a great way to signal that people don’t really get the story or some major area wasn’t considered. It’s a great discussion tool. Then it also gives a really rough ballpark to help the PO reprioritize the next two sprints before planning, but I don’t think they should ever be taken too seriously (or else you probably wasted a ton of time trying to be accurate on something you’re not going to be accurate on).

    Students usually start by using task-hours as their metric, and naturally get pretty granular with tasks. This is for smaller projects - in larger ones, amortizing to just number of tasks is effectively the same as long as it’s not chewing away way more time in planning.


  • It depends what “From Scratch” means to you, as I don’t know your level of programming or interests, because you could be talking about making a game from beginning to end, and you could be talking about…

    • Using a general purpose game engine (Unity, Godot, Unreal) and pre-made assets (e.g., Unity Asset Store, Epic Marketplace)?
    • Using a general purpose game engine almost purely as a rendering+input engine with a nice user interface and building your own engine overtop of that
    • Using frameworks for user input and rendering images, but not necessarily ones built for games, so they’re more general purpose and you’ll need to write a lot of game code to put it all together into your own engine before you even starting “Making the game”, but offer extreme control over every piece so that you can make something very strange and experimental, but lots of technical overhead before you get started
    • Writing your own frameworks for handling user input and rendering images… that same as previous, but you’ll spend 99% of your time trying to rewrite the wheel and get it to go as fast as any off the shelf replacement

    If you’re new to programming and just want to make a game, consider Godot with GDScript - here’s a guide created in Godot to learn GDScript interactively with no programming experience. GDScript is like Python, a very widely used language outside of games, but it is exclusive to Godot so you’ll need to transfer it. You can also use C# in Godot, but it’s a bigger learning curve, though it is very general and used in a lot of games.

    I’m a big Godot fan, but Unity and Unreal Engine are solid. Unreal might have a steeper learning curve, Godot is a free and open-source project with a nice community but it doesn’t have the extensive userbase and forum repository of Unity and Unreal, Unity is so widely used there’s lots of info out there.

    If you did want to go really from scratch, you can try using something like Pygame in Python or Processing in Java, which are entirely code-created (no user interface) but offer lots of helpful functionality for making games purely from code. Very flexible. That said, they’ll often run slow, they’ll take more time to get started on a project, and you’ll very quickly hit a ceiling for how much you can realistically do in them before anything practical.

    If you want to go a bit lower, C++ with SDL2, learning OpenGL, and learning about how games are rendered and all that is great - it will be fast, and you’ll learn the skills to modify Godot, Unreal, etc. to do anything you’d like, but similar caveats to previous; there’s likely a low ceiling for the quality you’ll be able to put out and high overhead to get started on a project.