Game Developers of Kiwi Farms

Putting together something in Unity, since I just find things easier to code in C# compared to clicking through endless drop-down boxes, property settings, and cleaning up nodes like in Unreal's Blueprints. I guess visual scripting is fine when you're learning to code gameplay systems, but after learning Unity game modding for a bit, I feel like I've graduated from that. BP is messy as hell.

I kind of wish Unreal had a built-in 3D tile system like what Unity has.
Looking to get into hobbyist gamedev, experimenting with RPG Maker MZ atm. I have a pitch for the first real game I want to make (that I actually show people), but I want to pitch it to people first. The issue is, whenever I try to explain what the game’s mechanics would be (think Madou Monogatari expanded to a whole JRPG, except I don’t mention Madou Monogatari), everyone says it’s a terrible idea. I know the idea is good- otherwise, Puyo Puyo wouldn’t exist- so it’s obvious I’m not doing a good job explaining it. Any thoughts on how you guys explain game mechanics to other people, without using other games as a reference?
Are you talking about a first person dungeon crawler RPG (also known as a blobber)? I know that Madou Monogatari, the early Shin Megami Tensei games, Labyrinth of Refrain/Galleria, Mary Skelter, Demon Gaze, Etrian Odyssey, Undernauts, and Wizardry would all count under that. Actually was working on something similar to something like that.
 
Are you talking about a first person dungeon crawler RPG (also known as a blobber)? I know that Madou Monogatari, the early Shin Megami Tensei games, Labyrinth of Refrain/Galleria, Mary Skelter, Demon Gaze, Etrian Odyssey, Undernauts, and Wizardry would all count under that. Actually was working on something similar to something like that.
Not really. Sure, there are dungeons, and there’s a first person view, but there’s also an overworld and towns. The closest comparisons I can think of are SMT and Phantasy Star 1, both of which have a first person dungeon view, but neither of which I would necessarily call dungeon crawlers.

Edit: I could just be autistic about genres, mind. I figure a dungeon crawl is a game that takes place almost entirely within a dungeon. There’s little (if anything) to do outside the dungeon, since that would be taking away from the whole point of the game. Wizardry 1-7 would be a dungeon crawl, as would Akalabeth (despite its overworld, there’s nothing to really do in it beyond travel and shop) and Etrian Odyssey.
 
Last edited:
Don't blame the tools, blame the low effort people put on the projects.

Hotline Miami was made in Game Maker, Lisa the Painful was RPG maker, Catherine used Gamebryo, Freedom Planet was Clickteam Fusion.

Sadly, for every one of these examples, there is a sea of crap, but I am a believer that, as long as you have passion and care for your project, any game engine can deliver quality games.
Basic tools like hammers, chisels and shovels built the Notre Dame.
 
  • Agree
Reactions: my penis is on fire
Currently making a flag system in 'odot. My current solution is just having every flag be a bool stored in an autoload scipt called Flags so it can be accessed by anything, setting a flag is done by running Flags.generic_flag = true and reading flag state is just if Flags.generic_flag:.
Decided to revisit this. I managed to build it into a working, scalable JSON-based save system into it. When you save it reads all of the variables in the script, creates a dictionary with variable names as keys and their associated values as values, and saves that to a JSON file. When you load the save, it steps through the JSON dictionary and assigns each variable in the script its saved value. It also is able to tell when there are flags in the script that are missing from the JSON and vice versa, meaning I can add and remove flags from the script on the fly without worrying about the save file breaking.
It may seem a bit hacky but it's designed specifically for my own workflow, allowing me to add and remove flags directly in the editor and in GDScript. I can also save variables of any type in this way, not just bools, and even though it comes at a slight performance cost it's not really noticeable and the additional ease-of-use far outweighs it. It's scalable too since folding code regions means I can add as many flags as I need without it turning into a mountain of infinite mouse wheel scrolling. The only caveat I can think of is that the only non-manual way to reset all of the variables in a Godot script is to detach and reattach it to its associated object, meaning the code to reset a save file must be stored in a separate script, otherwise it will call set_script(null) on itself and disable itself.
I mean, I made this whole thing just to prove to myself that I could make something better than Maldavius Figtree's Big Gay Global Array, so hopefully this is a bit more usable.
Code:
class_name flags extends Node

#region Flag variables
#region Oh shit it nests
var generic_flag := false
var generic_flag2 := false
var generic_flag3 := false
#endregion

#region Subregion 2
#var generic_flag4 := false
var int_flag := 123
var string_flag := "This shit aint nothing to me man"
var evil_flag := false
#endregion
#endregion
# End of flag variables region

