Game Development

4111 readers
40 users here now

Welcome to the game development community! This is a place to talk about and post anything related to the field of game development.

Community Wiki

founded 2 years ago
MODERATORS
376
 
 

Yes, most of them are PD already. But this package includes all the latest of everything and gets all the updates and fixes.

377
 
 

Unity Price Change Fallout Keeps Getting Worse - GameFromScratch.com https://gamefromscratch.com/unity-price-change-fallout-keeps-getting-worse/ #Unity3D #GameDev

378
 
 

From the gameassets community on Reddit: #GodotEngine #GameDev

379
 
 

GameFromScratch.com #GodotEngine #GameDev

380
 
 

I think now is the best time to share it. Unfortunately we're using it way more than we would like.

381
69
Unity Alternatives in 2023 (gamefromscratch.com)
submitted 2 years ago* (last edited 2 years ago) by [email protected] to c/[email protected]
 
 
382
 
 

After seeing this other post here and lot of talk about it, I thought it'd be a good idea to make a list of free or FOSS engines for people that were considering using Unity but probably won't anymore, or that want to ditch it ASAP.

Feel free to add your own suggestions in this thread!

Engines:

  • Godot - Probably the "biggest around", offers programming in both GDScript (very similar to Python) and C# with their Mono executable. Also has bindings for other languages thanks to their GDExtension API, such as Rust, Go and Nim. Has lots of material for learning and a community over programming.dev
  • Solarus - FOSS, for making SNES/GBA Zelda-like games (top down action rpgs). Programming done with Lua
  • GDevelop - FOSS, Similar to Construct2/3, focuses on visual scripting to define the workings of your game.
  • OHRRPGCE OHR - Putting this one here because I'm simply too amused to leave it out. Could work as an alternative to RPG Maker, if you happen to know FreeBASIC and don't mind the really old school look of everything.
  • Stride - Probably one of the best options for high performance 3D games with C# programming. MIT license
  • Fyrox - Rust based engine. Allows both 2D and 3D development. MIT license
  • Bevy - Similar to Fyrox above, it's made with Rust and allows both 2D and 3D. MIT or Apache license

Game specific engines - These are engines made to play a specific game, but they have enough tooling to allow you to make almost any other game with them

  • OpenMW - Should probably be a good option for anyone with experience modding TES games. There is a "new game template" on their docs
  • GZDoom - It's Doom. If you really, absolutely, definitely, must have your game run EVERYWHERE, this is one of the best choices. You aren't stuck to raycast first-person shooters, either, someone made a Donkey Kong Country with Doom and there's also Sonic Robo Blast 2 Kart.
  • Quake 2/3 source ports - Similar to GZDoom above, but for those that need good 3D performance. A good option is YamagiQ2
    • Pretty much any implementation or sourceport of id games fits the bill. The most recent open sourced engine of theirs was tech 4, which ran Doom 3 and Quake 4.

Frameworks - This is for the programmers.

  • LOVE2D - Lua framework for making 2D games. Can also run on Android if the person installs the LOVE2D app
  • MonoGame - Formerly XNA, it should be the go-to option for people with experience in C#. One of its most notable games is Stardew Valley
  • libGDX - For people who want to make a game running in Java. Porting it to several platforms should be easy thanks to the JVM. Two notable games are Mindustry and Unciv (Civ5 clone)
383
 
 

Per the CEO in today's meeting:

"This is a ploy to gather more people to use Level Play [advertising network]. The mediation provider [advertising network] makes a cut off every ad, and right now a lot of people are on AppLovin Max [not Unity's], so a big part of this is they want people to switch to Level Play, and by doing that they'll make way more than the install pricing they're suggesting. It's too early to panic, but it is a big change"

If that sounds like a ramble, it's because it was, but the tl;dr is it seems Unity is giving a secret pass to companies that switch to use Unity's advertising solution.

