Jump to content
  • Advertisement

SillyCow

Member
  • Content Count

    469
  • Joined

  • Last visited

Community Reputation

1517 Excellent

1 Follower

About SillyCow

  • Rank
    Member

Personal Information

  • Role
    Programmer
  • Interests
    Programming

Recent Profile Visitors

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

  1. Hello, Gutten Tag! This sounds interesting. I am a developer based in Europe, and I am experienced in programming browser based multimedia projects. I would be happy to discuss this with you. My questions: Is this game free? ( I noticed you said it was not intended to make money) If it is free, would you be willing to make it opensource (it would be easier to get people to work on it) Is it a desktop game? (Browser games for mobiles are much harder to make) Is it multiplayer? Is it real time? (how long is a turn?) Is it massively multiplayer? is it a single persistent universe, or is it made up of separate game rooms? Would you need a sophisticated lobby? How many people are currently working on this game, and how did you start? Are you friends? Are you students? Are you all located in the same city/country?
  2. SillyCow

    What do game testers learn?

    I have encountered some really good testers in my non-games jobs. A good tester was really helpful to the team. I have also seen them advance through the ranks. The best testers I've known went beyond the testing script that they got: * They spoke to customers ( they learned customer relations / focus groups ) * They insisted on testing in better "field conditions" (they improved the testing scripts) * They got involved to the point where they were given outside tasks (they learned the company they were working in, and network themselves) I've seen testers transition to other jobs such as: Developers Operational Officers Salespeople / Marketing / PR Testing managers That said, if you are allready sure you want to be any of these thing, just go ahead and start learning them. It will be quicker. But if you are not sure what you want, the barrier for entry as a tester is lower. So it is a good job to get exposed to the industry. Although I probably wouldn't recommend a full on degree in S/W testing. It should be an entry level job.
  3. SillyCow

    How do you build your learning roadmap?

    I try to learn at least one new thing with every project that I start. It can be a new language (golang), tool(kubernetes), platform(oculus rift) or algorithm(pathfinding) . (The above list is a collection of things from my last 4 projects) I learn through making a prototype. I am usually guided by step by step internet tutorials. I would say that the thing that sets game programmers from other programmers is interactivity. Your design needs to be user facing with all that that entails.
  4. SillyCow

    What are you working on?

    I am developing an Oculus Rift game with free roaming mechanics. I am developing a "nausea free" locomotion system which will enable an open world game shooter game. ( Far Cry X play style ). Of course, since this is a hobby game, it will all be low poly graphics, and no epic story. Still the prototype is already really fun to play!
  5. SillyCow

    How to avoid bugs

    My philosophy is: "Bugs will happen, so make sure you mitigate them". Make each bug as easy as possible to detect and find. Write automatic System Tests. (ex: Write an automatic test for the AI to play your game) Make sure you have satisfactory code coverage Make small commits, so that you can later browse through them and see which one introduced the bug. Try not to use untyped languages or data. Python, Javascript, etc... will ensure that you will only find bugs at run time. When using C++ try to avoid using pointers whenever possible: Can a function use a const reference instead? Can I use a smart-pointer without hurting performance too much? This pays off 100x when you are multi threading Make sure you use logging as much as possible (when it doesn't cause performance problems). That way you can investigate a sporadic bug when it happens. Make sure you have the option for IDE debugging. (this can sometimes require defensive coding, as not all languages are IDE friendly) Write small functions: If a function does not fit on a screen, you should probably break it down. That way, bugs remain contained etc... Basically: Bugs will happen. You cannot do much against that, However, just make sure that you have favourable conditions to: 1. Understand that you have a bug as soon as possible 2. Isolate the bug (find out what is causing the bug and what is effected by it ) 3. Have the right tools to fix it quickly.
  6. I would consider working for equity under the following conditions: 1. I am very passionate about the company's tech 2. I get a unique opportunity to further my career: (like getting VP status very early in my career) 3. I believe the company has a sound buisness plan: More likely to go for a sure million than a longshot billion. When it comes to making games 1 is easy, but 2 and 3 are hard.
  7. SillyCow

    How to avoid bugs

    For me it's automatic regression tests with ample code coverage. I find system tests do the job better than unit tests here. My most complicated hobby project to date was a multiplayer RTS game. There are lot's of bugs that can cause the game to go out of synch. So I created a test where 2 bots played eachother automatically for every build that I made: This was a complete end to end test: There were actually 2 separate instances of the program playing eachother over the network.All of this was launched automatically, so it was painless for me to test. It took me several days to set this up. But, It helped me catch 75% of my bugs. In a hobby game this is specifically important because bugs demotivate you.
  8. Sometimes I enjoy grinding. Why would you want to remove it? Instead of punishing the grinder, reward the "brave" player! Add a mechanic where if you slay an advanced monster/complete an advanced dungeon you get some special reward. For example: If I kill a dragon at level 50 I get the usual reward loot. But if I kill the dragon at level 10, then the king rewards me with a special artefact for my valour. Maybe it even unlocks some part of the story. Maybe you can even add a "level down" mechanic (drinking alcohol in a pub 🙂 ) to allow players to level back down to make the game interesting again. Could be interesting to level up to get certain traits, and then level down to start earning new traits instead. Or to elaborate on your "getting harder" idea: Make the player a fugitive: The longer they stay in one place, the more run ins they will have with "the law" or the assassins chasing them.
  9. Actually, assuming a single screen game/app it is usually usefull to select one dominant axis as 1.0 and scale the other according to the aspect ratio. Otherwise your image will get stretched.
  10. If your game doesn't scroll, I would recommend making the top left corner (0,0) with sizes increasing towards the bottom right. This is inline with how popular image files are encoded. (I assume you will be loading sprites from PNG or JPG files...) If you are making a scrolling game (Mario), it doesn't really matter. The center of the screen is as good an origin as anything. PS: I wouldn't spend too much time thinking about it, just start drawing stuff and see what happens. Eventually you can make any coordinate system work. Just start try *something* and see if it works for you. (More important to start prototyping and gain some experience). Even if you end up making a mistake, you will have more tools to understand it.
  11. First you need to decide what kind of 2d game you want to have. I usually normalise my coordinates to one of two things: If it's a single screen game (no scrolling) I usually chose one of the axis of the screen (usualy width) as 1.0 . This is useful when you do GUI work: Menus, buttons,etc.. (ex: Card games ) If it's a scrolling tile based game, I usually normalise to tile size: 1 tile = 1.0 x 1.0 (ex: Strategy games / Platformers) It doesn't really matter how you normalise your coordinates, but it's useful to normalise them to something meaningful to your game. (in anything with physics I usually use 1.0 = 1 meter)
  12. Good C++ is always faster than good C# or Java. However the point I was trying to make about game engines is that even if you write your game logic in C#, it is very rare for most of your execution time to be gamelogic. And the actual engine core code is usually written in C++. Compare this to the mobile browser wars of earlier this decade: Android always boasted a faster JavaScript engine than iOS. Yet mobile Safari allways blew it away in terms of performance. Why? Because when dealing with multimedia web-sites, Javascript was rarely the performance bottleneck. It was the browser's rendering engine which was doing all the heavy lifting. Game engine performance tends to work in much the same way. However, if you are one of the rare few doing cutting edge CPU work on your game, then you should be using C++. It's not about "no heap allocation whatsoever". But rather trying not to do any real time heap allocations. Try not to call "new/malloc" when your game is running. If you are using C++ try not to call "delete/free" when your game is running. Just preallocate as much as you can at the beginning and recycle it as much as you can. For ex: I wrote a rather complex pathfinding algorithm for an RTS. The performance more than doubled if I "recycled" my memory structures when I was done with them. So subsequent calls would just reinitialise the memory structures from the previous calls.
  13. If it's only the GC that's bothering you, you can circumvent this problem by not using the "new" keyword too often and recycling your classes. Using "new" in C++ isn't such a great idea either because it will lead to alot memory fragmentation. I tend to try and avoid heap memory allocation in real time games altogether. In unity's C# for example "new Vector3" does not create a reference. You are completely right. But what kind of game are you making (and on what hardware?) where this is a real performance issue? Today's smartphones are powerful enough to overcome most of this. And the really core performance code in engines is written in C++ anyway. Whether you are using Unity or Unreal, both engines' core functions are not written in a scripting language. While you might be coding for some extremely low spec device, I doubt any of the engines target such devices so I assume you are talking about smartphones here. And with smartphones, it's usually the GPU's fragment shaders that set the performance bottleneck. With CPUs, unless you are writing your own physics, or some really fancy AI I doubt any of this would matter. Unless you are note optimising your code (making too many real time memory allocations and such). But you can write bad code in any language...
  14. The best code completion and refactoring tools for the other popular languages. (Javascript[webstorm] ,Python[pycharm] ,C++[visual-assist] ,etc...) do not come close to what you get for C# and Java. In C# and Java I sometimes create whole classes and interfaces just by using automatic refactoring tools. In C++ for example refactoring doesn't yield the same trusted result, and usually fails for all but the most trivial refactoring tasks. Same goes for auto completion. I think that the preprocessor is to blame for this. And many engines make heavy use of preprocessor directives.
  15. This is your problem, not Godot's. I don't want to sound mean but if you're having trouble with Godot's scripting language then you aren't going to have a fun time with any engine. One of the great things with unity (when you use it with Visual Studio) is the great intellisense support. I rarely have to lookup an API on the internet. It's usually all there when I press "Ctrl + Space". This is one of the reasons I prefer C# (Unity) to other scripting languages (C++ [unreal] or custom languages ). C# is great for IDE functions, and therefore easier to learn (While I am a good C# programmer, I don't necessarily remember all of Unity's specific API funtions) This is an example of a "good" language property of C# and Java compared to other languages: They are much more "well defined" and thus easier for an IDE to parse. Therefore, you can get the IDE to analyse your code for you, and even write code for you (automatic method creation and extraction). They will always win in this regard compared to Javascript/Python/C++ . The number of times I have to open a browser and google something when I work with Unreal is much larger, because C++ is harder for the IDE to parse.
  • 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!