#region Functions
## Returns a dictionary whose keys are every global variable in the script, and
## whose values are that variable's current value
func create_var_dictionary() -> Dictionary:
    var prop_list: Array[Dictionary] = get_script().get_script_property_list()
    # Miraculously, get_script_property_list() only gets global variables
    var final_dict: Dictionary
    prop_list.remove_at(0) # This index contains info about the script itself, not its variables
    # This is an O(n) move but fuck it
    for i in prop_list:
        final_dict[i.name] = get(i.name)
    return final_dict

## Takes the current state of the variables in this script and writes it to
## a JSON file.
func save_flags() -> void:
    JSONHandler.write_save(create_var_dictionary())
    print("Flags saved to JSON.")

## Takes the saved JSON file and assigns the variables in this script to
## what the file says.
func load_flags() -> void:
    var save_data: Variant = JSONHandler.read_save()
    #print("load_flags() JSON data: ", save_data)
    var script_vars: Dictionary = create_var_dictionary()
    var script_keys: Array = script_vars.keys()
    var save_keys: Array = save_data.keys() # This is always alphabetized because JSON
    script_keys.sort() # So this needs to be alphabetized manually
    #prints(script_keys, save_keys)
    if script_keys != save_keys: # If these are not the same, make them the same
        print("Script and JSON dicts are not the same. Fixing...")
        save_data = fix_save()
    for i:int in script_keys.size():
        set(script_keys, save_data[script_keys])
    print("Flags loaded.")

## If this script and the JSON do not have the same variables, this function will
## add new key value pairs to the JSON to make it match.
## If a key is in the JSON but not the script, it removes it from the JSON.
## Made this so I can add and remove flags in this script on the fly without
## knackering too much with the JSON itself.
# NOTE TO SELF: JSON automatically alphabetizes itself when it saves
func fix_save() -> Dictionary:
    var save_data: Variant = JSONHandler.read_save()
    #print("load_flags() JSON data: ", save_data)
    var script_vars: Dictionary = create_var_dictionary()
    var script_keys: Array = script_vars.keys()
    var save_keys: Array = save_data.keys()
    for i:String in script_keys: # Checks for keys in the script not in the JSON
        if not save_keys.has(i):
            #print("Detected script key that's not in the JSON")
            save_data = get(i)
  
    # If a key is in the JSON but not the script, removes it from the JSON
    for i:String in save_keys:
        if not script_keys.has(i):
            #print("Detected JSON key that's not in the script")
            save_data.erase(i)
  
    return save_data

## Does what it says on the tin. Reads the JSON (not the script) and prints it.
func print_save_data() -> void:
    var save_data: Variant = JSONHandler.read_save()
    print("print_save_data(): ", save_data)

# NOTE: reset_save() must be defined and called in a different script, or else
# this class will call set_script(null) on itself and disable itself.
#endregion
 
Last edited:
It may seem a bit hacky but it's designed specifically for my own workflow
You dropped this, king 👑

Funny little workflow optimizations and QoL things make up most of my happy programming memories; writing scripts to automate documentation, silly progress bars, etc. It's the good stuff.

Also I now want to shit out a game that features "Maldavius Figtree's Big Gay Global Array" as some kind of Goldeneye-esque doomsday weapon. I wonder if that would also cop a DMCA from la cucaracha...
 
So, guys. Did anyone else received an email saying that their company had decided to follow an piece of legislation called "The Digital Services Act?" Because all of an sudden, there's an new requirement to have your address and contact info visible for the Eurocucks.

Skimming through it, this is mostly the usual regulation stuff that we all expected from them. Except for Articles 30 and 31
Article 30

Traceability of traders
1. Providers of online platforms allowing consumers to conclude distance contracts with traders shall ensure that traders can only use those online platforms to promote messages on or to offer products or services to consumers located in the Union if, prior to the use of their services for those purposes, they have obtained the following information, where applicable to the trader:
(a)the name, address, telephone number and email address of the trader;
(b)a copy of the identification document of the trader or any other electronic identification as defined by Article 3 of Regulation (EU) No 910/2014 of the European Parliament and of the Council (40);
(c)the payment account details of the trader;
(d)where the trader is registered in a trade register or similar public register, the trade register in which the trader is registered and its registration number or equivalent means of identification in that register;
(e)a self-certification by the trader committing to only offer products or services that comply with the applicable rules of Union law.
2. Upon receiving the information referred to in paragraph 1 and prior to allowing the trader concerned to use its services, the provider of the online platform allowing consumers to conclude distance contracts with traders shall, through the use of any freely accessible official online database or online interface made available by a Member State or the Union or through requests to the trader to provide supporting documents from reliable sources, make best efforts to assess whether the information referred to in paragraph 1, points (a) to (e), is reliable and complete. For the purpose of this Regulation, traders shall be liable for the accuracy of the information provided.