Also some quick fun facts:

  • Unity was never profitable
  • Unity gave up competing with Unreal over a year ago
  • Godot is a free and open source engine that competes with Unity professionally
  • The trash App Store/Play Store games spy on you extensively, although Apple and Google have significantly limited their spying ability over the last couple years (i.e we used to open your camera in the background, can't do that anymore)

Update:

CEO is in talks with some Unity folks. The impression is "this decision came from very high up in Unity" from an exec who "had no idea how bad of an idea it was". We're expecting a public revision shortly (next couple days)

384
 
 

GameFromScratch.com / #Unity3D #GameDev

385
386
 
 

I made a blog post about my experience switching from Unity to Godot earlier this year, and some tips for Unity devs. Hopefully this can be useful for Unity devs considering the switch.

387
68
#Unity (lemmy.dbzer0.com)
submitted 2 years ago by [email protected] to c/[email protected]
 
 
388
 
 

I've done hardly any game development in my life (making a simple Gamemaker game at high-school in 2016 or 17, & making a box fall in Unity a couple years back; so you can call me a complete noob. But I was just wondering: If I for whatever reason wanted to make my game work natively on a Bunch of different Windows versions, like 95, 98, 98SE, 2000, ME, XP, Vista, 7, 8, 8.1, 10 & 11; would that be possible without making separate versions of the game for different Windows versions? It sounds like a cool project for doing just for the fun of it, for learning about the different OS versions once I already have more experience with development on modern Windows. What if I made the game on Godot game engine? Can Godot games even run on such old operating systems? I heard that Windows 2000 and above are NT based, and major Windows versions prior to that ran on something else: would this greatly affect the development process at all?

Clarification: Sorry, but I should have clarified that my development platform is Linux, and would be porting to Windows, which obviously should change the answer to my question drastically; I have no idea why I worded things to sound like I would develop the game on Windows first and foremost; but that was my mistake.

389
 
 

This is of course not including the yearly Unity subscription, where Unity Pro costs $2,040 per seat (although they may have Enterprise pricing)

Absolutely ridiculous. Many Unity devs are saying they're switching engines on social media.

390
391
392
 
 

GameFromScratch.com #GodotEngine #GameDev

393
 
 

[Including "one of the single biggest mistakes" Unity could make] | GameFromScratch.com #Unity3D #GameDev

394
 
 

Effective January 1, 2024, we will introduce a new Unity Runtime Fee that’s based on game installs.

We are introducing a Unity Runtime Fee that is based upon each time a qualifying game is downloaded by an end user. We chose this because each time a game is downloaded, the Unity Runtime is also installed.

Games qualify for the Unity Runtime Fee after two criteria have been met: 1) the game has passed a minimum revenue threshold in the last 12 months, and 2) the game has passed a minimum lifetime install count.

  • Unity Personal and Unity Plus: Those that have made $200,000 USD or more in the last 12 months AND have at least 200,000 lifetime game installs.

  • Unity Pro and Unity Enterprise: Those that have made $1,000,000 USD or more in the last 12 months AND have at least 1,000,000 lifetime game installs.

This means that if you have made more than $200K in the last 12 months and have lifetime installs of over 200K, you'll have to pay per game install. It won't affect most people but this sounds outrageous. It's a good time to be a Godot enthusiast. Unity really is insanely desperate these days.

395
396
 
 

From the ever informative GameFromScratch #GodotEngine #GameDev

397
17
submitted 2 years ago* (last edited 2 years ago) by [email protected] to c/[email protected]
 
 

click here to view this on my blog with some nicer styling

Most developers that have had some experience with programming business software are familiar with testing, especially unit testing. But that experience usually doesn’t transfer neatly into gamedev due to the fact that games are more about interaction between game elements rather than the behavior of a single element alone. Never the less, unit testing can be a powerful tool, even when it comes to game development. Test with a larger scope than unit tests can also provide interesting possibilities that aren’t talked about enough. I’ll try to change that and hope to inspire you to try out some different forms of automated testing.

Starting simple – Unit Tests

Let’s first get some basics out of the way and start with unit tests and when to use them. Unit tests are the most useful whenever you have some complex logic that is at least somewhat isolated. As an example from my current game/prototype I had to write a method that computes if and when in the future two moving circular hit boxes will overlap.

This method is used to predict when two units would collide and helps steer them apart. The result isn’t perfect (yet) but is already a lot more natural than any collision based system.

The method signature looks something like this (Warning! Two letter variables ahead):

fun computeCollision(
    // position, velocity and radius of first hitbox
    p0: Vector, v0: Vector, r0: Double, 
    // position, velocity and radius of second hitbox
    p1: Vector, v1: Vector, r1: Double
): Double? {
    /* complex logic goes here */
}

Writing some unit tests helped me iron out some edge cases that such e piece of code might have:

  • What happens if the circles have intersected in the past?
  • What happens if the paths the circles take never intersect? (e.g. parallel movement)
  • What happens if the paths never intersect but the circles do (e.g. parallel movement but they always intersect)
  • What happens if the circles touch but never intersect?

