Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411507 Posts in 69374 Topics- by 58429 Members - Latest Member: Alternalo

April 26, 2024, 12:58:39 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogs⌂ Blimdom ⌂ (The procedurally generated ASCII blimp sim)
Pages: 1 [2]
Print
Author Topic: ⌂ Blimdom ⌂ (The procedurally generated ASCII blimp sim)  (Read 2301 times)
[email protected]
Guest
« Reply #20 on: March 13, 2023, 12:54:42 AM »

I landed in a town and got to walk around, which make the lag more apparent. (In the Unity emulated version.) It feels like the garbage collector doing its thing.



The Unity version also seems to have trouble with departing from towns. I press b after landing in Ikogata and the game freezes. It stayed like that for 3 minutes while my fan spun like it was preparing for a space launch, so I closed it. I know how tricky it is to juggle heterogenous environments with shared code. I ported an engine to 3 different languages, and sometimes there are little bugs here and there.
Logged
Rogod
Level 3
***



View Profile WWW
« Reply #21 on: March 13, 2023, 01:28:28 AM »

Well that surprises me. Since I get 1200+ FPS in the Unity emulated version.

I have all the fancy and useless settings turned off or down to their lowest values in the Unity engine and am employing all the optimisations I can come up with.

In order to emulate the terminal:
  • It is displaying 80x40 quads for the front tiles, with a UV shift for character and colour (i.e. minimal polygons)
  • It is displaying 80x40 quads for the background colours, with a UV shift for colour (i.e. minimal polygons)
  • It is only updating a quad if it has changed (i.e. no spam)
  • It's also only updating the front quads if the front changes, and the back quads if the back changes (i.e. no spam)
  • The quads are chunked so there isn't 1 mesh for the entire screen to update (i.e. minimal updated memory)
  • The updating of quads does not refresh geometry after the initial mesh generates, only UV (i.e. minimal updated data)

Lighting is disabled, the camera's range is dialled right in, no objects move (I think I've got the meshes toggled as static as it is), the textures have no compression or mipmaps, there are no shaders involved, etc.

It even runs relatively comfortably in my old 2020 Ubuntu VM, which is heavily under-powered.

I just can't think why it'd be running so poorly unless your specs are low. Sad What kinda hardware are we dealing with here?
Logged

[email protected]
Guest
« Reply #22 on: March 13, 2023, 02:00:56 AM »

Quote
What kinda hardware are we dealing with here?
Dell OptiPlex 5050 with Intel i5 and 16 GB RAM. It runs most games pretty well. While it supports Vulkan, some engines may detect the wrong thing and switch to GL mode. I have had problems with OpenXR software because there were some Vulkan->GL conversions that aren't possible with Intel graphics drivers. In OpenGL, every mesh is a draw call, and 3200 draw calls would be significant bridge overhead, while with Vulkan it wouldn't move the needle. Instancing is the solution if you write your own GL code, but Unity makes decisions for you so idk. I also have a slow hard drive, so it could be hitting the disk a lot.

To elaborate on what I think could be the problem: In OpenGL you can't just draw 3200 quads on the screen. Each glDraw* call (in this case each quad) invokes a bunch of error checking and a separate data transfer to the GPU. This is called being bridge-bound, the opposite of fill-bound. Google isn't giving me good documentation on these pitfalls, but it's the kind of thing you pick up on if you write OpenGL code a lot.
« Last Edit: March 13, 2023, 02:29:47 AM by mse » Logged
Rogod
Level 3
***



View Profile WWW
« Reply #23 on: March 13, 2023, 03:36:39 AM »

Just to clarify, when I say "quads", these aren't just a huge clump of the default Unity prefab quad objects. These are generated quads (by vertex, winding order & UV) in a larger mesh.
 Pixel 30
 Pixel 30 The 4 chunks (separated for visibility) being used (the divisions can be increased from 2x2 if necessary) for front and back quads

 Pixel 30
 Pixel 30 The draw calls (seems pretty low overhead to me Screamy)

Am still looking into it, mind. There are settings I can fiddle with it would seem. Coffee



EDIT:
I've turned off the auto graphics API toggle for Linux and ensured Vulkan gets first priority on this build:
https://blimdom.neocities.org/test/Blimdom_Unity_Linux_v0071.zip
If you could try this and let me know if this fixes it then awesome, we'll keep that in the main versions as this still ran on my Ubuntu VM.
« Last Edit: March 13, 2023, 04:05:14 AM by Rogod » Logged