As regards traders that are already using the services of providers of online platforms allowing consumers to conclude distance contracts with traders for the purposes referred to in paragraph 1 on 17 February 2024, the providers shall make best efforts to obtain the information listed from the traders concerned within 12 months. Where the traders concerned fail to provide the information within that period, the providers shall suspend the provision of their services to those traders until they have provided all information.
3. Where the provider of the online platform allowing consumers to conclude distance contracts with traders obtains sufficient indications or has reason to believe that any item of information referred to in paragraph 1 obtained from the trader concerned is inaccurate, incomplete or not up-to-date, that provider shall request that the trader remedy that situation without delay or within the period set by Union and national law.
Where the trader fails to correct or complete that information, the provider of the online platform allowing consumers to conclude distance contracts with traders shall swiftly suspend the provision of its service to that trader in relation to the offering of products or services to consumers located in the Union until the request has been fully complied with.
4. Without prejudice to Article 4 of Regulation (EU) 2019/1150, if a provider of an online platform allowing consumers to conclude distance contracts with traders refuses to allow a trader to use its service pursuant to paragraph 1, or suspends the provision of its service pursuant to paragraph 3 of this Article, the trader concerned shall have the right to lodge a complaint as provided for in Articles 20 and 21 of this Regulation.
5. Providers of online platforms allowing consumers to conclude distance contracts with traders shall store the information obtained pursuant to paragraphs 1 and 2 in a secure manner for a period of six months after the end of the contractual relationship with the trader concerned. They shall subsequently delete the information.
6. Without prejudice to paragraph 2 of this Article, the provider of the online platform allowing consumers to conclude distance contracts with traders shall only disclose the information to third parties where so required in accordance with the applicable law, including the orders referred to in Article 10 and any orders issued by
Member States’ competent authorities or the Commission for the performance of their tasks under this Regulation.
7. The provider of the online platform allowing consumers to conclude distance contracts with traders shall make the information referred to in paragraph 1, points (a), (d) and (e) available on its online platform to the recipients of the service in a clear, easily accessible and comprehensible manner. That information shall be available at least on the online platform’s online interface where the information on the product or service is presented.
Article 31
Compliance by design
1. Providers of online platforms allowing consumers to conclude distance contracts with traders shall ensure that its online interface is designed and organised in a way that enables traders to comply with their obligations regarding pre-contractual information, compliance and product safety information under applicable Union law.
In particular, the provider concerned shall ensure that its online interface enables traders to provide information on the name, address, telephone number and email address of the economic operator, as defined in Article 3, point (13), of Regulation (EU) 2019/1020 and other Union law.
2. Providers of online platforms allowing consumers to conclude distance contracts with traders shall ensure that its online interface is designed and organised in a way that it allows traders to provide at least the following:
(a)the information necessary for the clear and unambiguous identification of the products or the services promoted or offered to consumers located in the Union through the services of the providers;
(b)any sign identifying the trader such as the trademark, symbol or logo; and,
(c)where applicable, the information concerning the labelling and marking in compliance with rules of applicable Union law on product safety and product compliance.
3. Providers of online platforms allowing consumers to conclude distance contracts with traders shall make best efforts to assess whether such traders have provided the information referred to in paragraphs 1 and 2 prior to allowing them to offer their products or services on those platforms. After allowing the trader to offer products or services on its online platform that allows consumers to conclude distance contracts with traders, the provider shall make reasonable efforts to randomly check in any official, freely accessible and machine-readable

However, this might be another nothingburger on account of all those other "Know Your Customer" laws. But I was told that this information would be publicly displayed if you're in the EU, so it's just another reminder to compartmentalize your lifestyle.

Apparently, this specific company provides the option of just displaying your country and city only if you're running this out of your own home. But I still think that this is an prime case of European retardation
This private information is unavailable to guests due to policies enforced by third-parties.
 
Last edited:
(Is this the right thread for my sperging?)
I thought of this in the shower one night and if I had my own video game studio I’d definitely make this. It’s a hack and slash where you play as a big tittied blonde southern white chick slicing up sentient scarecrows to protect your cows. She would be both a cowgirl and a samurai, having a samurai sword and a revolver as weapons. Also a lasso for certain game mechanics. It would have a lot of humor similar to lollipop chainsaw and that’s mostly because I thought of that game when I thought of this.

