Jump to content
  • Advertisement

TheComet

Member
  • Content count

    628
  • Joined

  • Last visited

  • Days Won

    1

TheComet last won the day on April 19

TheComet had the most liked content!

Community Reputation

3922 Excellent

About TheComet

  • Rank
    Advanced Member

Personal Information

  • Role
    Programmer
  • Interests
    Art
    Education
    Programming

Social

  • Github
    TheComet
  • Twitch
    TheComet93

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. enum class Thing { FOO = 0x01, BAR = 0x02 }; Thing thing = Thing::FOO | Thing::BAR; // doesn't compile This is an age old problem. What is the proper way to achieve what I'm trying to do here? As far as I can tell, using enum class is more a hindrance than a useful tool with flags. I end up typing less with a normal enum: enum Thing { FOO = 0x01, BAR = 0x02 }; unsigned char thing = FOO | BAR;
  2. TheComet

    Who's your intellectual idol?

    For me at the moment it would have to be Joe Rogan. While he's not particularly intellectual in any specific field, the discussions he has lead in his podcasts are often highly intellectual. He is really good at asking the right questions and extracting all of the information out of someone on a particular subject.
  3. TheComet

    FPP Game

    Who upvoted
  4. TheComet

    Ways to avoid Subconscious Prejudice

    By talking to the person you've judged and seeing if what you believed to be true about them is true or not. When I do this, I feel like the majority of the times my initial judgement of the person was correct. I don't know if there is some confirmation bias here though (there probably is). There's a reason why stereotypes exist, it's because there is some truth to them. A very easy example I can think of is: Can you pick the weak, submissive person out of a crowd? These people typically correlate with long hair, eyes to the ground, head tucked into their shoulders, weak posture, etc. The ability to quickly measure others against yourself is built into our monkey brains. It's instinctual to avoid punching a muscly guy two times your size in the face and picking on the weaker guy. Is this a bad thing and should you train yourself to ignore your instincts? I think it depends on the situation. Social gathering? Yeah you should probably ignore your prejudgments. Drinking at a bar? Definitely listen to them.
  5. When I was born, the doctor accidentally handed me a computer keyboard. It took only a few seconds for him to realize the mistake he had made but it was too late; I had already logged on to thegamecreators.com and downloaded DarkBASIC Classic, a horribly written software package for developing DirectX 7 based games in the BASIC language. I spent the next 6 years of my life learning the unfathomable number of quirks of DarkBASIC instead of learning how to walk and interact with other humans. My parents were worried, so they bought me a football. Finally, I had a chair to sit on and write games properly. After having worked on over 200 projects, I realized how bad DarkBASIC was, so I downloaded Ogre3D 1.7.8 and compiled it in 2 hours. I had no idea what the hell was going on. C++ was difficult and strange and really, really complicated. The next 5 years were all C++ centered, I learned the language, I developed a multitude of different applications but still haven't made a single game yet, even to this day. Somehow, C++ has made me worry about all of the little things that didn't matter in DarkBASIC: Design patters, memory considerations, build systems, unit testing, performance considerations... I am being bogged down by all of this crap and it is preventing me from just having fun and writing games. This is what I miss most about DarkBASIC, as horrible as it was.
  6. TheComet

    Have you ever had your game idea stolen?

    Have you ever stolen sand from a beach? Game ideas are so abundant and completely useless too, they're not worth "stealing". I say useless because they've not been put to the test to see if they even work or not, and even if they have, someone still has to invest 2 years of their life to make it a reality.
  7. A lot of those conversions are unnecessary and you should probably load the DLL "outside" of the function that's calling it. Another thing I noticed is this section: Your function's return value is void so you need to set it as such. Here's how I'd do it: import ctypes as ct # Load DLL and initialize all types once here float3 = c_float * 3 mc_dll = ct.CDLL("mc_dll.dll") mc_dll.get_normal.argtypes = [c_float, c_float, c_float, c_float, c_float, c_float, c_uint, c_uint, c_uint, float3] mc_dll.get_normal.restype = None # returns void def get_normal(x_grid_min, x_grid_max, y_grid_min, y_grid_max, z_grid_min, z_grid_max, x_res, y_res, z_res): output_arr = float3() mc_dll.get_normal(x_grid_min, x_grid_max, y_grid_min, y_grid_max, z_grid_min, z_grid_max, x_res, y_res, z_res, output_arr) return V3(output_arr[0], output_arr[1], output_arr[2]) Then, if you were to save this to "mc.py" you could use it as: import mc normal = mc.get_normal(...)
  8. See here on examples on how to handle strings: https://docs.python.org/3/library/ctypes.html#return-types
  9. The "proper" way to do it would be something like this, if you had read the documentation, specifically section 16.16.2.9 about arrays and pointers: So let's do that: DLLEXPORT void get_triangles(int* p) { p[0] = 123; p[1] = 456; } import ctypes as ct IntArray2 = ct.c_int * 2 # define new type that is an array of 2 ints arr = IntArray2() # instantiate this new type lib = ct.CDLL("./mything.dll") lib.get_triangles(arr) # pass it to your get_triangles function print(arr[0]) # prints 123 print(arr[1]) # prints 456
  10. TheComet

    Help disassembling laptop

    Laptops are hard to disassemble especially the modern ones. But that doesn't mean it can keep its secrets from you! What you'll want to do is get one of those industrial grade vacuum cleaners. You know, the 4.5kW 3 phase ones that suck so hard, it puts Nunu from Teletubbies to shame. Attach that to the ventillation shaft of your laptop and the dust will come flying out in an instant. The average time of sucking depends on the person, but it's usually around 2-3 minutes. Make sure to dispose of the laptop's expelled matter in an environmentally safe way. What I like to do a lot of the time is cook it up with pasta, it has proteins and vitamins in it. I've heard from others they like to swallow it directly
  11. TheComet

    what do you listen to while making / playing games??

    For coding it's usually repetitive or calm music. Solar Fields -- who made the soundtrack for Mirror's Edge -- has been a looong favourite of mine, I find myself returning to their music over and over again over the past 8 years. Some of my favourites: https://www.youtube.com/watch?v=GGgL2EF7QMg https://www.youtube.com/watch?v=QQYm8sG6IgM If you like progressive beats, Hybrid has a plethora of different styles. Their y2k album stands out the most to me, but they also make orchestral music combined with electronic. https://www.youtube.com/watch?v=gBq3Rn93xGA&list=PLC36B483573D932EB&index=8 I also really like progressive trance: https://www.youtube.com/watch?v=Y0yajN_sReE Deep house: https://soundcloud.com/dima-deepmix/dima-zvezdopad#t=30:12 When I get sick of all of the electronic music I'll switch it up for something like this: https://www.youtube.com/watch?v=xjrtKcPuvA8
  12. One thought you might have when hearing "LED Cube" is: What use are the LEDs in the center? Are they even visible, or are they covered up by all of the other LEDs surrounding it? They are. That's why it's preferable to choose LEDs with small housings and space them as far apart as possible. The "empty space to LED ratio" needs to be as large as possible. After searching multiple LED suppliers, I found that the smallest viable RGB LED is 5mm in diameter, with pin lengths of 25mm. To get an idea of what the cube might look like and also to figure out how the LEDs should be connected to one another, I decided to model the LED in blender. I came up with the following layout. It would be impractical to address all LEDs simultaneously. This would mean having 4096*3 control signals! I figured that the highest number of LEDs I would dare control simultaneously would be 768, which happens to be the exact number of LEDs in a single "slice" of the cube. In order to control all 16 slices, we use multiplexing: That is, we need to cycle through each slice repeatedly and apply the 768 signals for the active slice. If you do this fast enough, the human eye will think all of the LEDs are turned on. Knowing that ICs generally are able to sink higher currents than they are able to source currents, it is preferrable to use a common anode LED and connect all anodes in a cube slice together, making it possible to switch slices of the cube on and off with power transistors. The anode is the connection branching off to the right in the picture above. The 3 cathodes for controlling the red, green and blue LEDs in the housing are branched off downwards. The idea here is to chain the LEDs together such that the anodes can be soldered together like so: And by soldering these strings into an array, we get a single slice of the cube with all anodes connected to the same net: 16 of these slices are then stacked on top of each other such that the cathodes align perfectly with the underlying layer and can be soldered together: The result is a structure that looks like this (using 4x4x4 here for clarity, things get messy to look at with 16x16x16): The 768 + 16 pins that end up sticking out of the bottom of this structure will be soldered onto a PCB. The number of signals can further be decreased by using shift registers (most likely I'll be using 32x 24-bit shift registers which will decrease the 768 signals to 32. This, an FPGA can handle). To finish things off, since this is blender, I rendered some pictures of how the cube might look in the end. Enjoy!
  13. TheComet

    Why Is Animation so Under-utliized as a Medium?

    This question doesn't have a simple answer. You could probably write a thesis on why. Certainly one of the major reasons is this idea that cartoons are for kids (in the Western world). It's engraved into everyone's heads. If some friends came up to you and said "hey dude, let's go watch a movie. It's this cartoon that [...]" your brain would immediately conclude in this moment that this movie is going to be lame and for 12 year olds. That seems to be the natural reaction. It's interesting that we are so quick to judge cartoons like this, despite there being quite a few cartoons that are not for kids (Rick & Morty, South Park, The Simpsons, etc.)
  14. TheComet

    IRC Recommendations

    For IRC I recommend you download one of the many clients (e.g. HexChat, mIRC, etc.) and just dabble around with it. See if you like it. There are a few skills to learn: In most clients you can join a server by typing "/server irc.freenode.net" for example. To join channels you would type "/join #blender". To leave channels, you type "/part" and to disconnect you would type "/quit". There are a few other commands, such as sending private messages to specific users. This is done with "/msg <username> <message>". Note that most clients allow you to autocomplete usernames by pressing TAB. To find out more information about a user, you can type "/whois <username>". Then, a lot of IRC servers provide "services", which are bots that assist in channel/user management. Probably the most used one is NickServ, which allows you to register your name so no one can steal and impersonate you. You can interact with it by sending PMs, i.e. try "/msg NickServ HELP". There's also a service called "ChanServ", to see what it does, you may type "/msg ChanServ HELP". And now, for my more controversial opinions: IRC is old and stupid and lacks features in many ways. For example, mesasge history is only recorded while you are joined to channels. While you're offline, there is no way for you to see any messages that were sent during that period. People could be talking trash about you and you'd never know. The IRC protocol does not expose any functionality to synchronize past messages with your client upon joining. People get around this by writing their own chatbot or paying an online service to keep your username online when you go offline. Most IRC clients are text based. They do not support embedded videos or gifs. They do not support avatars, message IDs, or anything advanced at all, really. Most additional functionality like this is provided by bots written by people who have no hobbies. You will also notice a distinct "smell" when you enter any IRC channel on the internet. The way people talk and behave can be off-putting and strange and it's unique to IRC people. It's caused by a mixture of elitism, hipster-ism, and a resistance to change. IRC people will insist that you don't need any of those advanced features listed above. They will say things like "who needs message history, heh". Notice the "heh" proceeding this sentence. It's small quirks like this that you may not even notice at the beginning, but are indications of this "shared IRC consciousness", as if all people have merged into a single, indisginguishable personality blob. A hivemind. It's very hard to describe. It's the same smell you get from people who compile BSD from source and install it onto 1980's hardware and feel the need to brag about their accomplishments. It's the same smell you get from hipsters who go to hacker conventions with their macbook pros, who buy an Arduino-powered LED blinking hardware kit they get to solder together themselves and then feel like they need to brag about how much of a hacker they are, even though they don't know how to program and they probably botched all of the solder joints. Because joining an IRC channel is an achievement in itself. It requires some investement to learn how to use it, and because of this, it attracts people who with needs to feel superior to others. For these reasons, I recommend using Discord or anything else. Only use IRC in cases where you really have to (like asking a specific code question about the CPython API or something).
  15. TheComet

    Tribute to Stephen Hawking

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!