assrekt

Member
Mar 14, 2019
298
273
240
I'd like to throw one last thing in the mix as well. What about adapt the code Geass series where in you use your geass to hypnotize the girls completely or do the same thing what is SU is doing (hypnotized at night). Plus I think it would be sweet to have mechas involved specially in the mini-games.
 

kingkongercock

New Member
Dec 11, 2018
2
3
58
Looking back on it now, I think a sensible explanation is that it's a project made by two anonymous friends who knew each other beforehand. Hence why they wouldn't want to hire anyone else on, or why "the artist" is so lenient with "the coder".
It's obvious that the artist feels some sort of obligation to the coder. Forgive my wording but this behaviour from the artist seems extremely 'feminine'. There is a reason that every business has a single boss, there is extreme utility in firing people who simply are not doing their job. I feel like many people here are extremely naive, this project is bringing in big dollars and the coder TAKES A 3 MONTH vacation, even 3 weeks seems excessive. From their postings it seems like he is working himself to death, but he has literally nothing to show for it other than extremely sloppy and shitty code.

After reading through your posts It's obvious that this entire project has been mismanaged from the very beginning. The artist, MITY has all the leverage, after all that's why people buy the game, not for the code but for the art. If this is a joint-project MITY needs to buy FET's share in the name and if he doesn't want to sell then threaten to leave him.

I legitimately think that he refused to patch up the game himself, because if he did he would outshine the coder. MITY wouldn't want to hurt his feelings so he stalls the project for 5 months.

For his next project i hope he hires a team of competent people and actually reinvents some money into his business.
 

kingkongercock

New Member
Dec 11, 2018
2
3
58
Furthermore, MITY could host a minigame competition right now. Just ask people to submit Ren'py minigames which showcase their skills and fit for a project, he could offer 30% of the cashflow for the winner that gets hired. And of course if a new coder is a stranger, he will actually feel some pressure to improve due to the fear of being fired for subpar work.
 

Genji

Engaged Member
Dec 1, 2017
2,845
3,197
381
Mity is a good man,but dont let other people use him because of his goodness
 
D

Deleted member 436513

Guest
Guest
It's obvious that the artist feels some sort of obligation to the coder. Forgive my wording but this behaviour from the artist seems extremely 'feminine'. There is a reason that every business has a single boss, there is extreme utility in firing people who simply are not doing their job. I feel like many people here are extremely naive, this project is bringing in big dollars and the coder TAKES A 3 MONTH vacation, even 3 weeks seems excessive. From their postings it seems like he is working himself to death, but he has literally nothing to show for it other than extremely sloppy and shitty code.

After reading through your posts It's obvious that this entire project has been mismanaged from the very beginning. The artist, MITY has all the leverage, after all that's why people buy the game, not for the code but for the art. If this is a joint-project MITY needs to buy FET's share in the name and if he doesn't want to sell then threaten to leave him.

I legitimately think that he refused to patch up the game himself, because if he did he would outshine the coder. MITY wouldn't want to hurt his feelings so he stalls the project for 5 months.

For his next project i hope he hires a team of competent people and actually reinvents some money into his business.
Normally I'd say that's mean, but I think the crucial point that warrants it in this case is that their Patreon account hasn't been suspended during this entire shitshow, which is a major faux pas for me. Even if by mistake, that is a LOT of money.

That said, if you wanted to steelman the fuck out of MITY's side and view the whole thing from their perspective (at least with the limited information we've been given), it would go something like this:

1) The coder starts a project based on his original idea and vision, hires the artist based on some criteria, acts as the director for the game (every scene is his idea, he writes all the jokes, he comes up with the game flow and the overarching storylines, he manages the finances, etc. - all the artist does is follow instructions and essentially work on commission).
2) He does everything he possibly can to be generous (the Patreon stretch goals list "the coder will be employed full time" as the last goal, i.e. implying that the artist already got paid way before that, and him making enough money to quit his job is the least important requirement).
3) The project goes on and gets traction, he does everything he can to make his vision a reality, learns programming/game design/writing on the job, etc. He's never really done this before and they can't hire anyone else, so he'll have to spend a lot of time and effort to accomplish even basic things, but he won't give up, he'll try his best and he'll keep getting better.
4) They hit the "both of us quit our jobs" milestone ($6,000 in June 2017, less than a year after launch) and then... sort of just stop there. It's the two of us making a game, that's always been the plan after all, we don't know if we'll make enough to hire anybody else, we both live in an expensive area and we're in debt, why bother if there's a risk, so on and so on.
5) Then, the coder takes on more than he can handle as a beginner (the CCG minigame), gets burnt out/depressed as a result, and the artist goes "Alright dude we've been working together for 3 years, I know you, everything's gonna keep going fine. Just take a few weeks off, I'll keep working in the meantime, we'll delay the game a bit if we have to or I'll finish the update, no big deal".
6) Then he also breaks his ankle (?) during new year's eve (??) last month (???), and his mom had cancer before (or she still does?), and he's at his parents' house, whatever, real life. Let's assume things pile up and he's out of commission for 3 months through no fault of his own, he deserves a break, he really has been trying his best, it's fine. He's back on the job now, and everything is back to normal.
7) They also didn't really keep track of the Patreon money or think to suspend/invest it, so now they have the bad PR of making 80k for essentially no work.

Giving them the benefit of the doubt on all of that, we have the following possible criticisms:
  • The coder refuses to change things up, hire additional help, take a programming course, or recognize the limits of his own skills -> he's stubborn
  • The artist does most of the work, and actively harms the project by deferring to the coder instead of getting rid of or standing up to him, because of their friendship -> he's weak
  • They don't want to use the Patreon budget to improve the project, because they think they deserve to keep it to themselves -> they're greedy
Furthermore, MITY could host a minigame competition right now. Just ask people to submit Ren'py minigames which showcase their skills and fit for a project, he could offer 30% of the cashflow for the winner that gets hired. And of course if a new coder is a stranger, he will actually feel some pressure to improve due to the fear of being fired for subpar work.
I think your earlier point might hit a bit closer to home than anyone would want to admit. For instance, if the artist hired some guy to do the CCG minigame he failed to do, and he just DOES IT in a fucking weekend for 200 bucks, it's entirely possible the old coder would feel inadequate and spiral further into depression. The project management/HR side of things has always been the weakest aspect of FET, and it will continue to be so.
 
Last edited by a moderator:

Balrog

Active Member
Jan 10, 2018
665
1,087
243
Let's be honest, the spagheti code was a disaster waiting to happen and they were just lucky it took until book 3 and a CCG mini game to happen because it could have happened back in book 2.

Also sorry, but MITY never had the manpower and coding capacity to make a CCG mini game, at best they could do a memory game (like matching pairs between like 10 cards).

The game is good but they have to be realistic and either hire more people or rethink what they are planning.
 
D

Deleted member 436513

Guest
Guest
Also some quick maffs for those of you wondering:

You don't have permission to view the spoiler content. Log in or register now.

Assuming their stated goal of $6000 per month is enough to employ both of the people working on the project full time, i.e. that is their salary, they have $268,091 in reserve to do with as they please (before taxes). I don't mean to break out Marx, but god damn.
 
Aug 11, 2017
26
28
81
I don't even really see the point of deluding themselves people will care about CCG in a porn VN game.
Like, the game doesn't even really have good enough art to warrant such attention to it(those body proportions are not great, and the profile faces are completely wrong), why did they think a CCG would be important enough of a feature in this project?
They should've focused on integrating main plot with the game, making better minigames about that, and maybe improving at art, which none of what they've done.
 

FlipFish

Active Member
Oct 23, 2017
568
2,361
382
Limezero you're the real MVP here.

I really hope Mity tries to change his approach instead of trying to push on with his current management setup. I also see that mostly everyone agrees with the CCG thing. It's not that people inherently hate the idea, I for one loved Gwent in the Witcher 3, but one there's really no reason to throw it in a trainer game of all things and two it's too ambitious for this game and has already been causing plenty problems.
 

Balrog

Active Member
Jan 10, 2018
665
1,087
243
Also some quick maffs for those of you wondering:

You don't have permission to view the spoiler content. Log in or register now.

Assuming their stated goal of $6000 per month is enough to employ both of the people working on the project full time, i.e. that is their salary, they have $268,091 in reserve to do with as they please (before taxes). I don't mean to break out Marx, but god damn.
And they couldn't take like 3000 bucks out of that to hire a back up coder during the main coder's bulshit 3 month long vacation ?

