Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411492 Posts in 69377 Topics- by 58433 Members - Latest Member: Bohdan_Zoshchenko

April 29, 2024, 07:32:21 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsFLIES FLIES FLIES - queer sci-fi comedy VN - Free demo on Steam!
Pages: 1 [2] 3 4 ... 6
Print
Author Topic: FLIES FLIES FLIES - queer sci-fi comedy VN - Free demo on Steam!  (Read 13969 times)
nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #20 on: June 15, 2023, 04:40:48 PM »

Yes of course! Follow along and I'll do my best to stay interesting.  Wizard

I think this is the second time someone has told me about Eega. It does look interesting and I might watch it to learn some more ways that a fly might go about getting revenge. (Or in my story's case, solving a sci-fi mystery.) Cheers to no idea being original  Beer!
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #21 on: June 16, 2023, 03:05:25 AM »

Well the film won an award for being the most original film so you probably don't have to worry about being a cliché just yet  Tongue
Logged
nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #22 on: June 21, 2023, 01:23:13 PM »

Subtraction was broken

I caught a very silly bug recently! In Lisp languages, you write
Code:
a - b
as
Code:
(- a b)
which seems ridiculous when you first learn it, but then you learn you can write
Code:
a - b - c
as
Code:
(- a b c)
which is marginally less keystrokes per operand. Totally cool huh?

So subtraction is supposed to start with the first number given and keep subtracting as many numbers as you want until you add the close-parenthesis. There is one exception, which is that
Code:
(- a)
simply returns the opposite of a (a times -1). If this were to follow the pattern, you'd expect (- a) to return a without changing it, but for Super Important ReasonsTM in most Lisps you can't just write
Code:
-a
because symbols can only start with letters.

Anyway, I'm currently on my 3rd attempt at implementing my own Lisp language to use for gamedev. In the first 2 attempts, I was diligent and remembered to implement and test the special case for subtraction with 1 argument. I guess on my 3rd attempt--which is the best one by far--it must have slipped my mind! Because I was trying to position sprites offscreen by using
Code:
(- coordinate)
and they were appearing on-screen at the positive coordinate value. D'oh! Wild to think that something as basic as subtraction was broken in the language I've been building for 3 years.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #23 on: June 22, 2023, 04:25:51 AM »

Guess you are just to...

(•_•)

( •_•)>⌐■-■

(⌐■_■)

positive
Logged
nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #24 on: June 22, 2023, 12:48:39 PM »

Not anymore  Noir
Logged

a-k-
Level 2
**


View Profile
« Reply #25 on: June 22, 2023, 07:58:05 PM »

What use is creating your own Lisp if you don't innovate?
Define "-" recursively such that
Code:
(- d c b a)  ===  -(a-(b-(c-(d))))
That should cover like 99% of the use cases!
Logged

nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #26 on: June 26, 2023, 02:12:42 PM »

What use is creating your own Lisp if you don't innovate?
Define "-" recursively such that
Code:
(- d c b a)  ===  -(a-(b-(c-(d))))
That should cover like 99% of the use cases!

I thought it would make me cool if I actually implemented that subtraction function...

The code I came up with revealed to me that the `apply` macro was broken for functions with variadic arguments. I had to fix the language core to get this to run:

Code:
(function sub [&rest :kiss.List<Int> operands]
    (if operands
            (- (apply sub (rest operands)) (first operands))
        0))

~(sub 3)
~(sub 3 2)
~(sub 3 2 1)


And it still prints different values than when I calculate by hand from your formula...

Quote
(sub 3): -3
(sub 3 2): -5
(sub 3 2 1): -6

On top of that, I realized my "fix" didn't fully solve the problem. I'm gonna have to roll it back and get back to actual work  Facepalm

That's the fun thing about programming jokes. Even after 10 years, you won't understand all of them and might waste 30 minutes trying to "get the joke" by implementing it.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #27 on: June 27, 2023, 01:50:57 AM »

Lol, when a programming joke actually turns out to be free Q&A Cheesy
Logged
nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #28 on: June 28, 2023, 10:56:57 AM »

The worst gameplay footage of all time

A couple days back I was trying to screen-record the first 5ish minutes of episode 1 using OBS to put together a new trailer. I just got let go from a contract job which was my primary source of income, so I'm trying to circulate the project and hopefully find more Patreon supporters to help bridge the gap in employment.

(Could it be you??)



I split my development time between Windows and Linux and I happened to be using Linux when I took the recording. Screen recording on Linux is always a crapshoot. But when I played back the recording in VLC it was SO MUCH WORSE than I was expecting.  Epileptic





(To share this, I had to hold my phone up and record the video playing on my monitor. I'll explain why below.)

The audio is very corrupt and in the early frames that are just white text on a black screen, it appeared that the pixels of each frame were scrambled all around in pieces. I honestly couldn't imagine what went wrong with the graphics.

But when more colors and sprites appeared on the screen, I realized the video had been scrambled into Jigsaw puzzle pieces, and I knew exactly what was going on.

My side-project is a game called Habit Puzzles in which I used an open-source library to generate jigsaw puzzle piece shapes for an interactive puzzle. I wasn't quite satisfied with the results from the first library I tried, so I've been looking for other open-source puzzle generator algorithms I could use. Someone mentioned to me that VLC has a puzzle piece video filter in it (I have no idea why) so the last time I had VLC open on my Linux machine, I had enabled the jigsaw filter to see if it might be suitable for my project if I could delve into the source code and replicate their algorithm.

I forgot to turn off the filter, so when I played back my gameplay footage, it was chopped up into puzzle pieces.  Big Laff

So the reason why I had to record the recording from my phone, is that the video doesn't actually have messed up graphics. That was VLC overlaying a filter on it. I could have used OBS to screen-record the video playing back, but then the audio would have been doubly corrupted, and I didn't want to hear what that would sound like.

Anyways... new trailer coming soon!
Logged

nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #29 on: June 29, 2023, 12:34:15 PM »

Here's that new trailer!





I know 5+ minutes is way too long for a game trailer but for now I can only pick footage from episode 1, and if I were to do a snappier trailer with all the best moments from episode 1 it would spoil the episode. As I make more episodes I'll be able to pull more scenes for a fast trailer that gives more of an overview and doesn't detract as much from the intended experience.

Logged

JobLeonard
Level 10
*****



View Profile
« Reply #30 on: June 29, 2023, 10:57:30 PM »

Oh shit, hope you'll get a new stable source of income (Patreon or otherwise) again!

This looks fun, I like the writing. Did not expect it to be voice-acted! Makes me wonder if your game is accessible for people with sight problems, actually. Might be a good "crowd" for interactive fiction, come to think of it.

But yeah, the trailer could be snappier. A lot of silence, which works when reading a story but not when watching a trailer. OTOH, maybe just call this something like "first five minutes of gameplay trailer"? Then the "flaws" become features, because it's just delivering what was promised.

You could still try to make a shorter, snappier trailer. I mean, it's fine to have both, right? Different trailers appeal to different players. Just make it clear which trailer is which and people will decide which one they watch. Plus a short one might hook people who wouldn't have had the patience to try out the 5-min one, but who then might watch the 5-min one. Gotta reel them in slowly, so to speak.

Anyway, can I make a suggestion that might help with creating a shorter, snappier, spoiler-free trailer? You could a few short clips that don't show any major plot points, but still sound dramatic.

In fact, you could even use the material you already have, here are some examples that fit imo:

- "My name is FINN, pops"
- "And let in the *spiders?* Or worse, a MOTH?"
- "'I'm not even the girl you're looking for', what does that even mean?"
- "Dad's being intense again. Look, I gotta go"

Then mix that with single sentence white-text-on-black-background (optionally with DRAMATIC SLOW ZOOM, but that's just annoyingly forced epicness) explanations of the premise of the game. The one you already have in the description works fine:

Quote
Finn Flynn, a trans man about to graduate from his conservative Utah high school, wakes up one morning in the body of a housefly. Without the use of his voice, he'll have to come out to his insectophobic mad scientist dad and solve the mystery of his transformation.

Bit of reordering, bit of chopping up, and you get something like this:

Quote
"My name is FINN, pops"

Fin Flynn

"'I'm not even the girl you're looking for', what does that even mean?"

A trans man

"Finn, bedtime! Tomorrow, one more AP test, then your life can truly begin! SCIENCE!"
"Dad's being intense again. Look, I gotta go."

About to graduate from his conservative Utah high school

"And let in the *spiders*? Or worse, a MOTH?"

He'll have to come out to his insectophobic mad scientist dad...

THE NEXT MORNING

"Up and at 'em, rise and shine! Another day, another internal monologue."

"Rise and shine. Rise and shine."

"Up and at 'em."

"Wait, what the f-"

And solve the mystery of his transformation.

FLIES FLIES FLIES

Or something like that.

(I tried to keep the hard-cut to "FLIES FLIES FLIES", because I loved that and it already was a funny/dramatic way to end it)
Logged
nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #31 on: June 30, 2023, 08:16:04 AM »

This is next-level feedback and advice! I will probably end up doing almost exactly what you've suggested here. Could be this is the biggest contribution a stranger on the internet has ever made to one of my projects.  Coffee
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #32 on: June 30, 2023, 01:29:14 PM »

Aww, you're welcome. Plus you basically did all the groundwork by providing the first trailer and the original writing Smiley
Logged
nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #33 on: July 04, 2023, 12:53:09 PM »

This looks fun, I like the writing. Did not expect it to be voice-acted! Makes me wonder if your game is accessible for people with sight problems, actually. Might be a good "crowd" for interactive fiction, come to think of it.

This is also on my mind. Some parts of the story are less amenable to a visually impaired player, i.e. a voiceless fly tracing out letters in the air (as previewed here). So far when recording the voiceover for Finn/Flyman, I've had my friend record takes of all of the "Flywriting" lines, so I can provide an option in the settings to play voiceover for them, even though the intended experience is that the flywriting will be silent, slower, and offputting, because Finn losing his voice is a big deal.

This brings up a load of other things I need to do before I can market the game as blind-accessible, like adding alternate input modes to the menus (right now buttons can only be selected by mouse), and screen reading of the menus too. I think I will do this eventually, and just record myself reading all the menu text for that. Plus, adding descriptive narration for story moments that only take place visually will be necessary. And I'd have to test every episode blindfolded to make sure it's still a coherent experience.

I'm trying to do the easiest most generally-useful things on this checklist for now (like keyboard and gamepad menuing), and probably save the harder ones for post-Steam-release because I'd basically need to do a second round of beta testing, with testers that don't see so good.  Blink

I should mention that everything is already fully subtitled and I have a sound captions option in there, so I'm thinking it'll be very accessible to the deaf community on first release.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #34 on: July 05, 2023, 12:32:05 AM »

Wow, that sounds like a massive effort. The fact that you're even thinking about it while doing all of this solo (well, except for voice acting I guess but that doesn't change my point) is impressive Coffee
Logged
nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #35 on: July 06, 2023, 12:02:21 PM »

Thank you for this recognition! That also served as a reminder to check in with myself and realize I needed a break. So yesterday I cut my work-time short, played some games, caught up on podcasts, and watched The Sixth Sense for the first time. Damn, I loved that movie.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #36 on: July 07, 2023, 12:23:13 AM »

Ooh, you managed to avoid the spoilers for it? Nice. M Night never fully recovered from that debut I'm afraid
Logged
nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #37 on: July 07, 2023, 01:12:35 PM »

Nah, I knew the twist going in. What surprised me was how human and emotional, and even life-affirming it was! I cried!  Tears of Joy
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #38 on: July 10, 2023, 10:09:47 AM »

Yeah it doesn't get enough credit for still being a good film if you do know the twist, simply because that twist overshadowed everything when it came out.
Logged
nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #39 on: July 10, 2023, 07:46:19 PM »

while I'm at it

let me tell you about another embarrassing bug I found in my custom Lisp.

Code: (custom lisp test case)
(function _testWhile []
    (let [max 8
            &mut current 0
            &mut iterations 0]
        (while (>= max (+= current 1))
            (+= iterations 1))
        (assertEquals 8 iterations)))

Outputs:
Quote
Assertion failed: expected 8 but it was 4

Somehow I've been working with while loops that evaluate their condition twice per iteration!!!!

This is a pretty good opportunity to delve into the language internals.

My language is just a very complicated Haxe macro.

Haxe macros are basically functions written in Haxe, which return a data structure representing haxe expressions, which haxe compiles into your program.

Here is the code where my language is generating a data structure for the while loop:

Code: (haxe macro)
        function whileForm(invert:Bool, wholeExp:ReaderExp, args:Array<ReaderExp>, k:KissState) {
            var funcName = if (invert) "until" else "while";
            var b = wholeExp.expBuilder();
            var cond = k.convert(b.callSymbol("Prelude.truthy", [args[0]]));
            if (invert) {
                cond = macro !$cond;
                cond = b.haxeExpr(cond);
            }
            return EWhile(cond, k.convert(b.begin(args)), true).withMacroPosOf(wholeExp);
        }

        k.doc("while", 2, null, '(while <condition> <body...>)');
        map["while"] = whileForm.bind(false);
        k.doc("until", 2, null, '(until <condition> <body...>)');
        map["until"] = whileForm.bind(true);

This registers two variations of while loops into my custom lisp: one for normal while loops, and one for inverted while loops: "until" loops where the body is repeated UNTIL the condition becomes true.

The problem, which took me a few minutes to pinpoint, is that I'm accessing the condition expression, args[0], but LEAVING it in the args list, which then gets passed into the data structure as part of the BODY of the while loop. So effectively, (while (checkCond) (doThing)) would turn into (while (checkCond) (checkCond) (doThing)). If any side-effects take place in the condition expression, kaboom!!


« Last Edit: July 10, 2023, 07:54:50 PM by nathy after dark » Logged

Pages: 1 [2] 3 4 ... 6
Print
Jump to:  

Theme orange-lt created by panic