gdcolon / gdbrowser Goto Github PK
View Code? Open in Web Editor NEWA website that lets you browse all of Geometry Dash's online features, and more!
Home Page: https://gdbrowser.com
License: MIT License
A website that lets you browse all of Geometry Dash's online features, and more!
Home Page: https://gdbrowser.com
License: MIT License
Honestly I think it would be cool
It seems odd that jump rings are dedicated a section, but jump pads aren't.
If the server ever gets very overloaded, something that can help loading assets and fonts is a CDN. I use a CDN Bunny which is very inexpensive. In fact, my credits for my CDN account are hardly depleted even though I use the CDN for 5 different sites! If you wanted a CDN, you could use my account if you wanted to save on the $10 minimum account deposit which you will definitely not need to use all of (I speak from experience.)
I noticed that many of the images on the site are not actually used to their full resolution. There are many of them used as UI elements. This generally considered a bad practice but one that is hard to circumvent since many of GD's UI elements are shiny and complex graphics. I have some alternatives that can save on loading dozens of PNGs. 1. Using CSS for the more simple elements. An example of this is on the nav buttons for https://gdforums.com 2. Replacing PNGs with SVGs. GD's graphics aren't that complex and are generally made from many simple shapes and gradients. Converting the PNGs into SVGs, although time consuming due to some edge cases, can dramatically reduce the amount of data that gets sent on page load.
I'd like to comment
it's been trying to load juniper's icon for hours and at this rate i think it never will do so.
I'll be honest here: I was planning on doing this myself (and had - at the expense of 2.0 color support).
The header colors are parsed the exact same way minus some things:
Opacity is always 1, there are no copied colors, and they're not in the kS38 header but split into many more header values.
One thing is that I have no idea how it should be integrated into the API, you could either do it the 1.9 way and send it as part of the settings, which would require anything using the API to deal with it or parse it into the 2.1 format, which would require the API itself to deal with it.
This is a far-future idea, but at some point levels can be edited (or at least viewed, which would be a lot easier I'd think) in the browser and offer the option to download it to a user's computer. Heck, with a physics engine you could even play it!
We can abuse others' hard work to determine what is what in the encrypted data. I have no C# experience (only some Java) but I can probably try to steal it all port their code over to Node.js.
Let me know if this is an idea for the future or if it isn't a goal for GDBrowser.
(By the way, that code is one part of the parsing step - UI is a whole different animal. If this is an idea, it definitely won't be possible without at least three or four weeks of work by multiple people. Also, I know analyze.js
already exists, but this is an extension of it. Maybe you've already seen the GDE project and used it for analyze.js
but again this is an idea.)
There are levels such as 35032968 which are hacked to have practice mode music set as the level's actual theme, but searching with Stay Inside Me set to the song name doesn't work, and there's not enough room to fit "Practice: " before it either.
maybe add the menu music to the site? add a volume slider so people can turn it off if they want to. it would make the geometry dash "aesthetic." just an idea tho.
I’ve noticed that daily was unchanged for a while. If this ever happens again, it breaks the daily page. Is there a way to fix this, for example GDProfiles’ daily page? After all, there is a node.js package for accessing the API here, but I have no idea how limited it is for dailies and weeklies.
edit: ok i was kinda harsh to robtop ngl
I'm starting to feel that I'm making so many issues and PRs that I'm being annoying, so please let me know if that's the case and I'll take the pace down a notch haha.
Flexbox is a CSS layout format that allows content to resize based on the amount of space it's allotted and removes the need to hardcode values such as padding-right: 11%
to make three items in a <div>
symmetrical. Instead, we use flexbox with justify-content: space-between
and simply put the three items in. The browser puts space between the elements for us, automatically and evenly. There's other benefits such as align-items: center
to automatically align things vertically. It's really cool, and I suggest you take a look even if you decide it isn't the right call for GDBrowser.
I'm only making this issue because there are many places when seemingly random values are coded in where flexbox would serve much better.
Thanks for reading!
Exactly what the title says.
Currently it just displays a vague relative time e.g. 2 months ago. I don't know if the exact dates and times are stored anywhere, but if so (and if they aren't accessible already on the site), can they be displayed in some form that isn't just a certain time ago?
When saving data to the cloud, it also saves the progress you have on levels, both normal and practice. It also saves attempts, I believe.
It would be pretty cool to be able to load your account data to save your progress, and potentially even be able to use it to comment on GDBrowser.
The icon kit might also be nice to add for this feature as well.
There are three things that could be improved on the frontend for GDBrowser.
Firstly, build tooling should be used. Build tools bundle together multiple files while minifying and improving cross-platform compatibility. If the Parcel bundler is used, the users could get the website delivered much faster and have it work on nearly any browser.
Using build tools goes hand in hand with making the website an SPA, or single-page application. The name should misleading; the main change will be putting all the HTML into one file and changing the shown page via JavaScript. This will make loading new pages instantaneous and has other benefits. This can be implemented by having multiple <section>
tags that enclose the individual pages, having them all hidden by default, and showing them a certain page when their path matches that page's name. There are a couple more complex elements involved, such as using the Browser History API, but if you agree with this idea I'll submit a PR so you won't need to worry about it.
Lastly, removing jQuery is also a good idea. It's buggy, has security vulnerabilities, adds a ton to bundle size, and every feature it has can be replaced easily with native JS. That's why it isn't used in modern web development. Check out You Might Not Need jQuery. Again, I can submit a PR with the changes.
Its also possible to use a JS-based UI library such as React, which I'm very experienced with, but that requires a complete rewrite off the app, and it's hard to learn. That's why I'm not recommending it.
Let me know which (if any) of these suggestions you'd like me to implement. Thanks for taking the time to read!
Searching just seems to return only demon difficulties if you were on the demons page, or non-demons if you select from the non-demons page.
Might be best that all 13 difficulties are just displayed in the one shot instead of hiding all the demons behind a button.
You could do it with comments, so why not statuses? It would be helpful if you're away somewhere and want to keep followers updated.
Since it takes time to type in the name of a song, maybe there could be a faster way to input song names? One thought would be to have a button which could be pressed, revealing a menu with the name of each song, and clicking on the name of such a song would automatically input it as text into the input text box. Would be quicker for the ones with longer names
In some cases, the buttons on the comment or leaderboard page stop working, most likely because the code did an oopsie somewhere. No errors logged. Happens when page 1 of compact comments is too small, or when weekly leaderboards are empty.
To anyone reading this who isn't me: Don't worry, I'll figure out this one myself, just putting this issue so I remember about it
...when'd that happen
Currently the level analysis only displays specific object counts for triggers, rings, and groups the remaining objects into categories. I think there should be a more specific and in-depth analysis option as well, which lists all unique object types in order of their internal numeric ID.
Objects which cannot normally be accessed through the editor (e.g. old colour triggers, deprecated clubstep blocks) could have a separate font colour.
28651344 could be used to test this feature.
Currently in id "/api/profile/id" api, id only works with playerID. Can I load this with accountID? I looked at the api documentation, but I could not find it. As expected, I think it's not woking yet on GDBrowser, or only accountID cannot be loaded from GD's load data php.
Is there any way to add this function or load playerID by accountID only?
Get all the information through search.js, and then switch over to download.js for the extra stuff. Saves the need for like 3-4 different requests to the GD servers
The server side code is mostly undocumented and are therefore hard to read. As an example, the LOADMODULES.js
file, as far as i can tell, recursively goes through the /api
directory and requires each file in it. Because of odd coding practices (like using a ternary when we could just use logical OR) it took me a while to figure out.
PS: I'm not trying to diss your skills, hope I didn't come off too rude!
For example, if we go to level ID 1, we'll see a user called "Melting Ice" somewhere in that comments list. If you click on "Melting Ice", you'll be redirected to "Melting".
Find a script that supports drag scrolling (comments, searching, etc) but also allows you to select text.
(Is it normal to submit issues for your own project? I'm just doing this so I don't forget :P)
if you go on a level information to see its password and if the password of the level starts with a 0, the 0 won't be shown.
i think it's because you saved the passwords as an integer and so the code says that for example if the password is 0688 that it equals to 688 so it'll show 688 instead of 0688
to fix it you have to save the passwords as a string instead of an integer.
have a nice day
Title says it all. In the API documentation the URL for level analysis is "api/leaderboardLevel/levelID" instead of "api/analyze/levelID. Would do PR but it's too minor so eh.
If, for instance, I go to https://gdbrowser.com/api/profile/26 (UserID for Clatchet, one of the few unregistered users with their username untouched), cannot get anything returned except a -1
Thanks for the shoutout in your video on GDBrowser! ❤️
I haven't been working on this lately because I was doing some other projects.
I still have the copy of the flexbox
version of GDBrowser, and I highly, highly suggest you reopen and merge the PR... muh mobile support
Onto the actual content of the issue:
Modern browsers support installation of websites as applications on any device: be that a mobile phone (running Android or iOS), a Mac, a Windows machine, etc.
This uses a technology called the Service Worker, which saves all the files for offline use.
Here's an example. If you're using a modern version of chrome, you should see an "Install" button at the right side of the URL bar. You can install it, and it creates a shortcut on your desktop/home screen. When you open it, it doesn't open in Chrome, it opens in a separate window (which is actually just Chrome but it looks like a real, native app!)
I can make a PR for this if you want. The point is less the offline support and more the "ooh it's an app!" factor.
Oh yeah, and also I can make your servers able to handle a LOT more users, but you'll have to do some things you may not like, which I can elaborate on if you want later.
This idea goes hand in hand with mobile support. I know I'm being annoying but PLEASE consider asking your viewers to try the not-exactly-the-same-as-GD version and asking them if they mind or not. 42% of your users are not on desktop!
Seriously, does anyone know how to change this
npm install: npm notice created a lockfile as package-lock.json. You should commit this file. added 267 packages from 215 contributors and audited 539 packages in 241.841s found 0 vulnerabilities
node index.js Error: Cannot find module './misc/secretStuff.json'
Did i miss anything? I thought this file already existed after i ran npm install.
I'm not sure if these get sent at all with the other icon data, but if they do it could be pretty handy to have them be displayed along the rest of the selected icon data. Also, maybe display the swing gamemode along the icons as well, so people know what it'll look like come 2.2?
Would also be handy to display default mini icon settings, dash fire colour settings, spider teleport effect settings and wave trail colour settings in the profile as well but I doubt those get sent over the server at all.
Hello. I'm trying to see my icon with the API but it redirects me to https://gdbrowser.com/search/404%20 and I don't understand.
I as a primary JavaScript developer am willing to help out with an overall code rewrite, or to maintain one if allowed by you. I understand if you wish not to by virtue of the code working; but I ask if I may help out with such on the basis of improvement and to make it easier on future contributors to help out with the codebase, such as myself; to improve and build upon what is provided here.
I primarily say this not out of spite or disgust with the current codebase, but as a helping figure.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.