That's YandereDev level of mismanagement TBH.
 
D

Deleted member 436513

Guest
Guest
...and here's a compilation of all the relevant Patreon updates since the last build of the game, for convenience's sake. In case somebody wants an overview and doesn't want to pledge or go digging through F95 posts.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
 

lykos88

Newbie
Jan 15, 2018
94
53
135
Anyway i dont really want to say this if they are keeping taps you never know but why arent (P.a.t.r.e.o.n) bull the plug on this projekt.
It must been to amaunt of money the are getting for it them selfs.
No complains at all its hard find good content to fill my needs even when there are some management issues.
I dont believe they are making just some shit up to hide lazines etc.

Lastly i wont stop promoting wakfu for the next 1 even i think it is too early for that.
 

Xto

Newbie
Dec 1, 2017
17
15
95
Guys the "coder" created the project in the first place and he's also the primary writer, or at least contributes a similar amount as the artist. As mention previously, the artist goes by . MITY could even be the name the coder went by. You can't expect the artist to "fire" him (they're not even running a business, Patreon is a donation service) and just because he goes by "coder" doesn't mean it's necessarily the code he's struggling with.

Pretty much every writer experiences at some point. From Wikipedia, "blocks may be produced by adverse circumstances in a writer's life or career: physical illness, depression, the end of a relationship, financial pressures, or a sense of failure.", "It has been suggested that writer's block is more than just a mentality. Under stress, a human brain will 'shift control from the cerebral cortex to the limbic system'.", "The limbic system is associated with the instinctual processes, such as 'fight or flight' response".

He was physically injured, he's having to care for his sick mother, probably felt guilty about breaking the monthly schedule a number of times and wasting time on a minigame, now likely worrying about his future financial situation. I doubt it's an issue of "not feeling the pressure". Goodwill only goes so far.

Also, Limezero's post is a pretty severe misrepresentation of the code written for book 4.
  • "Number of files" is a totally meaningless metric for code size or complexity. They could put the entire game (372,111 lines) in one file if they wanted, or have 372,111 files consisting of one line.
  • The code definitely does not exist in just those two files. Sure, they might have a higher proportion of code to text compared to others, but all of the 41 .rpy files that make up book 4 (spanning 28,862 lines) contain logic or data, and possibly dialogue. A lot of it could be considered "boilerplate" (compositing images for example) but all of it had to be written.
  • The images shown are far from an accurate depiction of the extent of the complexity of the code. The DSL that RenPy supplies you with funnels inexperienced devs into a control flow nightmare. jump (goto) and global variables everywhere. Works alright for a classic VN with essentially no gameplay, but the moment you need a minigame, inventory, complex series of interacting choices... There's a reason practically every RenPy game update ships riddled with bugs (Summertime Saga had to progressively rewrite their codebase to use finite state machines).
Here's a better example of the kind of mess that will have someone wishing they weren't "the coder":
Python:
label korra_training:
    if amon_mask:
        if air_scroll ==2:
            if airbending ==7:
                show bfab bfab04 with dissolve
                kn "ready for more training?"
                show under_development_1
                show ctc
                pause
                hide ctc
                hide under_development_1
                jump b4_airtemple_map1
            if airbending ==6:
                if korra_spank_bj >=6:
                    if korra_foot_quest ==1:
                        show bfab bfab24 with dissolve
                        kn "ready for more training?"
                        kn "i... i promise i'll repay you."
                        if spinner_level >=10:
                            $ korra_foot_quest = 2
                            jump air_train3
                        else:
                            tn "(i need to level up to {b}10{/b} on the spinners before i can train more with korra.)"
                            jump bk4_training_menu
                    if korra_foot_quest ==0:
                        show bfab bfab24 with dissolve
                        kn "hey, tenzin...?"
                        tn "yeah?"
                        kn "i... i really need to get stronger."
                        kn "if you... i mean..."
                        kn "if you'll train with me some more..."
                        kn "i'll... i'll give you something."
                        tn "oh? what?"
                        kn "i... i don't know yet."
                        kn "but i promise it will be worth it!"
                        tn "...."
                        tn "okay."
                        $ korra_foot_quest = 1
                        if spinner_level >=10:
                            $ korra_foot_quest = 2
                            jump air_train3
                        else:
                            tn "(i need to level up to {b}10{/b} on the spinners before i can train more with korra.)"
                            jump bk4_training_menu
                else:
                    show bfab bfab04 with dissolve
                    kn "ready for more training?"
                    tn "soon, but not yet."
                    jump b4_airtemple_map1
            if airbending ==5:
                if k_protein <3:
                    tn "korra's waiting in her room for her protein shake."
                    jump b4_airtemple_map1
                else:
                    show bfab bfab04 with dissolve
                    kn "alright, what's next?"
                    tn "next, you're going to give me asami's number."
                    show bfab bfab24 with dissolve
                    kn "are you still on that?"
                    tn "yeah, and i'm gonna be... until i get her number."
                    tn "i'm tired of dialing random numbers."
                    tn "it's not an efficient system, and one man is very mad at me."
                    kn "....."
                    tn "....."
                    ta "give me that number!"
                    kn "okay, okay..."
                    kn "after today."
                    tn "fine."
                    hide black
                    show black with dissolve
                    "you practice the latest technique with korra, gaining efficiency in it."
                    hide black
                    show bfab bfab09
                    with dissolve
                    kn "yeah! love a good sweat!"
                    show bfab bfab04 with dissolve
                    kn "alright, tenzin... here's asami's number."
                    play sound "audio/win2.mp3"
                    "you got asami sato's phone number!"
                    tn "finally."
                    hide bfab with dissolve
                    tn "i should go somewhere private to make this phone call..."
                    tn "the tower, maybe?"
                    $ airbending = 6
                    jump b4_airtemple_map1
        if air_scroll ==1:
            if airbending ==4:
                if lin_buttstuff and korra_scroll2==0:
                    show bfab bfab04 with dissolve
                    tn "hey... so..."
                    tn "i need asami's phone number."
                    tn "phones are a thing by now, right?"
                    show bfab bfab24 with dissolve
                    kn "why..."
                    tn "it doesn't concern you."
                    kn "uh... i don't think she wants me to give it out..."
                    tn "come on. buddy. korra. pal. old friend. sloot."
                    kn "...what?"
                    tn "ignore that last one."
                    tn "help me out."
                    kn "mm... okay."
                    tn "great!"
                    show bfab bfab03 with dissolve
                    kn "in exchange for more training!"
                    tn "what?"
                    tn "but... i don't wanna."
                    show bfab bfab04 with dissolve
                    kn "come on... you haven't taught me anything real since that one scroll."
                    kn "let's do this!"
                    tx "uuughgh...."
                    tn "fine."
                    show bfab bfab03 with dissolve
                    kn "yay!"
                    tn "but first i need to... do something."
                    show bfab bfab24 with dissolve
                    kn "okay..."
                    hide bfab with dissolve
                    tn "...shit."
                    tn "where the fuck do i find a new airbending scroll?"
                    $ korra_scroll2 = 1
                    jump b4_airtemple_map1
                if korra_scroll2 ==1:
                    show bfab bfab04 with dissolve
                    kn "hey, ready to train me?"
                    tn "(i still don't have an airbending scroll...)"
                    tn "uh... almost."
                    show bfab bfab24 with dissolve
                    kn "oh... okay."
                    jump b4_airtemple_map1
                if korra_scroll2 ==2:
                    if spinner_level >=8:
                        show bfab bfab04 with dissolve
                        kn "ready?"
                        tn "actually, i am."
                        tn "read this."
                        show bfab bfab24 with dissolve
                        "you hand korra the scroll."
                        kn "this again..."
                        kn "fine, i guess i'll {i}read{/i}."
                        kn "like a dork."
                        hide black
                        show black with dissolve
                        "korra begins practicing the moves written on the scroll."
                        "you mimic her technique."
                        hide black
                        show bfab bfab09
                        with dissolve
                        kn "what a workout!"
                        show bfab bfab04 with dissolve
                        kn "not bad, tenzin."
                        tn "so... can i have asami's number now?"
                        show bfab bfab24 with dissolve
                        kn "i don't know..."
                        tn "oh, come on!"
                        kn "i'll... think about it, okay?"
                        kn "that's the best I can offer right now."
                        tn "...damn it."
                        kn "sorry, tenzin."
                        kn "now i need to go have my boring protein shake."
                        show bfab bfab05 with dissolve
                        kn "pema makes the worst shakes."
                        tn "...why don't you just make your own?"
                        show bfab bfab24 with dissolve
                        kn "pfft, yeah right."
                        kn "why would that be my responsibility?"
                        tn "....."
                        tn "sure."
                        kn "alright, terrible protein shake, here i come."
                        hide bfab with dissolve
                        tn "that... gives me an idea."
                        tn "i'll ask pema to help me with a... special one."
                        $ k_protein = 1
                        $ air_scroll = 2
                        $ airbending = 5
                        $ b4_daytime = False
                        jump b4_airtemple_map1
                    else:

                        show bfab bfab04 with dissolve
                        kn "hey, ready to train me?"
                        tn "(i need to be up to level 8 on the spinners to handle this move.)"
                        tn "not yet."
                        jump b4_airtemple_map1
                else:

                    tn "(still more to do elsewhere first.)"
                    jump b4_airtemple_map1
            if airbending ==3:
                if spinner_level < 6:
                    tn "i need to get to level 7 in the spinners to handle the next training session."
                    jump b4_airtemple_map1
                if spinner_level >=7:
                    if korra_rubbed >=3:
                        $ airbending = 4
                        jump air_train2
                    else:
                        tn "(my body is ready... but korra's isn't.)"
                        tn "(i need to lower her resistance, and maybe progress some more with her before the next training session.)"
                        jump b4_airtemple_map1

            if not air_scroll1_thought:
                tn "(alright, looking at this airbending scroll, i don't think i need to do anything special this time, actually.)"
                tn "(this one actually seems really straight forward.)"
                $ air_scroll1_thought = True
                show bfab bfab24 with dissolve
                kn "so...?"
                kn "you ready?"
            if spinner_level <5:
                tn "(crap, i need to spend more time on the spinners before i can train with this airbending move.)"
                tn "uh... not yet."
                kn "okay..."
                jump b4_airtemple_map1
            else:
                $ b4_daytime = False
                jump air_train1

    if not amon_mask:

        show bfab bfab04
        with dissolve
        kn "ready to train?"
        tn "(i still don't know any airbending techniques!)"
        tn "uh... not yet."
        kn "okay, i guess..."
        jump b4_airtemple_map1
Control flow like that is everywhere, especially "bk4_s_locations.rpy".

"3in1.rpy" (coin minigame) is just...
Python:
image kg = "bk4/backgrounds/park_day_1.jpg"
init python:
    import time
    style.mcnn=Style(style.default)
    style.mcnn.set_parent(style.button)
    style.mcnn.color="#beddff"
    style.mcnn.size=70
    style.mcnn.outlines=[(2,"#6e6e6e",0,0)]
    def krib():
        global cl1,cl2,cl3,cl4,cl5,cl6,cl7,kricol,krix,krix0,pointka,ktmr,clp1,clp2,clp3,clp4,clp5,clp6,clp7
        for i in range(0,9):
            if cl1[i]>0:
                clzz=1
                if i<7:
                    if cl1[i]==cl1[i+1]==cl1[i+2]:
                        pointka+=(cl1[i]+cl1[i+1]+cl1[i+2])*2
                        if i<6 and cl1[i]==cl1[i+3]:
                            if i<5 and cl1[i]==cl1[i+4]:
                                pointka+=cl1[i+4]*4
                                ktmr+=4
                                cl1[i+4]=0
                            pointka+=cl1[i+3]*3
                            ktmr+=2
                            cl1[i+3]=0
                        clzz,cl1[i+1],cl1[i+2]=0,0,0
                if cl1[i]==cl2[i]==cl3[i]:
                    pointka+=(cl1[i]+cl2[i]+cl3[i])*2
                    if cl1[i]==cl4[i]:
                        if cl1[i]==cl5[i]:
                            pointka+=cl5[i]*4
                            ktmr+=4
                            cl5[i]=0
                        pointka+=cl4[i]*3
                        ktmr+=2
                        cl4[i]=0
                    clzz,cl2[i],cl3[i]=0,0,0
                if clzz==0:
                    cl1[i]=0
        renpy.pause(0.05)
        for i in range(0,9):
            if cl2[i]>0:
                clzz=1
                if i<7:
                    if cl2[i]==cl2[i+1]==cl2[i+2]:
                        pointka+=(cl2[i]+cl2[i+1]+cl2[i+2])*2
                        if i<6 and cl2[i]==cl2[i+3]:
                            if i<5 and cl2[i]==cl2[i+4]:
                                pointka+=cl2[i+4]*4
                                ktmr+=4
                                cl2[i+4]=0
                            pointka+=cl2[i+3]*3
                            ktmr+=2
                            cl2[i+3]=0
                        clzz,cl2[i+1],cl2[i+2]=0,0,0
                if cl2[i]==cl3[i]==cl4[i]:
                    pointka+=(cl2[i]+cl3[i]+cl4[i])*2
                    if cl2[i]==cl5[i]:
                        if cl2[i]==cl6[i]:
                            pointka+=cl6[i]*4
                            ktmr+=4
                            cl6[i]=0
                        pointka+=cl5[i]*3
                        ktmr+=2
                        cl5[i]=0
                    clzz,cl3[i],cl4[i]=0,0,0
                if clzz==0:
                    cl2[i]=0
        renpy.pause(0.05)
        for i in range(0,9):
            if cl3[i]>0:
                clzz=1
                if i<7:
                    if cl3[i]==cl3[i+1]==cl3[i+2]:
                        pointka=(cl3[i]+cl3[i+1]+cl3[i+2])*2
                        if i<6 and cl3[i]==cl3[i+3]:
                            if i<5 and cl3[i]==cl3[i+4]:
                                pointka+=cl3[i+4]*4
                                ktmr+=4
                                cl3[i+4]=0
                            pointka+=cl3[i+3]*3
                            ktmr+=2
                            cl3[i+3]=0
                        clzz,cl3[i+1],cl3[i+2]=0,0,0
                if cl3[i]==cl4[i]==cl5[i]:
                    pointka+=(cl3[i]+cl4[i]+cl5[i])*2
                    if cl3[i]==cl6[i]:
                        pointka+=cl6[i]*3
                        ktmr+=2
                        cl6[i]=0
                    clzz,cl4[i],cl5[i]=0,0,0
                if clzz==0:
                    cl3[i]=0
        renpy.pause(0.05)
        for i in range(0,9):
            if cl4[i]>0:
                clzz=1
                if i<7:
                    if cl4[i]==cl4[i+1]==cl4[i+2]:
                        pointka+=(cl4[i]+cl4[i+1]+cl4[i+2])*2
                        if i<6 and cl4[i]==cl4[i+3]:
                            if i<5 and cl4[i]==cl4[i+4]:
                                pointka+=cl4[i+4]*4
                                ktmr+=4
                                cl4[i+4]=0
                            pointka+=cl4[i+3]*3
                            ktmr+=2
                            cl4[i+3]=0
                        clzz,cl4[i+1],cl4[i+2]=0,0,0
                if cl4[i]==cl5[i]==cl6[i]:
                    pointka+=(cl4[i]+cl5[i]+cl6[i])*2
                    clzz,cl5[i],cl6[i]=0,0,0
                if clzz==0:
                    cl4[i]=0
        renpy.pause(0.05)
        for i in range(0,7):
            if cl5[i]>0:
                if cl5[i]==cl5[i+1]==cl5[i+2]:
                    pointka+=(cl5[i]+cl5[i+1]+cl5[i+2])*2
                    if i<6 and cl5[i]==cl5[i+3]:
                        if i<5 and cl5[i]==cl5[i+4]:
                            pointka+=cl5[i+4]*4
                            ktmr+=4
                            cl5[i+4]=0
                        pointka+=cl5[i+3]*3
                        ktmr+=2
                        cl5[i+3]=0
                    cl5[i],cl5[i+1],cl5[i+2]=0,0,0
        renpy.pause(0.05)
        for i in range(0,7):
            if cl6[i]>0:
                if cl6[i]==cl6[i+1]==cl6[i+2]:
                    pointka+=(cl6[i]+cl6[i+1]+cl6[i+2])*2
                    if i<6 and cl6[i]==cl6[i+3]:
                        if i<5 and cl6[i]==cl6[i+4]:
                            pointka+=cl6[i+4]*4
                            ktmr+=4
                            cl6[i+4]=0
                        pointka+=cl6[i+3]*3
                        ktmr+=2
                        cl6[i+3]=0
                    cl6[i],cl6[i+1],cl6[i+2]=0,0,0
        for i in range(0,9):
            if cl6[i]==0:
                clp5[i]-=32
                if cl5[i]>0:
                    cl6[i]=cl5[i]
                    cl5[i]=0
                elif cl4[i]>0:
                    cl6[i]=cl4[i]
                    cl4[i]=0
                elif cl3[i]>0:
                    cl6[i]=cl3[i]
                    cl3[i]=0
                elif cl2[i]>0:
                    cl6[i]=cl2[i]
                    cl2[i]=0
                elif cl1[i]>0:
                    cl6[i]=cl1[i]
                    cl1[i]=0
                else:
                    cl6[i]=renpy.random.randint(1,6)
                for q in range(4):
                    clp5[i]+=8
                    renpy.pause(.0000001)
                ktmr+=0.1
        for i in range(0,9):
            if cl5[i]==0:
                clp5[i]-=32
                if cl4[i]>0:
                    cl5[i]=cl4[i]
                    cl4[i]=0
                elif cl3[i]>0:
                    cl5[i]=cl3[i]
                    cl3[i]=0
                elif cl2[i]>0:
                    cl5[i]=cl2[i]
                    cl2[i]=0
                elif cl1[i]>0:
                    cl5[i]=cl1[i]
                    cl1[i]=0
                else:
                    cl5[i]=renpy.random.randint(1,6)
                for q in range(4):
                    clp5[i]+=8
                    renpy.pause(.0000001)
                ktmr+=0.1
        for i in range(0,9):
            if cl4[i]==0:
                clp4[i]-=32
                if cl3[i]>0:
                    cl4[i]=cl3[i]
                    cl3[i]=0
                elif cl2[i]>0:
                    cl4[i]=cl2[i]
                    cl2[i]=0
                elif cl1[i]>0:
                    cl4[i]=cl1[i]
                    cl1[i]=0
                else:
                    cl4[i]=renpy.random.randint(1,6)
                for q in range(4):
                    clp4[i]+=8
                    renpy.pause(.0000001)
                ktmr+=0.1
        for i in range(0,9):
            if cl3[i]==0:
                clp3[i]-=32
                if cl2[i]>0:
                    cl3[i]=cl2[i]
                    cl2[i]=0
                elif cl1[i]>0:
                    cl3[i]=cl1[i]
                    cl1[i]=0
                else:
                    cl3[i]=renpy.random.randint(1,6)
                for q in range(4):
                    clp3[i]+=8
                    renpy.pause(.0000001)
                ktmr+=0.1
        for i in range(0,9):
            if cl2[i]==0:
                clp2[i]-=32
                if cl1[i]>0:
                    cl2[i]=cl1[i]
                    cl1[i]=0
                else:
                    cl2[i]=renpy.random.randint(1,6)
                for q in range(4):
                    clp2[i]+=8
                    renpy.pause(.0000001)
                ktmr+=0.1
        for i in range(0,9):
            if cl1[i]==0:
                clp1[i]-=32
                cl1[i]=renpy.random.randint(1,6)
                for w in range(4):
                    clp1[i]+=8
                    renpy.pause(.0000001)
                ktmr+=0.1
        return
screen krix:
    text "[pointk]" style "mcnn"
    text str(int(ktmr)) style "mcnn" xalign .99
    timer 1 repeat True action If(ktmr>0,true=SetVariable('ktmr',ktmr-1),false=Return())
    for z in range(1,7):
        for i in range(0,9):
            imagebutton idle ("bk4_xtra/3in1/k"+str(globals()["cl"+str(z)][i])+".png") xpos (i*80+260) ypos (z*80+20) action [SetVariable('krix',i),SetVariable('kriy',z),ui.callsinnewcontext("krich")]

    textbutton "I give up!" style "mcnn" xalign 0.5 yalign 0.9 action [SetVariable('ktmr',1)]

    if temp_int < 2:

        textbutton "Try again" style "mcnn" xalign 0.8 yalign 0.9 action [SetVariable('pointka',0),

            SetVariable('temp_int', temp_int+1),  Jump("krix")]


screen krixx:
    text "[pointk]" style "mcnn"
    text str(int(ktmr)) style "mcnn" xalign .99
    timer 1 repeat True action If(ktmr>0,true=SetVariable('ktmr',ktmr-1),false=Return())
    for z in range(1,7):
        for i in range(0,9):
            add ("bk4_xtra/3in1/k"+str(globals()["cl"+str(z)][i])+".png") xpos (i*80+260) ypos (z*80+20+globals()["clp"+str(z)][i])
label krich:
    show screen krixx
    if krix>=0:
        if krix in(krix0+1,krix0-1)and kriy==kriy0:
            pass
        elif kriy in(kriy0+1,kriy0-1)and krix==krix0:
            pass
        else:
            jump krich3
        if krix0>=0:
            $ krixxx=globals()["cl"+str(kriy)][krix]
            $ globals()["cl"+str(kriy)][krix]=globals()["cl"+str(kriy0)][krix0]
            $ globals()["cl"+str(kriy0)][krix0]=krixxx
            label krich2:
                $ krib()
                if pointka>0:
                    $ pointloop+=1
                    $ pointk+=pointka
                    $ pointka=0
                    jump krich2
                if pointloop==0:
                    $ krixxx=globals()["cl"+str(kriy0)][krix0]
                    $ globals()["cl"+str(kriy0)][krix0]=globals()["cl"+str(kriy)][krix]
                    $ globals()["cl"+str(kriy)][krix]=krixxx
                $ pointloop=0
                $ krix=-1
                $ krix0=-1
        else:
            label krich3:
                $ krix0=krix
                $ kriy0=kriy
    return
label krix:
    scene kg:
        ypos 0
    python:
        cl0,cl1,cl2,cl3,cl4,cl5,cl6,cl7,krix,kriy,kris,krin,kriw,krie,kricol,krix,krix0,kriy,kriy0,pointk,pointloop,ktmr,pointka=[],[],[],[],[],[],[],[],0,0,0,0,0,0,0,-1,-1,-1,-1,0,0,60,0
        for z in range(1,7):
            for i in range(0,9):
                globals()["cl"+str(z)].append(renpy.random.randint(1,6))
        clp0,clp1,clp2,clp3,clp4,clp5,clp6,clp7=[],[],[],[],[],[],[],[]
        for z in range(1,7):
            for i in range(0,9):
                globals()["clp"+str(z)].append(0)
    call screen krix
    return
Can't really blame RenPy for that one though.
 
Last edited:
  • Like
Reactions: Gekthegecko

H*A

Newbie
May 24, 2018
25
26
216
I mean, you don't have to look very hard to see the missteps that all people fresh to coding make. As you continue to explore, you'll often look back on prior work and think "What the fuck?"

There's a lot of things you learn along the way - better approaches, programming constructs, how something could be better achieved through use of X and/or following design pattern Y.

I don't think Mity, or anyone reads these threads, but hey.
If you were going to revisit old code or change approach --
Easy things to fix (not exclusive to Ren'Py, just OOP):
  • Use of classes (instead of global variables)
  • Helper functions (avoiding code repetition)
  • Use of appropriate design patterns
  • Avoiding bad design patterns
Just reading through an article or two on software design patterns would honestly be a great help to anyone stepping into this space - once they're somewhat comfortable with the basics.

It can be a fun and productive learning experience to attempt to solve problems without referencing existing solutions, but there's a lot of mistakes to be made when you're fresh to programming (and even when you're not). It also tends to be a bit of a crapshoot, if you're working to a deadline.

I think an issue a lot of people have with their personal conception of programming is that you just know how to approach a problem going in. The truth is that sometimes you don't have a great idea of how you're going to achieve something, but you do know what needs to happen.

Breaking things down into component bits and building it up, piece by piece, is both how you can make a tough problem achievable, and how you can work towards an easily maintainable codebase.

In any case, did not think I'd be writing up a post about the field I work in - not on this forum, at least. Bottom line for the responders here - I'd say the dude probably wants to build a marketable skill with programming. You know, something that you could put on a CV.
2016-20XX - "Worked on popular Western Erotica Game Cartoon Parody".
^ That one's a bit niche.
 
Last edited:
4.50 star(s) 305 Votes