[email protected]
Guest
« Reply #24 on: March 13, 2023, 05:52:42 AM »

I'm still getting the hitching, so at this point I would guess it's not graphics-related. I'm out of ideas.
Logged
Rogod
Level 3
***



View Profile WWW
« Reply #25 on: March 13, 2023, 07:13:37 AM »

Unfortunately the only thing that'll tell me whether this is an issue with the emulator or something more fundamental with the core game underneath is knowing how it performs running the Linux Native build on your machine.

I can understand if it's an unreasonable ask, but if you wanted to give it a go, it might give us the clue we need to solve this odd scenario.
(See https://blimdom.neocities.org/support "Running Blimdom on Linux?" section for installation details.)



I am restricted to either my Ubuntu VM which runs slowly anyway (although stably from what I can tell) and my Raspi which uses an ARM processor (Unity doesn't support ARM Sad ).

I don't see why all these fancy shmancy operating systems make it so blimmin difficult to put coloured ASCII characters on a screen. Tears of Joy

(Side note: we had the same palava trying to get Startron to work on Linux Native in the first place lol)
Logged

[email protected]
Guest
« Reply #26 on: March 13, 2023, 08:01:07 AM »

All I had to do to get the native Linux version was install ncurses. (I think most people static link their TUI lib when distributing binaries but this is a .net program so I won't get particular about how things are done...) It runs fast! But it still hitches in the town, just slightly faster hitching. My guess is still the garbage collector. It also freezes when I try to disembark, same as the Unity version.

Terminal means ascii screenshot.  My Word!

Code:
▄▄▄▄▄▄▄▄▄                               █               ≡≡≡≡█≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  Kirga                  █             ███          ████    █     
▀▀▀▀▀▀▀▀▀               ███           █████     ████████≡≡≡≡█≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
█▄▄▄████ ▄▄▄█████▄▄▄   █████         ███████████████████    █             
█████▄█▄█████████████▄███████       ████████████████████≡≡≡≡█≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
█████▄█████████████████▄██████     █████████████████████    █                 
███████████████████████████████   ██████████████████████≡≡≡≡█≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
███████████████████████████████  ███████████████████████    █
█████████████████████████████████████████████████████████████████████████≡≡≡≡≡≡≡
████████████████████████▄▄████████████████████████████████████████████████
███████████████████████████▄████████████████████████████████████████████████████
                      ███████▄██                                        ████████
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡██████████≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
                      ██████████     
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡███▀██████≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
                      ██▀█████▀▄                                        ███████▀
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡▀███████▄█≡≡≡≡≡≡≡≡≡Food & Co.≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡████▀▀██
                      ██████▀███                                 ▄███▄  ██▀█████
  ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡████▀▄▄█▄▄≡≡≡≡≡≡▄███▄         ≡≡≡≡≡≡≡≡≡≡≡≡≡█▄█▄█≡≡████████
                      ▀███▄██▄██      █▄███                      █▄▄▄█  █▀▀▀▀▀██
  ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡████████▄▄≡≡≡≡≡≡▄▄███         ≡≡≡≡≡≡≡≡≡≡≡≡≡≡███≡≡≡▄▄▄▄███▄
                      ▀█████▀▄██       ███                     ▄███████▄█▄▄▄███▄
  ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡▀▀▀▀▀  ███≡≡≡≡≡≡≡███          ≡≡≡≡≡≡≡≡≡≡≡██▀███▀███▄██████
                       ▌ ▌ ▌ ▌ ▌█      ████                    ██ ███ ██████████
  ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡  ▌ ▌ ▌ ▌ ▌ █≡≡≡≡████          ≡≡≡≡≡≡≡≡≡≡≡▀█≡███≡█▀▄███▄▄▄▄
                       ▌ ▌ ▌ ▌ ▌ █     ███                       ██ ██  █████▄██
  ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡  ▌ ▌ ▌ ▌ ▌ █≡≡≡≡≡███          ≡≡≡≡≡≡≡≡≡≡≡≡≡██≡██≡≡▀▀▀▀▀▀▀▀
                       ▌ ▌ ▌ ▌ ▌ █     ██                         █ █         
                       ▌ ▌ ▌ ▌ ▌█       ██                       ██ ██     
                                       ███                               
                                                                         
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
            █ █                  █          █        █             █     █   
            █ █                  █                   █             █     █   
            █ █                  █    ▄▀▄▀▄▀         █             █     █   
                                 █   ▄█████▄         █             █     █   
                                 █   █▀█▀███         █             █     █   
Disembark           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄  █▀▀▀▀██ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄      █     █   
                     (←) Walk left    █████   Walk right (→)       █     █   
Quit                ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀          ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀      █     █     
Logged
JobLeonard
Level 10
*****



View Profile
« Reply #27 on: March 13, 2023, 08:02:29 AM »

On that side note:

Quote
Some loose inspiration came from Nausicaä of the Valley of the Wind, Dragon Ball, Fallout, Dwarf Fortress (of course) as well as my very own Startron. (Hopefully I can do them all justice.)

I dunno, you're setting the bar pretty high there with trying to match Startron  Tongue

But seriously, this looks great!
Logged
Rogod
Level 3
***



View Profile WWW
« Reply #28 on: March 13, 2023, 08:50:21 AM »

@mse
Quote
static link their TUI lib when distributing binaries
Only just now learning that this is possible leads me to an endless Google session where people try to link all kinds of things to all kinds of other things lol. I suspect VisualStudio and .Net are not overly forthcoming with any possible ability to link a Linux library. (Especially given this is all being compiled on Windows, so there is no such thing as apt-get until it's on the player's (Linux) machine.)

Quote
it still hitches in the town
I had a hunch there might have been a timing issue going on (somehow), and this probably proves it. This has definitely been a valuable test, I thank you. Gentleman

Quote
It also freezes when I try to disembark
I suspect this difference in our results here is a race condition caused by the above timing discrepancy with Linux machines crashing the game as it's trying to look stuff up in the settlement while also being told the player is no longer in the settlement. I have at least fixed the thread safety here (2 lines should have been the other way around) so this should be fixed in v0.08.

Quote
Terminal means ascii screenshot.
A completely valid way to take a screenshot in my opinion Grin



EDIT:
I believe part (hopefully all) of the problem in the Unity versions was the game processing being done on a different thread than the keyboard mapping so I've just reshuffled things so the emulator now uses 1 less thread and performs the game processing on the same main thread that input is handled on.

If you could try this second test version out, I'm hoping the results are much better this time:
https://blimdom.neocities.org/test/Blimdom_Unity_Linux_v0072.zip
If not, then we're way off in our thinking because that rules out both graphics and multi-threading (at least in my opinion).
(This version also contains the fix for leaving towns, so that'd be another good thing to be sure of in our quest here Smiley )



@JobLeonard
Quote
you're setting the bar pretty high
I think I can do it; the feature list I have planned for Blimdom excites my imagination more than Startron ever did (hence the project switch after 87 versions).

Already the automation is far cleaner and easier to understand (and easier to develop) - it just got too clunky to be playable or fun using those silly conveyor belts in Startron - at least the way I had implemented it all. Embarrassed

And thankfully the Blimdom intro isn't a poor-man's version of an outdated meme, as with Startron, so it holds a little more thematic relevance for people - more than one person has told me it's beautiful, so I'll take that. (Startron's theming just seemed too arbitrary for its own good - kinda like No Man's Sky :D )
« Last Edit: March 13, 2023, 11:42:07 AM by Rogod » Logged

[email protected]
Guest
« Reply #29 on: March 13, 2023, 12:00:25 PM »

Quote
Only just now learning that this is possible leads me to an endless Google session where people try to link all kinds of things to all kinds of other things lol. I suspect VisualStudio and .Net are not overly forthcoming with any possible ability to link a Linux library. (Especially given this is all being compiled on Windows, so there is no such thing as apt-get until it's on the player's (Linux) machine.)
Normally one would put the library's source into the parent repo and set it up for an in-tree build, but that's way over on the C/C++ side of the fence and you're wise to avoid it in a Windows/.NET environment.

Quote
If you could try this second test version out, I'm hoping the results are much better this time
Fixed! It runs faster, and no race condition when I disembark. (Still the slightest bit of hitching in the town; sinking the fence or whatever. doesn't matter)

Quote
Startron's theming just seemed too arbitrary for its own good - kinda like No Man's Sky
There are just a lot of space games. Even good free ones. I'm not sure if any capture the "perfect" experience of seamless planetary landing, intergalactic romance, AI-generated stories, VR on your phone, blockchain memes, and the rest of the kitchen sink. It has to be all of space, so there's the problem.
Logged
Rogod
Level 3
***



View Profile WWW
« Reply #30 on: March 13, 2023, 12:11:07 PM »

Quote
set it up for an in-tree build
Yea there's no way I ever want to build someone else's code. Been avoiding that rabbit hole for 20 years quite successfully.

Maybe I can come up with some kind of accompanying scripty file to go along with the Linux distros to install ncurses. (Maybe Tongue)

Quote
Fixed!
That's the ticket! I suspect there's probably at least one other thread collision happening as I was able to get a similar stuttering effect with the ARM Native build on my Raspi (so Unity's not involved) but this is a good enough result for now. The code will be iterated on anyway, so if I spot anything, maybe good things will come in the future.

Quote
There are just a lot of space games.
I think that's it right there - there are many games like Startron, but there aren't many games like Blimdom, so I feel a little more secure and less like I'm wasting my time. Startron was a good extreme proof of concept in my eyes and I have no regrets, but I want something that makes a bit of an impact now. :D
Logged

[email protected]
Guest
« Reply #31 on: March 13, 2023, 12:26:29 PM »

Quote
set it up for an in-tree build
Yea there's no way I ever want to build someone else's code. Been avoiding that rabbit hole for 20 years quite successfully.

Maybe I can come up with some kind of accompanying scripty file to go along with the Linux distros to install ncurses. (Maybe Tongue)
As a Linux user who builds other people's code almost daily and has no problem installing things from package managers, I think you'd be fine just listing the dependencies. It looks like you're shipping a .NET runtime with it now, so just ncurses.

I want something that makes a bit of an impact now. :D
EGS just opened the floodgates. There might be a market for an epic ASCII blimp game. If Blimdom started fullscreen and had the right music, it could easily pass for indie-mainstream as it is right now.
Logged
Rogod
Level 3
***



View Profile WWW
« Reply #32 on: March 13, 2023, 02:49:02 PM »

Update v0.08
Horizontal! Gomez

Features in this version:

 Hand Joystick The Unity version now has a window icon Well, hello there! (such wow, many good, so pictogram)

 Hand Joystick The world map's accuracy has been improved (the characters drawn are now what's in the middle of the cell being represented, not the corner)

 Hand Joystick The world now wraps horizontally (the world will never wrap vertically because everybody knows you can't fly over the poles of a planet #scienk)

 Hand Joystick Added a loading spinner to the save screen from in game so it doesn't just freeze when you press Q

 Hand Joystick Settlements now generate a little more randomly (I will probably overhaul this with something more clever later. I just didn't want them all looking identical for now.)

 Hand Joystick Resources like bubble-fruit and food now display in a vertical bar down the right hand side of the screen (these will become important for travel later, so are necessary to see on screen)
 Pixel 30

Bugs fixed in this version:

 Hand Any Key Fixed race conditions on leaving settlements

 Hand Any Key Fixed race conditions on switching perspectives

 Hand Any Key Fixed timing/thread fighting in Unity emulator


Dev stuff:

 Ninja Removed a redundant extra variable for Ctrl in the Unity emulator input mapping




@mse
Quote
EGS just opened the floodgates
What happened? :O?

Quote
had the right music
Music is coming :D - I just don't want to hassle my musician Coffee - But from the test sample I've heard so far, it should be sufficiently awe-inducing.
Logged

[email protected]
Guest
« Reply #33 on: March 13, 2023, 03:08:44 PM »

Must play. Much tired.

Quote
What happened? :O?
https://store.epicgames.com/en-US/news/epic-games-store-launches-self-publishing-tools-for-game-developers-and-publishers

Quote
Music is coming :D - I just don't want to hassle my musician
You have a musician? Production values! I was thinking you could just grab some tunes on OGA and call it a day. My current strategy is to make one original title track then fill the rest with royalty free music.
Logged
Rogod
Level 3
***



View Profile WWW
« Reply #34 on: March 20, 2023, 01:26:35 PM »

Update v0.09
Manipulational! Gomez

Features in this version:

 Hand Joystick Prevented clearing stone and snow unless they are adjacent to an already cleared tile

 Hand Joystick Allowed clearing most floor tiles down to deep sea (so one can actually be a bit more creative)

 Hand Joystick Allowed dumping of ceramic into the sea to raise the seabed into land again (also for creative purposes)

 Hand Joystick Made flocks more visible over certain tiles (Gomez sneaky birds Ninja)

 Hand Joystick Added the ability to toggle marker stones so they don't flash around the edge of the screen or on maps when off

 Hand Joystick Animated the heat pump so it doesn't look so silly


Bugs fixed in this version:

 Hand Any Key Fixed pickers picking plants if there are no storage yards free

 Hand Any Key Fixed being able to pick up nothing when collecting-all from a storage yard (it led to a significant item duplication effect)

 Hand Any Key Fixed water lifts and augers working on unsuitable terrain

 Hand Any Key Fixed not being able to toggle heat pumps (apparently I just forgot to write that code lol)


Dev stuff:

 Ninja Marginally increased the lossless compression in save files (should decrease saving time in theory)

 Ninja Some refactoring was refactorized

 Ninja Updated my primitive (and incomplete) build script to make things ever so slightly easier for me when I want to release




@[email protected]
Quote
You have a musician?
Yea there should eventually be at least intro music and a game background track. (Similar to Startron)
Logged

mobilelast
Level 2
**


View Profile WWW
« Reply #35 on: March 26, 2023, 12:39:28 PM »

Blimdom is an ongoing labour of love; the concept of an "end" does not apply.
I like this approach. I’ve never understood why people complain if, for instance, a game stays in early access for a long time.

For many artists, it is hard to finish and publish a work as there’s no way to improve it afterwards. Web developers, on the other hand, curse the fact that products are never ready, but require constant maintenance on features and security (the most boring part of the job).

Game development lies somewhere between, so why not take advantage of both?
Logged

Avaruustaistelupeli (ATP) - a space combat game
- Free download from itch.io or IndieDB
- Dev diary here
Rogod
Level 3
***



View Profile WWW
« Reply #36 on: March 26, 2023, 03:24:09 PM »

Update v0.10
Creational! Gomez

Features in this version:

 Hand Joystick Increased the world height by 50% so blimps can fly above clouds if they have enough balloon components onboard

 Hand Joystick Blimps below clouds are now occluded (previously they were just showing up on top of everything else regardless of altitude)

 Hand Joystick Blimp components can now be installed and uninstalled (each has an important role in operating your blimp so I wouldn't remove the default components you get unless you're planning on putting them back lol)
 Pixel 30
 Pixel 30 The 3 sizes of blimp have a proportional number of component slots each

 Hand Joystick Added the engine, propeller, balloon, anchor, saw table & furnace components - this list will be expanded upon as time goes on of course

 Hand Joystick Items can now be crafted on the saw table component that comes with each blimp
 Pixel 30

 Hand Joystick Added roasted shellfish & roasted oracots

 Hand Joystick Added planks which must be processed from wood first (this change also alters various crafting recipes for buildings)


Bugs fixed in this version:

 Hand Any Key Fixed floating point inaccuracy in Unity builds

 Hand Any Key Fixed not being able to pick up any of the coloured orbs I'd snuck into previous versions


Dev stuff:

 Ninja Refactored all the tile appearance definitions into about 1/3rd the space




@mobilelast
Quote
Game development lies somewhere between, so why not take advantage of both?
Exactly :D - I just figured we could write our own rules on this and give folks something they want while also still saying "Hey am gona make more :D" without it having to be a dedicated sequel or a day-1 patch.
« Last Edit: March 27, 2023, 12:46:06 AM by Rogod » Logged

Rogod
Level 3
***



View Profile WWW
« Reply #37 on: March 27, 2023, 12:40:28 PM »

Update v0.11
Obscurable! Gomez

Features in this version:

 Hand Joystick Made fog-of-war more localized
 Pixel 30
 Pixel 30 Your view distance increases with altitude

 Hand Joystick Tweak: Prevented buying more than one yellow orb

 Hand Joystick Tweak: Prevented selling the yellow orb


Bugs fixed in this version:

 Hand Any Key Fixed water lifts not working on soil (broken in v0.09 woops Embarrassed)


Dev stuff:

 Ninja Nothing hugely important got refactored this time Beer!




I had intended to make a bigger update but when I noticed the water lifts weren't working I figured I'd better host a working version of the game before continuing. Gomez
« Last Edit: March 27, 2023, 12:53:39 PM by Rogod » Logged

nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #38 on: April 29, 2023, 11:08:03 AM »

I remember seeing this a while back and I guess I hadn't replied/subscribed. Looks cool, hope it's going well!
Logged

Rogod
Level 3
***



View Profile WWW
« Reply #39 on: April 29, 2023, 11:37:11 AM »

Sorry, yes I guess I owe an update as I've not posted anything in a while:

I've taken a break for a month to take part in a development challenge. (The fruits of which may find their way to this forum also.)

I'll be back to working on Blimdom again in a couple of weeks if everything goes according to plan. Gentleman
Logged

Pages: 1 [2]
Print
Jump to:  

Theme orange-lt created by panic