Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

472 Neutral

About Dawoodoz

  • Rank
    Advanced Member

Personal Information

Recent Profile Visitors

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

  1. Dawoodoz

    Need Feedback on Portfolio?

    Portfolio * The header is annoying because it has no reason to follow the reader on such a short page. Just feels like my screen became smaller, which is especially bad when zooming in on an image using a phone. The black fade below the top is too long, making it hard to focus on the content. * Dawn unto dusk has the right color theme on the background with a single hue, but the text has a red letter causing a bad 120 degree color combination between red and green. Hue should be matched in angles of 90 or 180 degrees if you use multiple colors. The title also doesn't follow the rule of thirds, making it look misplaced. * The clouds behind randomly colored text makes it look like you haven't taken courses in neither Design nor Human Computer Interaction. * The CrossWorld cover has under-sampled pixels, border overlaps without edges and non-matching colors. Cartoon styles shouldn't let different colors collide without a black border unless they match. * The crown in Island Wars break the hard black and white theme and looks like unrelated clip art with the drop shadows. * Let's go putt putt, has a noisy background with a clearly visible texture seam. There's no theme explaining red and yellow opaque diamonds on the field. Contributions It's good to show that you can work with other people, but show something you made alone. Just some concept art, game assets in context or a small but good looking game you made yourself. Career If your goal is to get hired for anything above hobby projects in Unity, you shouldn't be making a portfolio right now. Study the design rules, take some art classes, reach your full potential, find your own style, practice copying styles, make new artwork, create a clean site from scratch without the clutter. The competition is insane, so count on being one of 800 applicants with little chance of someone reading your CV. In the worst case, you'll be churned and replaced. In the best case, you'll have fun with friends in a small company barely paying rent.
  2. Windows On Windows, you have getAsyncKeyState for checking whether a key is pressed. Remember to compare the resulting value, because it's not a boolean. https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getasynckeystate The offset can be (right - left, down - up) * timePerFrame to let the actor remain still when two opposing keys are pressed at the same time. It works even if the window isn't focused, which can be annoying for a regular application but useful in full-screen. It does not work for fast presses if the game loop is lagging, because then you need an input queue to catch events starting and ending between two updates. X-Lib (Not for Windows nor Raspbian) For most operating-systems, X-Lib allow getting key presses using a message queue. Most X-Lib examples are terribly outdated, but there's official documentation and open source web browsers that explain how it works in code comments. I found X-Lib much easier to use than SDL because there's no third party dependencies. If you only want key up and down events, you must find pairs of key-up and key-down events with identical time-stamps to remove (comes from the operating system's repeated keys). OS specific calls can give functionality similar to getAsyncKeyState, but the behaviour can be roughly simulated on top of input queues by setting a flag to true when pressed down and false when lifted.
  3. Back in 2004 when I got tired of writing the same types of games over and over again, I made a crude application with colored lines on a black background for fast prototyping to explore the options of game mechanics quicker. I learned how to write physics simulation in a more reusable way by not getting stuck with game specific limitations. Eventually became a physics sandbox where challenges could be created. People liked playing around with it more than my actual games, so I decided to do a remake with 3D graphics that people liked even more. It wouldn't hurt to put some extra effort in making rapid development tools available to players and modders.
  4. Dawoodoz

    Story feedback

    "The Sky Realm is a world where only gods live. People have worshipped them for generations as they are responsible for answering people’s prayers and giving them blessings for their happiness and wellbeing." This description of blessings and happiness sounds too pacifist for warmongering polytheism. Spice it up with ritualistic sacrifice or something more unique with a divine metaphor. "the Olympus trophy" Avoid direct references to anything outside of your fantasy realm. This has a huge affect on the theme and is the most difficult part on writing pure fantasy without a basis in alternative history to explain the language's origin. Words like "thug" from Hindi's "thuggee" would be okay thou, because that kind of word could appear from a translation of a similar word. "teleport to places without the need of electricity" This breaks the timeless feeling by using modern words. Using words like "portals" and "energy" would be okay for ancient fantasy, as if they always had the technology before us. "the Orchard High School" High School is a modern American concept. "they get sucked right into a dimension" A dimension is a vector along time/space in which one travels, an approximation of direction from temporal/spatial connectivity in a relatively coherent time-space fabric. You can say "another realm" or simply avoid using words for it in the final prose. I'm used to critique whole novels for aspiring authors, so just pick something that sounds interesting to start with. * Motivations allow the reader to relate with a character by knowing that they would do the same in their situation. Find all your actions and figure out the "why". If you can't find a motivation, skip the action. * You need to test the prose of your characters because that's the main content of the final script. Just a short example dialogue will give a sense of how they speak, where they are from and who they are. Note that prose for the opposite sex is difficult even for professional authors. * Standard three-arc stories has a low-point before they struggle up to success, but there's also riches-to-rags and other styles. Being completely flat without progress will not evoke any emotion, but might work for a grinding arcade game. Rags-to-riches is the story arc of RPGs by getting stronger. Being constantly at the bottom with contrast too much with game-play like in Max Payne 3. * Get inside your characters heads and find out what drives the conflict. Everyone sees themselves as the good guy until they are forced to fight for survival. I'd start with the 16 personality types and then move into loyalty, empathy, sympathy, ethics and moral. * It doesn't really feel like fantasy without at least one ethical dilemma that would never happen in our world. The choices here feels like picking a mystery box at a lottery show instead of having something to reason about. * You need to read more about old myths and religions to get inspiration directly from the source without worn out popular concepts. Athena is probably the most worn out concept right now and there are many ancient countries with equally interesting folklore to use for inspiration or base on directly.
  5. The last game company I went on interview with just had some "chill dude" who paid for everything. They just had to follow his lead in every way without complaining about him recruiting people based on looks rather than skills.
  6. If you try writing a full compiler with templates and class inheritance, you will understand the paradox I already mentioned about the corner cases you didn't cover. End of discussion.
  7. Sorry, but I'm not discussing best practices of C++ and you simply stated that all use of this should be implicit, which is not the requested feature of Python developers. I tried to explain why explicit this would be a bad design in a language that heavily uses templates, because then you would need to be explicit about template members as well for consistency. Template arguments are compile-time variables by the mathematical definition of having multiple possible values, even if they never reach the final binary.
  8. I'd just map a Lambda or something like I do with octrees, but fair enough if you have a safer alternative.
  9. Linked lists are obsolete because they: * Create serial dependencies instead of using multiple memory loads at the same time. * Fragment the cache with pointers possibly larger than the element itself. * Create cache misses when iterating over all the elements, because each element is a heap allocation on an unspecified memory location and the cache predictor wants linear order. * Are difficult to split into multi-threaded workers. * Are many times slower than arrays for the common uses no matter the size. The creator of C++ had an in depth presentation about how linked lists have become horribly slow. https://www.youtube.com/watch?v=YQs6IC-vgmo Iterators lost their original design purpose because of linked lists They are an abstract interface for handling collections without knowing if it's a linked list or array under the hood. With linked lists out of the picture, you might as well specialize for the case of consistent memory blocks and make faster and safer abstraction layers. The main problem with iterators is that they are essentially just pointers, but not the modern ones that have reference counting, have zero-overhead safety features, or iterate in strides of many elements for SIMD operations. I might be missing some favorite feature of yours, but from my perspective it's not worth the risks posed by using two raw pointers like that, the cost of porting between languages, and the learning curve for new C++ developers. Regarding std::vector, it's possible that you compiler's implementation used calloc instead of malloc and memset, which is faster by not fetching garbage data into the cache.
  10. C++ is a long term language for huge projects If C++ somehow added all those high-level features into the standard library, there would be even more legacy to maintain until C++ has to break backward compatibility or die. If you want a fresh start, there are many competing languages with a better balance of safety, speed and readability, but their elegance comes at the cost of being forgotten when the next shiny language arrives with adaptations for the next hardware or abstract platform. STD is already bloated and outdated The C++ standard collections belong to a museum by having older parts optimized for single-core computers with small but fast memory that's insignificant compared to computation. Today we have huge but slow memory with fast computation and using a linked list as a default container is like a bad joke about cache misses. This obsoletes iterators and the whole system that relies on them. Third-party libraries can be changed with every new project, adapt for custom needs using operand overloads and take advantage of the latest hardware using SIMD extensions and GPU features.
  11. In the CPython reference implementation, each atomic integer is an independent object with a pointer to the type definition. This is how the language can execute without static type safety, but also makes it thousands of times slower compared to hand optimized assembly. The way you're supposed to use Python is to let another language do the heavy lifting. This takes away the major bottleneck and reduces the number of virtual instructions being executed in the huge switch statement running CPython. * If you work mostly with low resolutions and are fine with fixed functions, take a look at OpenCV which is made for computer vision but also useful for graphical effects and AI. It comes with the ability to load and execute deep learning models from popular frameworks. * If you want more performance and the ability to write own image filters, use a framework based on OpenCL. The overhead of Python will be insignificant if you give the GPU a heavy workload. OpenCL is a highly advanced library even for senior professionals, so look for a user friendly abstractions that fit your use case. * If you want more speed without messing around with libraries, you can also look at other high-level languages that are compiled instead of interpreted. Static type safety may feel like a burden at first but it reduces the time spent on debugging when you catch errors earlier. * If you don't mind going overkill while learning, you can learn SIMD intrinsics for C/C++ and get a 10000X performance boost without GPU dependencies.
  12. Since you're a co-owner of a software start-up: * Don't take in volunteers for anything else than fixing bugs. Training them costs time and they will leave when the fun part is over. * Don't hire too many, because productivity goes down quickly with version conflicts, poor communication and middle management. Focus on a core team of multi-talented developers that have a skill for each part of the development cycle. * Don't ask them if everything's fine before giving an anonymous channel for constructive feedback. Don't give leading yes/no questions. Ask what the biggest concern is. Otherwise they will say the polite standard phrase and hide their frustration until resigning. * Don't take the fun tasks yourself. Give them to new developers as a welcome gift that leaves a good first impression. * Don't be biased when hiring. It gives a bad reputation and increases initial salary demands. * Don't post jobs unless you're sure that you'll hire someone. Each interview costs money so make up your mind quickly. * Don't hire people with too many big companies on their resume. They seek prestige and are a bad influence for juniors. * Don't sell a feature before asking RnD if it's possible to make. * Never hire a boss who isn't educated in leadership. Train bosses ahead of time and stop hiring juniors if there's not enough seniors to guide them. I said what?
  13. I've been through all of that. (1) Did some free work for a student group that slowly turned into a real cult tracking down blasphemers. (2) The student group forced every global function to allocate and free an object on the heap for no reason. Didn't even use static functions, so memory leaks and crashes were everywhere. (3) Most jobs I don't apply to require having learned some crap library that I've made better versions of myself. (4) During my job interviews with Electronic Arts, they pretty much warned me that it was a churn and most people couldn't handle the stress there. (5) Some C++ programmers really do say bro a lot. Ask them why something's dangerous in their framework even thou safety would have zero overhead, then it's a trap left on purpose to intentionally scare off noobs (the rest of the company). (6) Some developers are so eager to reuse every line of code that they introduce hundreds of dependencies across modules so that a change anywhere breaks everything.
  14. Dawoodoz


    The overall geometry is a good start, but could need more details using pre-designed instances. Different materials between floor and walls would give a sense of direction. Lights in different colors can create the sense of being a closed or open space using blue and yellow tints.
  15. Dawoodoz


    Looks like there's a T crossing between triangles causing a seam to the left. This can be solved by subdividing the edge that has a crossing corner in the neighboring surface. Always go edge to edge and corner to corner when designing geometry, so that positions can be rounded to sub-pixel integer coordinates in the hardware's triangle rasterization algorithm.
  • Advertisement

Important Information

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

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!