Given that the logic completely depends on the inputs it is very easy to write unit tests:

@Test
fun `two circles with crossing paths at different times should never collide`() {
    val t = computeCollision(
        // Will pass (0,0) after 5 seconds
        p0 = Vector(-5f, 0f), v0 = Vector(1f, 0f), r0 = 1.0,
        // Will pass (0,0) after 8 seconds
        p1 = Vector(0f, -8f), v1 = Vector(0f, 1f), r1 = 1.0
    )

    expectThat(t) { isNull() }
}

This is nice for isolated methods, but can get complex and convoluted if you want to test interactions between different things in your game. Which is why we need to take this…

One level higher – Gameplay Tests

The prerequisites to efficiently test gameplay is that your game engine supports it. Sadly that isn’t a given by most common game engines, so you’ll have to make do with some weird hacks depending on your choice of tooling. In my case it was rather easy because I’m not using a real game engine but something like a game framework (libgdx + ktx). In addition I’m using the Entity Component Systems (ECS) design pattern (powered by fleks) for my game logic, which makes it quite easy to run my game as a simulation without any user interface.

Separating out any logic that depends on graphical context (e.g. OpenGL) was as simple as setting up a game world without all rendering systems. The game loop is also completely in my control, so I can easily simulate thousands of frames per second. Any complexity is extracted into easy to use methods. A simple test looks something like this:

@Test
fun `heroes with starter weapons should beat level 1`() {
    // Arrange - setupWorld() uses the same methods to setup the world as the 'real' game
    //           but without any rendering logic. It also mocks user input to cast
    //           skills at enemies.
    val (world, gameHandler) = setupWorld(level = 1, defaultBow, defaultSword)

    // Act - simulate the gameloop at 30fps until the heroes win or lose
    val result = world.simulateLevel(gameHandler)

    // Assert - check if simulation finished with the expected result
    expectThat(result) { isEqualTo(GameOutcome.Win) }
}

This simulates a full run of the first level in about 100ms. With this setup it is quite simple to add various scenarios for different enemies, heroes and item combinations and run them in a short amount of time in order to ensure everything works as expected. But why stop here?

Let’s turn it around – Game Balance Tests

Given that we can run through multiple levels under a second, why not automate some more tasks that you would normally do by hand? Let’s test some simple game balance assumptions that should always hold true.

A test to check that a very good item crafted at level X should be able to beat level X+1 could look like this:

// Parameterized tests run the same test multiple times with different inputs
@ParameterizedTest(name = "should beat level {0}")
@ValueSource(ints = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
fun `best crafted item from previous level`(level: Int) {
    // getBestCraftedItem() simulates randomly crafting items at a given level
    // the best item out of 100 crafted items from the previous level is selected
    val (world, gameHandler) = setupWorld(
        level,
        getBestCraftedItem(level - 1, ItemType.Bow, numItemsToGenerate = 100),
        getBestCraftedItem(level - 1, ItemType.Sword, numItemsToGenerate = 100)
    )

    val result = world.simulateLevel(gameHandler)

    expectThat(result) { isEqualTo(GameOutcome.Win) }
}

There are many other possible balance tests one could imagine writing:

  • Crafted items should never be so good that it enables skipping a level entirely
  • Heroes should be balanced in a way that multiple of the same hero cannot beat levels but different heroes together can (e.g. 3 knights should be a worse than 1 knight + 1 archer + 1 healer)
  • Different builds should be able to beat levels (e.g. always selecting weapons that deal poison damage should be as viable as picking weapons that deal fire damage)

It’s also quite easy to collect some additional metrics from the world by adding some systems that are only used in tests and that monitor various entities (e.g. count how much damage a certain hero deals compared to other ones). The possibilities are almost endless!

Conclusion

Why would one even go through all this effort? I see the possibilities this brings when used in conjunction with manual gameplay testing. Playing a game to see if it is fun will always be required. But imagine switching some things around and prototyping different ideas while immediately being able to see what consequences that has is immensely powerful. How far one can push this concept is something that I will have to learn as my game grows in features and complexity.

398
 
 

Not sure if the Game Development community allows tabletop game discussion, feel free to correct me if this is the wrong place.

399
 
 

Thought this was a nice little video!

400
 
 

I was just looking at jobs and saw Sony was hiring for a Narrative Design Lead position. I was just wondering, what the Junior equivalent position would be to this? Like what would it be called and what responsibilities would it entail?

view more: ‹ prev next ›