u/Osemwaro
-
0points
Osemwaro
Osemwaro
I've just found that this bug has been reported here. I haven't yet read enough to understand why it was closed, but it seems that the workarounds are to either use :r Main or :l app/Main.hs.
Osemwaro
That's true, but pirating a released game after the developer has spent several months marketing it is different. The specific threat that I'm trying to risk-assess is the possibility of someone vibe-coding my prototype into a complete game and releasing it before I'm even close to completing it.
Osemwaro
I'm trying use the new Haskell debugger, which requires GHC 9.14.1. But under that GHC version (and some earlier versions), loading a local module with :l no longer works if I launch GHCi with cabal repl (I'm using Cabal 3.18.2.0 in Ubuntu, but I'm not sure how relevant this is).
The simplest demonstration of this is to run cabal init and pick all of the defaults, so that it generates an app/Main.hs file. If I then run cabal repl, it loads this file, and I can execute main. If I modify it, I can also reload the changes with :r. But if I run :l Main, I get the error
``` λ: :l Main <no location info>: error: [GHC-82272] module ‘Main’ cannot be found locally
Failed, unloaded all modules. ```
If I add another module app/M.hs to other-modules in the .cabal file and relaunch cabal repl, it says that it has compiled M, but attempting to load it with :l M produces the same error. The only way to access anything defined in M is to export it from M and import it in Main. This means that I can't access the private members of any module other than Main.
Why is this happening? :l works correctly under GHC 9.4.8 (using the same version of Cabal), but I'm not sure which later version introduced the breaking change.
The same issue occurs if I launch GHCi directly with ghci -i=app. The :show paths command confirms that app is in the search path, but :l Main still produces the error above. So it seems to be a GHCi issue, not a Cabal issue.
Osemwaro
By "spec", do you mean a prompt written by the user, or something else? Have you come across any technical information anywhere that details what information and tools the agents used?
Osemwaro
It doesn't have to be idiomatic, nor does it even have to be decompiled to Haskell. To pose a threat, agents just need to infer enough about how the prototype works from the binary to allow someone to vibe-code it into a complete game.
I don't trust the AI companies with any data that I care about, especially after the Navier-Stokes controversy, so I don't want to reverse engineer my own game with a SotA model. But I might try it on an open-source Haskell game at some point.
Osemwaro
Have you read what happened to My Own Hero Party? For context, it's the developer's first Steam game, due for release in December. They released a demo on Itch and Steam 4 months ago, which got a little under 200 reviews -- great for a little-known indie game, but maybe not life-changing.
If AI makes it cheap and easy for people to steal work like this, a game won't necessarily need to attract a great deal of interest before it attracts thieves.
Osemwaro
I'm not quite as concerned about people vibe-coding crappy knock-offs just using prompts, assets and information about the game that I put online, because I can: a) store assets in non-standard, obfuscated file formats of my own devising; and b) try to strike a balance between revealing enough information online about the game to get people interested, and omitting information that would be needed to create a faithful clone. A person who plays the prototype might be able to figure out some of the omitted information by playing it, but it would still be hard for them to use the obfuscated assets. But if agents can quickly and cheaply infer every detail about how the prototype works by reverse engineering it, including how to make sense of the asset files, then I have no way of protecting myself.
Osemwaro
You may already be aware of this, but for future reference, it's a bad idea to write the release month as a number, because date formats vary across the world. There's no ambiguity in this case, because the 15 can't be a month. But e.g. if you'd written "12-11-26", that would be read as 12th Nov in many parts of the world, not 11th Dec.
Osemwaro
I would also be interested in joining. It hadn't occurred to me that I might be having a midlife crisis, but the signs are there! I'm nearly 43 and I quit my job 6 years ago to work on my own projects, one of which is a video game.
Osemwaro
I've just finished the demo, and I really enjoyed the kind of thinking that it demanded. I got both chips in 4 out of the 6 levels, so there's still a bit more for me to figure out.
I did notice, though, that when I complete a level within the target number of rounds, the enemies don't have an opportunity to attack. Is that a deliberate design choice? It makes it feel more like a puzzle game than a strategy game, which is fine if that's intentional, except that it limits replayability. Also, even though it took me 6 rounds to complete the last level, there was at least one case where the enemies had the opportunity to attack, but they didn't. Are you planning to improve the AI, or add the ability to adjust the AI difficulty?
Osemwaro
I've just played the first two levels, and I've wishlisted it already! It feels like it might just be the right game to fill the hole that Into the Breach left in my heart once I started to find it a bit too easy.
It took me 6 rounds to complete the Shield level, after a few restarts and losing my base on one of my attempts. I like the fact that it's not yet obvious how to complete that level in 3 rounds; I'm looking forward to returning to that puzzle later on.
Osemwaro
I really like the sound of this! I'll check out the demo when I have a chance, and will wishlist it if it's as fun and interesting as I imagine.
Minor quibble: if the robots are "blindly following routines meant for a world that no longer exists", why is the one that we control trying to "free the robots from their programming"? Was it programmed to do this in the event of humanity's demise?
Osemwaro
the money is not worth more than the difference in interest and mental health.
If you feel this way about a career that you say you love, then I don't know what word you would use to describe your feelings about composing, especially given that you'd even be willing to do it for minimum wage! If you conclude that a composing career is financially infeasible on its own, would you be interested in supplementing the income with other music work for which there's a higher demand, like teaching or music production?
Osemwaro
I'm using the website, and it's not offering me that option. Maybe it's only available in the app (which I don't use).
Osemwaro
So do you think you would enjoy a job that involves a lot of linear algebra? I think it's safe to say that pretty much all of the fields that I mentioned in my first comment offer career paths that involve a lot of linear algebra, but I suspect that most of these careers would require you to use it alongside other mathematical techniques. E.g. I've spent most of my career doing computer vision research and robotics, and although we used linear algebra a lot, we also used statistics, optimisation, graph theory, differential geometry, approximation theory, etc.
Software engineering jobs can also be a good source of puzzle-like problems. They often involve discrete maths rather than real numbers, so you might find that they're closer to the kinds of puzzles that you enjoy. You would have to find the right sub-field though, especially now that generative AI is being widely used for a lot of low-level programming tasks.
Note that I'm biased though! As a computer scientist/software engineer, I can tell you far more about careers in my field than I can about careers in other fields that might be more appealing to you.
Osemwaro
FYI I can't speak Spanish, so I'm using Google Translate to translate your reply into English. So if I've misunderstood anything that you've said, that's probably why.
According to Translate, you said "I was in a math degree program". Do you mean that you started/completed an undergraduate-level maths degree? If so, what kinds of jobs/internships have you tried? Did you try any undergraduate research programmes? How did you feel about these experiences?
You also seem to have said that learning maths wasn't difficult for you, but you struggled with discipline. Does this mean that, overall, you don't enjoy maths? Were there any areas of maths that you did enjoy? I struggle to think of any mathematical career paths that involve a lot of puzzle-like problem-solving without also requiring discipline. But it might help if you could say more about what specific things demotivated you, and why you found them demotivating.
Apart from that, how do you feel about any of the strategy games that offer big cash prizes in the top professional tournaments, e.g. chess, go or poker? Do you enjoy any of these games as much as you enjoy Stephen's Sausage Roll? If so, have you considered working towards playing them professionally?
Osemwaro
Puzzles and strategy games are particularly popular amongst people who study/work in mathematical fields, because these fields make similar demands in terms of analysing problems/systems, spotting patterns, reasoning, etc. But we're talking about a wide range of fields here, most of which offer an extremely wide range of career paths, e.g. civil engineering, mechanical engineering, electronic engineering, aeronautical engineering, bioengineering, maths, physics, chemistry, computing, finance, actuarial science, economics, etc. If you want to explore the full range of possibilities, try looking up "mathematical sciences" and see where your interests take you.
Osemwaro
I was specifically thinking about what you said about writing the PPU code, from 8:12 to 9:21. Your comments there weren't positive, but I guess I mistakenly took that as being representative of your whole experience of writing imperative code.
EDIT: On that note, would the INLINE pragma have allowed you to achieve the performance that you needed there without having to manually inline so much into one function?
Osemwaro
True that side effects are the only thing that you want. But since the language and its ecosystem are so heavily tailored to writing pure code, I imagine that you might end up with nicer code if you write pure code. After all, you pointed out halfway through the video how awful it was to have to write a load of imperative code in Haskell. So you could take that "why bother" reasoning one step further and say: if you're going to implement most of the functionality imperatively, then why bother using Haskell at all, when there are plenty of languages that are much better suited to that style of programming?
Osemwaro
For games that don't use mappers, I wonder how close you can get to the original NES performance in Haskell with pure data types, rather than using IORefs and mutable Vectors. Simulating a < 1.8 MHz CPU and 2KB of RAM in pure code doesn't sound obviously implausible to me.
Osemwaro
I am also developing simultaneous turn-based strategy games, and I've been spending a lot of time thinking about how an AI agent should play. I can't speak for the abstract game community, but from a decision theoretic viewpoint, the way in which you identify the optimal moves in simultaneous games is very similar to the way in which you do so in sequential games. In both cases, the value of a given action depends on your uncertainty about your opponent's future actions and your responses to them. The main difference is that, in simultaneous games, you also have uncertainty about what your opponent's current action will be, so you have to average over everything that they could do now to determine an action's value.
So for any two games of similar complexity, if one is simultaneous and the other is sequential, and both provide perfect information about everything that has happened so far, and the sequential game is too complex to permit optimal play, then the extra piece of information that the sequential game provides doesn't help that much, because both games have a lot of uncertainty about what the future holds. Perhaps the added cognitive load of having to consider what your opponent might do now would be enough to deter some people who like the sequential game from playing the simultaneous game, but presumably such people don't think very far ahead when playing the sequential game.
Osemwaro
What's the benefit of supporting MicroHS? Does it compile to any platforms that GHC doesn't support?
Osemwaro
In case you didn't notice while Googling, "octopus" is of Greek origin, not Latin. People who are fond of language trivia will often tell you that "octopodes" is therefore the plural that best fits the etymology, but please don't use that!
I didn't say that obfuscation would make it impossible for people to reverse-engineer the assets, I said it would make it "hard" (and you yourself conceded that it would require "some effort"). Obfuscation is the only hope I have of creating an economic disincentive, whereby the cost (time and money) of reverse-engineering the assets exceeds the value of doing so, so that people won't bother trying.