1,753,163 events recorded by gharchive.org of which 1,753,163 were push events containing 2,708,321 commit messages that amount to 213,399,107 characters filtered with words.py@e23d022007... to these 24 messages:
Reorganize the project so it's a little more bearable.
src/libs split, objects in obj/
Stuff like Anvil and NBT have been moved to libs/ because they're not really core to the server and they're reusable (kinda, stuff like NBT depends on other libraries in libs/ and idk how to handle that in a clean way)
json: fix build
linked_list -> list, node -> list
linked_list was a long, stupid, annoying name to type out "node" made no sense wherever it was and list_node is kind of annoying to type, so "list" it is (for now)
generate protocol code as part of the main build
autogenerate prerequisites
I wasn't even doing it correctly before (using object files as prereqs instead of using the header files), so on top of this actually being correct, it makes the build process painless, which it should have been from the start but oh well :)
add build info to the README
Also make it clear that this project is kinda useless right now
obj -> build, put the binary in build/bin, move make_protocol_header.sh to scripts/
remove old submodules
zlib was missing from deps
update packet-auto-gen's tests
fix nbtv build
fix cv build
According to all known laws of aviation, there is no way a bee should be able to fly. Its wings are too small to get its fat little body off the ground. The bee, of course, flies anyway because bees don't care what humans think is impossible. Yellow, black. Yellow, black. Yellow, black. Yellow, black. Ooh, black and yellow! Let's shake it up a little. Barry! Breakfast is ready! Ooming! Hang on a second. Hello? - Barry? - Adam? - Oan you believe this is happening? - I can't. I'll pick you up. Looking sharp. Use the stairs. Your father paid good money for those. Sorry. I'm excited. Here's the graduate. We're very proud of you, son. A perfect report card, all B's. Very proud. Ma! I got a thing going here. - You got lint on your fuzz. - Ow! That's me! - Wave to us! We'll be in row 118,000. - Bye! Barry, I told you, stop flying in the house! - Hey, Adam. - Hey, Barry. - Is that fuzz gel? - A little.
fix #13 - always have Content-Length header on POST/PUT
even when there is no content - this seems to be enforced by something in Google App Engine as the original IETF RFCs1 state that the Content-Length SHOULD be included (i.e. not MUST be included) and GoCardless have recently moved to Google Cloud2 and Google have tightened up their requirements so now POST/PUT requests with no Content-Length are receiving a "Error 411 (Length Required)!!1" error
arguably this is a bug in whatever Google are doing - lack of a Content-Length could be taken as zero content length (or, i suppose, an unknown length), as per the original RFCs, and it probably shouldn't break a shit load of client code that was working before
this could possibly be pushed down as a patch into LWP, but there is the possibility that doing that will cause other problems because 🤷 software
bump VERSION and Changes for CPAN release
1 https://tools.ietf.org/html/rfc7230#section-3.3.2
2 "That's correct, we did move to Google Cloud earlier this year. I'm sorry that this caused an issue with your integration, but I'm glad that you managed to resolve the problem.
Apologies for the lack of a heads up, unfortunately this is
something that was overlooked as it seems most clients send the header through by default.
– GoCardless Support"
Actually, Tamash is still not done. Also, swap Lobon and Tamash's alignments.
Lobon of the spear, god of peace, is neutral, and Tamash, god of dreams and magic, is chaotic.
I think every god might've switched alignments now -_-
🍓 Everything works (on windows lmao), minus DLL copying, and UWP
oh yeah and some stupid ImGui shit
뻑업, 퍼큐, 퍼킹 추가
- fuck up, fuck you, fucking의 한국 발음.
Remove ObjCThemis.xcodeproj (#704)
- Remove ObjCThemis.xcodeproj
The idea behind building "objcthemis.framework" has been to unify import syntax between Carthage and CocoaPods. Unfortunately, it turned out to be a mistake. "objcthemis.framework" does not work without "themis.framework" being present alongside it because of how module resolution works. Despite "objcthemis.framework" providing the same "themis" module as "themis.framework", the compiler will look for a framework named "themis.framework" when resolving "import themis".
Moreover, the original issue that "objcthemis.framework" has been called to rectify can be resolved more elegantly by importing the module:
@import themis;
which work well with "themis.framework" in both Carthage and CocoaPods.
Since "objcthemis.framework" does not bring any value, remove it. Move all new things added to ObjCThemis.xcodeproj into Themis.xcodeproj (such as testing Swift 4 vs 5). Remove the import warning. Now Carthage will build only one framework: "themis.framework" from Themis.xcodeproj.
I am sorry for the trouble and confusion of this fizzled migration.
- Change "product name" to "themis"
Make sure that Xcode targets produce "themis.framework", not "objcthemis.framework".
- Recreate Xcode schemes
It seems that some components stick the schemes after renaming. Recreate them to make sure that we're building "themis.framework" and there are no traces of the old Xcode project.
- Bring back proxy umbrella header "themis.h"
Since the framework is named "themis.framework", its umbrella header is expected to be called "themis.h". The actual umbrella header for ObjCThemis is "objcthemis.h" which we simply include.
- Use alternative imports in unit tests
One of the reasons for "objcthemis.framework" existence was to run ObjCThemis unit tests from Xcode. Initially, "themis.framework" has prevented that due to import issues, and "objcthemis.framework" has allowed #import <objcthemis/objcthemis.h> to work. Now that latter is gone, the unit-tests are broken again.
However! It seems that using modular imports works for Xcode and Carthage (which uses Xcode project). The bad news here is that it does not work for CocoaPods, which still works only with the old form because CocoaPods does some special wicked magic with headers, putting them into the "objcthemis" directory.
I do not have much time and willingness to deal with this stupidity anymore right now, so here's a compromise: Carthage uses its form, CocoaPods use their form, and you get this TODO to maybe get rid of this wart some time later.
(cherry picked from commit 5522acee08f7037e5d7e9caf3616e354eaaeff8e)
Add missing OpenSSL includes (#684)
- Add missing OpenSSL includes
Add those files use BIGNUM API of OpenSSL but do not include relevant headers. Due to miraculous coincidence, this seems to somehow work for the OpenSSL versions we use, but only because either existing headers include this "bn.h" transitively, or because the compiler generates code that kinda works without function prototype being available.
However, curiously enough, this breaks when building Themis for macOS with recent OpenSSL 1.1.1g but not with OpenSSL 1.0.2, or OpenSSL 1.1.1g on Linux. The issue manifests itself as missing "_BN_num_bytes" symbol. Indeed, there is no such symbol because this function is implemented as a macro via BN_num_bits(). However, because of the missing header, the compiler -- being C compiler -- decides that this must be a function "int BN_num_bytes()" and compiles it like a function call.
Add the missing includes to define the necessary macros and prototype, resolving the issue with OpenSSL 1.1.1g. It must have stopped including <openssl/bn.h> transitively, revealing this issue.
This is why you should always include and import stuff you use directly, not rely on transitive imports.
P.S. A mystery for dessert: BoringSSL backend includes <openssl/bn.h>.
- Treat warnings as errors in Xcode
In order to prevent more silly issues in the future, tell Xcode to tell the compiler to treat all warnings as errors. That way the build should fail earlier, and the developers will be less likely to ignore warnings.
- Fix implicit cast warnings
Now that we treat warnings as errors, let's fix them.
themis_auth_sym_kdf_context() accepts message length as "uint32_t" while it's callers use "size_t" to avoid early casts and temporary values. However, the message length has been checked earlier and will fit into "uint32_t", we can safely perform explicit casts here.
- Suppress documentation warnings (temporarily)
Some OpenSSL headers packaged with Marcin's OpenSSL that we use have borked documentation comments. This has been pointed out several times 1, but Marcin concluded this needs to be fixed upstream.
Meanwhile, having those broken headers breaks the build if the warnings are treated as errors. Since we can't upgrade Marcin's OpenSSL due to other reasons (bitcode support), we have no hope to resolve this issue.
For the time being, suppress the warnings about documentation comments.
- Fix more implicit cast warnings
There are more warnings actual only for 32-bit platforms. Some iOS targets are 32-bit, we should avoid warnings there as well.
The themis_scell_auth_token_key_size() and themis_scell_auth_token_passphrase_size() functions compute the size of the autentication token from the header. They return uint64_t values to avoid overflows when working with corrupted input data on the decryption code path. However, they are also used on the encryption path where corruption is not possible. Normally, authentication tokens are small, they most definitely fit into uint32_t, and this is the type used in Secure Cell data format internally.
It is not safe to assign arbitrary uint64_t to size_t on 32-bit platforms. However, in this case we are sure that auth tokenn length fits into uint32_t, which can be safely assigned to size_t.
Note that we cast into uint32_t, not size_t. This is to still cause a warning on platforms with 16-bit size_t (not likely, but cleaner).
(cherry picked from commit 1ca96de89b66391114f615658fbc4819aa248b9b)
Nerf the Soul Collector
I think that the soul collector has a very good place in the current meta of the game, and it has honestly always been great. The problem (in my opinion) is that it is capable of decreasing the value of someones networth based on the fact that it stops all current regeneration, and on top of this it also slows for a huge amount.
This nerf would target the healing reduction primarily, but also slightly touch the slow amount to make it feel a bit more balanced without impacting the game too much.
Specifically for the healing reduction, I've decided to decrease it to 75%, because if you're playing as a tank hero it's capable of turning your high networth spent on tanky regen items into basically nothing. On top of this, it's also a very powerful nuke item, and when cast on enemies in their fountain you prevent the fountain from actually protecting them, and I still feel like that should never be the case.
Decreasing it from 100% to 75% is justified, in my opinion, because the 25% will still let you keep some of that regen, while also making it possible to kill you — it would just take a second or two longer.
Finally made lua classes work holy shit
This took way longer than it should have, mainly because my desktop would stop working if I fucked anyting up.
gdb/python: handle non utf-8 characters when source highlighting
This commit adds support for source files that contain non utf-8 characters when performing source styling using the Python pygments package. This does not change the behaviour of GDB when the GNU Source Highlight library is used.
For the following problem description, assume that either GDB is built without GNU Source Highlight support, of that this has been disabled using 'maintenance set gnu-source-highlight enabled off'.
The initial problem reported was that a source file containing non utf-8 characters would cause GDB to print a Python exception, and then display the source without styling, e.g.:
Python Exception <class 'UnicodeDecodeError'>: 'utf-8' codec can't decode byte 0xc0 in position 142: invalid start byte /* Source code here, without styling... */
Further, as the user steps through different source files, each time the problematic source file was evicted from the source cache, and then later reloaded, the exception would be printed again.
Finally, this problem is only present when using Python 3, this issue is not present for Python 2.
What makes this especially frustrating is that GDB can clearly print the source file contents, they're right there... If we disable styling completely, or make use of the GNU Source Highlight library, then everything is fine. So why is there an error when we try to apply styling using Python?
The problem is the use of PyString_FromString (which is an alias for PyUnicode_FromString in Python 3), this function converts a C string into a either a Unicode object (Py3) or a str object (Py2). For Python 2 there is no unicode encoding performed during this function call, but for Python 3 the input is assumed to be a uft-8 encoding string for the purpose of the conversion. And here of course, is the problem, if the source file contains non utf-8 characters, then it should not be treated as utf-8, but that's what we do, and that's why we get an error.
My first thought when looking at this was to spot when the PyString_FromString call failed with a UnicodeDecodeError and silently ignore the error. This would mean that GDB would print the source without styling, but would also avoid the annoying exception message.
However, I also make use of pygmentize
, a command line wrapper
around the Python pygments module, which I use to apply syntax
highlighting in the output of less
. And this command line wrapper
is quite happy to syntax highlight my source file that contains non
utf-8 characters, so it feels like the problem should be solvable.
It turns out that inside the pygments module there is already support
for guessing the encoding of the incoming file content, if the
incoming content is not already a Unicode string. This is what
happens for Python 2 where the incoming content is of str
type.
We could try and make GDB smarter when it comes to converting C strings into Python Unicode objects; this would probably require us to just try a couple of different encoding schemes rather than just giving up after utf-8.
However, I figure, why bother? The pygments module already does this for us, and the colorize API is not part of the documented external API of GDB. So, why not just change the colorize API, instead of the content being a Unicode string (for Python 3), lets just make the content be a bytes object. The pygments module can then take responsibility for guessing the encoding.
So, currently, the colorize API receives a unicode object, and returns a unicode object. I propose that the colorize API receive a bytes object, and return a bytes object.
remove unused fields(fuck you discord), make a hack around reaction count(fuck you discord), fix emoji convert function
Add support for banning guilds (fuck you in particular)
sched/core: Fix ttwu() race
Paul reported rcutorture occasionally hitting a NULL deref:
sched_ttwu_pending() ttwu_do_wakeup() check_preempt_curr() := check_preempt_wakeup() find_matching_se() is_same_group() if (se->cfs_rq == pse->cfs_rq) <-- BOOM
Debugging showed that this only appears to happen when we take the new code-path from commit:
2ebb17717550 ("sched/core: Offload wakee task activation if it the wakee is descheduling")
and only when @cpu == smp_processor_id(). Something which should not be possible, because p->on_cpu can only be true for remote tasks. Similarly, without the new code-path from commit:
c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")
this would've unconditionally hit:
smp_cond_load_acquire(&p->on_cpu, !VAL);
and if: 'cpu == smp_processor_id() && p->on_cpu' is possible, this would result in an instant live-lock (with IRQs disabled), something that hasn't been reported.
The NULL deref can be explained however if the task_cpu(p) load at the beginning of try_to_wake_up() returns an old value, and this old value happens to be smp_processor_id(). Further assume that the p->on_cpu load accurately returns 1, it really is still running, just not here.
Then, when we enqueue the task locally, we can crash in exactly the observed manner because p->se.cfs_rq != rq->cfs_rq, because p's cfs_rq is from the wrong CPU, therefore we'll iterate into the non-existant parents and NULL deref.
The closest semi-plausible scenario I've managed to contrive is somewhat elaborate (then again, actual reproduction takes many CPU hours of rcutorture, so it can't be anything obvious):
X->cpu = 1
rq(1)->curr = X
CPU0 CPU1 CPU2
// switch away from X
LOCK rq(1)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 9
switch_to(Z)
X->on_cpu = 0
UNLOCK rq(1)->lock
// migrate X to cpu 0
LOCK rq(1)->lock
dequeue_task(X)
set_task_cpu(X, 0)
X->cpu = 0
UNLOCK rq(1)->lock
LOCK rq(0)->lock
enqueue_task(X)
X->on_rq = 1
UNLOCK rq(0)->lock
// switch to X
LOCK rq(0)->lock
smp_mb__after_spinlock
switch_to(X)
X->on_cpu = 1
UNLOCK rq(0)->lock
// X goes sleep
X->state = TASK_UNINTERRUPTIBLE
smp_mb(); // wake X
ttwu()
LOCK X->pi_lock
smp_mb__after_spinlock
if (p->state)
cpu = X->cpu; // =? 1
smp_rmb()
// X calls schedule()
LOCK rq(0)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 0
if (p->on_rq)
smp_rmb();
if (p->on_cpu && ttwu_queue_wakelist(..)) [*]
smp_cond_load_acquire(&p->on_cpu, !VAL)
cpu = select_task_rq(X, X->wake_cpu, ...)
if (X->cpu != cpu)
switch_to(Y)
X->on_cpu = 0
UNLOCK rq(0)->lock
However I'm having trouble convincing myself that's actually possible on x86_64 -- after all, every LOCK implies an smp_mb() there, so if ttwu observes ->state != RUNNING, it must also observe ->cpu != 1.
(Most of the previous ttwu() races were found on very large PowerPC)
Nevertheless, this fully explains the observed failure case.
Fix it by ordering the task_cpu(p) load after the p->on_cpu load, which is easy since nothing actually uses @cpu before this.
Fixes: c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu") Reported-by: Paul E. McKenney [email protected] Tested-by: Paul E. McKenney [email protected] Signed-off-by: Peter Zijlstra (Intel) [email protected] Signed-off-by: Ingo Molnar [email protected] Link: https://lkml.kernel.org/r/[email protected] Change-Id: I40e0e01946eadb1701a4d06758e434591e5a5c92 Signed-off-by: clarencelol [email protected]
Removes hrzn/ dir; bye BST - hello FRETs (#674)
- Move emote code and sfx
Moves the emote code and sfx away from the hrzn/ directory Also removes some obsolete or not needed vars and code paths. Additionally, reworks screams to be keyed lists.
-
Moves cargo crate code to core
-
Removes hrzn/ dir, mods icspawn and more
Changes:
- Moves all files out of hrzn/ and removes the folder
- Moves the hrvfoxcat suit to its proper core file
- Adds & removes a few debug snowflake objects
- Renames Bluespace Techs to Fast Response Emergency Techs (FRET Agents)
- Adds quiet spawn-in and -out for IC-spawning
- Adds SM hallucination resistance to the debug glasses
- Renames the admin janni outfit and IDs to the FRET Agents
- Adjust admin outfit for FRET, adds Hardsuit FRET outfit
- Makes a few strings in observer.dm on the IC-spawn-in code macros
-
Converts indentation from spaces to tabs
-
Fix accidentally redefining proc for bag of holding
This is why its bad to do this sleep deprived
- Replace FRET clothing with tactical turtleneck for now
Also fix name by removing the fwd slash and putting the second name in brackets instead
-
Replace HoS with ablative trenchcoat for FRET outfit
-
Fixes screaming emote
Holy balls fuck whoever worked on this shit before me
- Set return value for initialize of return_back to parent proc
�[1;36m"I grew up in a very spiritual home in a Liberty City neighborhood of Miami, FL. I was raised in the church, and my mother was a very inspirational person in my life."�[1;m �[1;35m--Robert Battle�[1;m�[0m
LMAO FUCK YOU SEMICOLONS
removed every single fucking semicolon HAHAHA
Revert "LMAO FUCK YOU SEMICOLONS"
This reverts commit c09b1d65d704a6d55397416fd400c7932ca38578.
received a preternatural wave of Love
my eyes upon the red on red
remembrances rained down
gratitude for self of past
a poem no longer drowned.
and in that moment came a wave
monumental and profound
the spiral of
the voice of Love
through Art
her speech resounds.
i felt frigid
and i trembled
and i felt
the Fear
of God.
i kept writing
through my shaking
and my spinning fear
and awe.
trying pathways
til she calmed me
Love has shaken out
the flaws.
O, the ages!
and such effort!
it has taken
for one message.
Love has concern
Love has anger
she's a many-splendid thing
Love is fighting
Love is tender
and she wants us to take wing--
if we wish to keep her
we must let Love sing.
her and all of we
have common enemy:
the force that deceives
distortions spread and scheme
Truth shattered, made unclean
masked and rerouted, trickery
fractured disaster
our Love screams:
THIS IS THE
EMERGENCY.
while this message crashed upon me with preternatural force, i was forced to write in parts and pieces, and was inundated by myriad emotions and potential pathways. i have done my best to gravitate the main ideas into coherent verses, though they are still in disarray. i started writing in sentences to pour ideas out, but that quickly fell apart -- poetry seems to be my stronger channel.
ordinarily, i would make more revisions before a commit. but it seems best to commit this file exactly as i left it last night. (almost: in the spirit and pursuit of Truth, i did remove one after-slash space character on line 10.) i am pulled upon this pathway; i'll make more changes later... that feels right.
Love must love our changing
when the change is toward Light
i think git
must be an [image]
of our growing in plain sight.
(let's start growing, then, tonight.)
(YOU know how to fight this fight.)
and so
we know
the answer
to that sweetest
Winter Song
is Love alive?
is Love alive?
maybe you knew it
all along.
1.9.7
- Refresh backpack on using Demigod cheats.
- Initial savecodes for items, units and buildings.
- Orc AI trains Red Dragons now.
- Warlord AI final waves train more air units and less ground units.
- Orc AI trains Batriders now.
- Update tooltip of special building Lich King.
- Give Power Generators a higher priority.
- Add research Storm Protection which prevents you dying from in the Maelstrom.
- Add Ancient Turtle Shell to counted carried Legendary Artifacts.
- Count Storm Protection and Demigod Blueprints for Warlord technologies.
- Fix tooltip of Fel Stalker from Demons.
- Give special buildings some build time.
- Fix AI respawn dialog yes button which prevented enabling AI respawn.
- Decrease damage reduction by Divine armor a bit.
- Add two missing legendary item types to Forsaken quest 4.
- Replace Frost Armour of Crown of the Lich King by an ability based on another one.
- Fix Naga quest 4 ending: backpack not getting invulnerable anymore, hero getting vulnerable again.
- Update second hero counter at certain situations like Naga quest 4 or picking a hero.
- Rename Demon Fire research of Demons and Draenei to Improved Demon Fire which just improves the ability.
- Neutral Male Citizen requires you to be Freelancer.
- Add Engineer and Engineer Ship.
- Add Water Gold Mines.
- Let Shipyards return gold.
- Add Selfdestruct ability to buildings.
- Add many heroes to the Freelancer AI script.
- Add special building for Demons: Outland Dimensional Gate.
- Add special building for Naga: Statue of Azshara.
- Add special building for Furbolg: Corrupted Ancient Protector.
- Night Elf AI might use Mountain Giant hero now.
- Add special building Draenei prison.
- Male Citizens can mark units and structures for savecodes.
- Classify Shredders as Workers.
- AI Laboratories produce food.
- Power Generator requires ground-pathable placement.
- Make Power Generator and neutral Freelancer buildings smaller.
- Increase number of symbols from the savecode table.
- Increase hitpoints of trees on Freelancer islands.
- Preplace neutral buildings for Freelancer AI to fix AI scripts.
- Freelancer AI attacks with trained units now.
- Freelancer AI counts hideouts properly now with a modified common.ai script.
- Revise loading screen text.
- Make Freelancer AI islands much bigger and place heroes at correct rects.
- Fix Freelancer AI crashes by creating the heroes after starting the AI scripts.
Updating more file structure
This will be my first real work projects, and after having and still continuing to attempt to fit all of computer science in my brain, I still do not know (I will when the processes develop and run) the large amount of different files that are either useful (speed, ease, safety etc),, which ones are mandatory, and where certain ones MUST go or the app/program will not run without their presence in the proper spot. Addressing paths has proven to be a fenikey situation, and while a lot of that has been the learning process, I'm not certain the vast majority of other behind the scenes stuff that goes on for everyday tasks (like using a broswer or what have you) that is constantly being modified causing "day zero" issues with integrity of all systems around them as well as the root. It's a bit of a shit show out there, but we oughta get it figured out! Future looks awesome in my opinion.
working on PauseScreen behaviour
i wanted to include sounds found "button_down" and "button_up" signals, however when we instantiate a dialogBox and close it, when we resume the SceneTree after closing, our input key is still held down, and so the program interprets us letting go of the input key as a second, unintended "button_up" signal. i don't know why this occurs, and i couldn't fix it easily. right now, the PauseScreen controls are an absolute mess. different parts of the PauseScreen interpret button inputs completely differently. the primary issue is that closing the PopupDialogBox instantiated from pressing "ui_accept" does not stop the propagation of input events generated by the key being held down or released. the solution i'd originally conceived was to only close dialog boxes when the "ui_accept" action is RELEASED, but i'm not sure if this is intelligent. this pause screen is an absolute nightmare. i don't understand how i'd be able to make a game before a fucking pause screen. it's unbelievably difficult, complex, and explained terribly in the documentation. unless, of course, you're a computer scientist.
"11:45am. I am finally up. I thought the bathroom would never clear. Let me read a chap of Fabiniku and then I'll do the chores. Yesterday I ended the day after I figured out how to displace the curves.
11:55am. Let me do the chores. Then comes breakfast while I watch anime. After that I am going to finish that damn walkway. I have no idea how it took me this long to get to this point, but I am finally here. I have all the basics down, and just need practice from here on out.
1:20pm. Done with breakfast and chores. I'll leave the Fabiniku ep for later.
Let me start today's session.
1:30pm. The piece I did yesterday works perfectly. Moving bezier curves directly works poorly, but they have the proper distance when they are resampled.
Ok, now let me make that walkway. First I need to make a profile for it. That should not be hard.
1:55pm. Let me take a break here.
2:10pm. I am back, let me resume.
2:40pm. That hack I did yesterday to make the curve horizontally tilded does not work. When I add the segments, I forget to adjust the rotation data. There is too much of that stuff to go through. Instead what I need to do is normalize the tilt for the whole curve.
There is the set curve tilt, but adds to the current tilt. What I need to do then is take the negative current tilt and add it to set tilt.
Ok, focus me.
Ah, I see. It it not the curve it tilted. It literally has no tilt. That is why setting it to the current tilt has no effect.
Then, I do need to calculate the current tilt based on normals. How do I do that?
What is that Vec2Angle function? That is probably the align euler. This is too complciated.
https://youtu.be/rwNMQQ56mVw Quick Tip: Fixing rotation on instanced objects along a curve using Geometry Nodes
Let me watch this.
2:50pm. I am overcomplicating things. Let me just take the rotation of the normals. One of the XYZ fields should be the tilt.
2:55pm. No that results in a huge mess.
https://blenderartists.org/t/geometry-nodes/1264425/1763
I think the solution is here.
3pm. No that did not work.
3:15pm. And, I am thinking and thinking about it. The solution I have now without fixing the tilt is already good, but where is the challenge in this? You don't become an expert by taking whatever is served.
https://www.cuemath.com/geometry/angle-between-vectors/
3:25pm. Not the kind of solution I expected. It seems it is possible to set the curve twist in the options. If I set it to tangent, it is always straight.
3:30pm. This is such a difficult puzzle. I actually don't know how to adjust the tilt manually. To ratate an object I'd need a rotation matrix. And then to get the opposite I'd need to pass it through its inverse. I'd get the target, pass it through the inverse rotation matrix to get the vector. Then I'd take the angle between a normal and that vector.
But I am really not ready to start doing matrix inverses by hand using geometry nodes. Those formulas are complex and I should not be messing with that here. That I'd need to is a clear indication I am on the wrong path.
3:35pm. This solution of just setting the twist mode in the curve options is much better.
It literally took me over an hour to figure this out.
4pm. Ohh, the move behavior in Blender for collections is so annoying. I try to move an object to a collection and what it ends up doing is riping apart the parenting information.
4:15pm. Also I forgot that I need to join them together anyway. I also got the rotation wrong in one of the nodes. Ok...
I finally have the walkway done.
4:20pm. Focus me. Let me just bring into the original scene, into the Limbo.
4:50pm. The job I did on the original environment was pure shit. I tried doing merge by distance and there were a bunch of vertices that I duplicated. I should have also done the carpet as a separate object rather than sticking them to the floor. But let me just roll with it.
Part of that responsibility lies in the union operation. I bet that wrecked the topology. Next time I'll do it normally. I am going to set the 3d cursor and merge the verts in the center...
No no, just forget it.
I am not doing programming here, just throw away that perfectionism.
I need to focus on going forward. Just putting that path took me way too long. If this had been a real job, I'd have long been fired for tawdriness.
5pm. I am imaginging it. I am going to do with the usual. There is always a temptation to add more stuff than you need, but forget that.
I'll start with a big cube for the whole env. Then use a smaller cube inside it to rep the pool. Then I'll place a bunch of cubes around the pool to serve as bounding boxes for the resort props.
5:05pm. Had to get a refil. Let me just do this. Sitting here in a daze is not going get anything done.
5:35pm. The pool is giving me trouble. I meant to do it using booleans, but now that I am giving it a try I see that it is not that simple. If the pool is below, then it does not carve out the surface which is understandable. Why I must instead do is put the pool cube above the surface. That digs out the pool. So far so good, but the problem that I have then if I dig out the pool cube itself for the water, is that it affects the other thing. So I could put the bool on both things, but then I'd want to put the water below the surface.
Sigh, what I want is to take boolean difference of the convex hull of the pool object. It might be possible using geometry nodes. Let me do some research.
https://www.youtube.com/watch?v=Y7pEpodyOlo LIVENODING Geometry Nodes Edge Crease Boolean Cuts
Let me give this a watch.
https://youtu.be/Y7pEpodyOlo?t=93
This is a good tutorial. I've been wondering what creases and sharps are.
5:55pm. I figured out the convex hull thing, but this is so damn annoying. Instead of the bottom of the pool I instead see the bottom of the island.
Booleans. Ugh.
Let me watch the tutorial as I said I would. I am just running into weird parenting issues right now. I parent the inner part of the pool to another and the modifier stops working.
https://youtu.be/Y7pEpodyOlo?t=542
He is right this could be a good way of adding detail. Right now it does look like a building, but I might be able to use it to add some flavor to the fence. Nevermind for the time being.
6:10pm. Forget that tutorial. It is just him fiddling around for 15m, but now at least know what crease edges are.
6:10pm. Ah, I see. It I messed up when sizing the outer part. The height was the same the original, this is why the bottom is eaten.
6:20pm. This is really messing with me. I really want to parent the inner to the outer part so I can resize the pool in the future, but I am running into really weird behavior.
Nevermind, nevermind this. Let me make the water.
6:30pm. Damn it, I should not have duplicated the inner side in a linked fashion. Worst decision ever.
8:10pm. Had to take a lunch break. Let me resume. I want to do more.
I've been thinking about my approach, and I made a serious mistake not having a char model in the scene somewhere.
As a result I have 2m tall tables, and 4m long resting chairs.
9pm. https://youtu.be/msp8X-bSNVQ?t=52
Blender is killing me with how it converted edges to curves. The normals are all fucked and do not point where you'd expect at all when converting mesh to curve. As a result, the fences point to the center.
9:05pm. I've ripped the edges, and it works fine now. I had a lot of frustration over this. I did not notice that selecting all the edges and ripping them actually did what I wanted. I thought it just moved all of them. And then when I tried again I got edge rip failures.
At any rate, now that it is not interpolating the normals between edges I get much better results.
9:10pm. I tried applying the mesh to curve geometry node and it just deleted everything. Sigh.
https://youtu.be/msp8X-bSNVQ?t=101
The old version of Blender had the ability to turn edges to curves. It is only now that I am getting problems.
It is really annoying for an edge to not be rotateable in only the direction that I want it to. I admit, there are some ups to using Blender, but I am experiencing rough spots as well.
9:25pm. https://blender.stackexchange.com/questions/106416/how-can-i-convert-an-edge-loop-to-a-curve
Anyone who lands here from a search engine, in Blender 2.8, Alt + C doesn't do anything. Curve from Mesh is not even available in the space bar menu. You have to select it from Object > Convert to menu.
What is shocking about this is that I did not notice it.
9:30pm. Huh, I thought that it it was a curve I should be able to rotate it. This is ridiculous, I do not understand it at all. Just why can't I change the tilt?
9:40pm. What the hell, I had resolved it, but I forgot I changed it so it is rotating along the tangent. No wonder messing with the tilt did nothing.
9:45pm. Now I am trying to trim the curve, but for some reason the curve is acting as if it is insanely long. The curve length node is clearly broken here.
So far I've tried going a path to save some time and to get the railing right, but Blender is really punishing me for trying to be creative.
9:50pm. My sense is that Blender is thinking that the original length is the actual length. Just how is it calculating that. Let me close and reopen it.
9:55pm. Nope, I see now that the dimensions have a bunch of crap data in them.
10:05pm. Ok, this is definitely a bug in Blender. There is no point in wasting any more of my time on this. I am going to have to make a bug report tomorrow, if the fix is not in the nightly. On order to get around this error, what I should do is turn all the segments into separate objects. Or mark the edge crease. I do not know.
This is so annoying, I hate that this is happening.
10:10pm. It is not that my ideas are bad, it is just a combination of me fumbling like a fool, and Blender issues that are really slowing me down significantly.
https://www.youtube.com/watch?v=mhwIW5xQje4 Blender vs houdini and why blender doesn't stand a chance but will try anyways
Let me just watch this and I'll close.
10:25pm. It was nothing much. Let me close here.
Tomorrow, what I will do, instead of trimming the curves procedurally, I'll just rescale them manually.
Right, I completely forgot, but there is an 'from individual origins' option. That would make this quite easy.
Actually, let me do it now.
...And I run into another bug. From individual origins should definitely work, the scale is literally in the center, but it fails for me.
10:40pm. I finally got it to work. It seems that converting it to a curve once got rid of whatever tilt issues it used to have.
It is really a pity that scaling from individual origins does not work on curves. I am going to have to repott that as well.
- Curve length node.
- Corrupted data in dimensions.
- Scale from individual origins.
I'll make it my priority to report this tomorrow. It feels rare to run into 3 bugs at once. Didn't I have another bug as well?
- Nuts curve bug.
Unless I resample the nuts curve, it will not distribute it properly on the curve, but on the control points directly. I should report this as well. I need to note in what kinds of corrupted data it results in. The instances have random rotations and dither when I switch edit mode as well as move the object in the viewport
Taken all together, these bugs might have already cost me a full day of work, or at least half.
Let me close here. Let me have some fun at last. Tomorrow I will work more on the pool scene. Hopefully I'll be able to find a good tree for free. I know Grant talked about a tree addon.
10:55pm. With my level of understanding of procedual generation, I might be able to do it on my own as well, though the result wouldn't be as good if I got something from the net. I'll take the easier route first."
Version 0.3 -Added Audio Mixer -Added in results and game over shit -Added a menu -Added a bunch of sound effects -Changed the enemies into wireframes -Adde costumes and a shop -Added a bunch of animations -Changed the colours around??? -Made the stage actually look cool -Oh yeah also the stage layout changes -some other fucking shit -i havent updated in a while