how feasible is making a game like this and what engine would work best? I doubt it’ll ever come to fruition but there was that one guy who started development on lost soul aside all by himself.
 
Last edited:
Paradox modding (and especially submodding) is a pain in the ass. With submods, you gotta keep an eye out for scripted triggers, flags, and what have you if you're modifying an already existing nation, and for modding in general in certain cases you have to copy files wholesale to change some a couple lines of code in a 500+ line file. This is especially apparent in CK2.
 
# This is an O(n) move but fuck it
Real and relatable

Of course making a hack and slash takes a lot of resources. I’m probably stuck making some turn based RPG like the talentless hack I am.
I could just be clueless to what's being put out nowadays, but I feel like there's still plenty of room for 2D hack and slashers to be made that aren't just another platformer metroidvania or soulslike. Something along the lines of Megaman Zero, or even a full-on 2D Devil May Cry, for instance.
Honestly, there's probably a lot of ideas that are viable enough to be expanded upon. The troves of flash games from over a decade ago are a testament to that.
 
Might as well post info about a dead project from a few years back that never really got off the ground.
It was based on the public discovery of this one tranny who was sneaking behind people in womens' bathrooms and masturbating. A video game recreation.

I was fucking about in Torque as to intentionally avoid Godot (thus avoiding any community upheaval ...but after the "Wokedot" incident: fuck them. Godot every time with the logo prominently displayed.) and was fiddling about with maps in Blender ...but modern Torque really isn't good for maps with enclosed spaces. I remember finding this out as a teenager over a decade ago and it still rings true.
There's all sorts of issues with lighting, culling, overdraw, collision. It's kind of a piece of shit.

I had a great idea for a bonus stage where you'd run around a preschool touching children while Crazy Frog played in the background.
Now I realize that people would've just jerked off to it.

Stuff's on my other computer so no screenshots for now but there's nothing too interesting.
 
  • Informative
  • Autistic
Reactions: M.Dew and Email
Paradox modding (and especially submodding) is a pain in the ass. With submods, you gotta keep an eye out for scripted triggers, flags, and what have you if you're modifying an already existing nation, and for modding in general in certain cases you have to copy files wholesale to change some a couple lines of code in a 500+ line file. This is especially apparent in CK2.
Depending on what specifically your doing you don't need to actually copy the whole file, sometimes you can put a separate file in the same location with the specific bit you want changed and it'll work, but sometimes you want your new file to load before the normal file, and sometimes you want it to load afterwards.
 
  • Informative
Reactions: Sooty Soot
Depending on what specifically your doing you don't need to actually copy the whole file, sometimes you can put a separate file in the same location with the specific bit you want changed and it'll work, but sometimes you want your new file to load before the normal file, and sometimes you want it to load afterwards.
I know, but especially when it comes to GFX modding and more specifically religion modding you have to modify an already existing file to add a single new icon.
 
1741054448951.png
'odot 4.4 came out today, and it's a biggun. Here's some highlights:
  • At long last, you can edit game objects in real time while the game is running
  • Official Jolt Physics integration, so you're no longer stuck with Godot's grody in-house physics engine
  • Static type-able dictionaries. Also comes with a nice editor UI update for them
  • Shaders and particle effects no longer cause lag spikes when you trigger them for the first time
  • REPL support has been added to the debugger
  • You can now set the profiler to autostart on game launch. This is something that should've been added years ago but I'm glad it's here now
  • You can now add custom editor buttons to nodes with @export annotations. You used to have to poke around in Godot's C++ innards to do this
  • 3D spring bones! Useful for animating hair, and other stuff.
  • 2D shader uniform variables can now be individually assigned. Changing a uniform used to affect every object that used that shader, which was difficult to work around
  • The super old navigation system has been improved
  • Vertex shading has been added. As if Godot's main use case wasn't already making low-poly PSXslop, they just made it even easier
Overall, good shit. Can't wait to mess with it more
 
So thought i'd make an update here. The Cry of Fear developer, Andreas Rönnberg has had leaks of him being a groomer and simping for a tranny. I'm too lazy to make a thread about it right now but here's the evidence docs: https://drive.google.com/drive/folders/1Ps5xz2kbGMWyFDbGMkGbLEqEcMUO4DPH

How does it feel that every indie game developer ends up becoming a groomer?
 
Back