Jump to content
  • Advertisement

Greedy Goblin

  • Content Count

  • Joined

  • Last visited

  • Days Won


Greedy Goblin last won the day on October 6

Greedy Goblin had the most liked content!

Community Reputation

17 Neutral

1 Follower

About Greedy Goblin

  • Rank

Personal Information

Recent Profile Visitors

1021 profile views
  1. Greedy Goblin

    Decent online resources for maths refreshers

    Thanks for that 1024! I'd never heard of that site before. Will check it out later after work.
  2. Admittedly my algebra skills are pretty darn poor. Never were particularly great either but I do remember really enjoying solving quadratics at school (a long long time ago). Does anyone know of any decent free online resources to "skill up" a little? Nothing serious, it doesn't need to be an online course as such, no qualifications required (managed to do alright without anything but basic maths skills most of my life) but it would be nice to improve a little at least.
  3. Just a hunch but I'm guessing we may be waiting indefinitely before seeing any evidence of work from Fulcrum.
  4. Greedy Goblin

    Reverse-Normal 3d Outline Tutorial

    That's awesome! Nice tip.
  5. No, and no it is not necessarily (depending on your field). Having been a programmer/analyst/consultant for more than 20 years there's probably only a handful of times I've ever needed to employ any above basic mathematical skills. I have no maths qualifications apart from a fairly worthless GCSE (UK high school qualification). It seems your real-world experience is somewhat limited and niche. For sure, high level mathematical skills are required for certain domains (I would imagine graphics research is pretty tough without it), but having worked as a C# .NET developer a few years back for a company that develops finance calculators for the automotive industry (and hence being regulated by the FA) I can say for a fact that in the UK a degree/masters in the field of mathematics is not required. I have worked with many highly qualified people who make absolutely crap programmers (and often had to optimise their code!). You remind me of a guy I used to work with many years ago (developing a Dealer Management System for SAP, which later got bought out by SAP and became the SAP VMS module) who had a masters in pure mathematics.... he was a fairly average programmer who knew less about programming in that particular language than I did. I remember one lunch time we decided to challenge each other to write a Sudoku solver. Despite his background in maths he chose to opt for a brute force approach, whereas I opted for a smarter algorithm based on rules. Both solutions worked I guess but considering his background I would have expected him to use it! So you really need to drop the arrogance of insisting that a qualification in maths is essential to being a programmer or game dev. It is not. It can be helpful for sure, but not essential. I do agree with you on one point though and that is as the market becomes flooded with candidates then a qualification can become the only deciding factor for an employer. However, having said that and having been an employer and an interviewer in my time I can say that it takes more than qualifications alone to get you hired... personality goes a long way! I also agree with the others... it seems you are trolling this forum.
  6. It sounds pretty tough to be a software developer in Ukraine (if Fulcrum is to be believed). It's funny though. Fulcrum studied between 1995 - 2000 (mentioned in an earlier post) and insists that a degree/masters is essential to getting a job, yet I wonder how relevant that 20 year old knowledge is today? If its not possible to learn new subjects outside of a university (as Fulcrum seems to insist) then how does he/she keep their skills up to date?
  7. I think we should probably all agree to disagree. Obviously wherever Fulcrum is from things are vastly different to things in the UK, US and Europe. Out of pure fascination I would love to know where Fulcrum is from... simply so I know never to move there because I'd be unemployable! ๐Ÿ˜‚
  8. Not only arrogant but lazy too! ๐Ÿ˜œ (just a little joke, sorry, I couldn't resist)
  9. Blimey! What a thread! I wouldn't like to go to the pub with Fulcrum (no offense, I'm sure you are incredibly intelligent, but you do come across as a bit of an arrogant snob). Having been in the IT industry for over 20 years, been self-employed for 10+ years, been offered jobs purely on the basis of my reputation with no need for an interview (even if I didn't have all the necessary skills) all without holding any sort of degree/masters, then you'll have to forgive me for finding it slightly amusing when someone claims that it's absolutely essential to be successful in your chosen field. Now I certainly don't claim to be a 'god-level' programmer (nor do I particularly care about being one) and maybe it's all very different wherever Fulcrum is from?? From my own personal experience I have found those who chase after perfection happen to be lumbering around a god size ego too and be somewhat unpleasant to work with. Software design/development is not about the individual, it is a collaborative, team based pursuit and true excellence can only be acheived through collaboration with others, whether that be in an academic or commercial environment. Academic research is essential for sure, I don't think anyone here would disagree with that, but for every programmer to attain that same level of qualification is not only impractical and unrealistic, it would ensure businesses would grind to a halt! Anyway, good luck to all in whatever career path they choose, however they go about it.
  10. Greedy Goblin

    Making Decisions In Text Adventures!

    If you're aim is more to write a text adventure and you're not so bothered about doing it in C# then I'd suggest looking at inform7.com as it enables creating interactive fiction in plain English (or close enough). I've used it myself and its actually pretty neat. You can even embed your IF in a Web page quite easily if you want.
  11. Greedy Goblin

    State Changes

    Games usually (if not always) require some way to manage state changes... and I'm sure most of you (if not all of you) know far more about State Machines than I do. And I'm certain that I could learn a heck of lot from reading up about the subject to build a state machine that works beautifully and makes my code look amazing etc etc. Pfft.. never mind all that... I'm building this game 'off the cuff' as it were, making it up as I go along and following the principle of 'I build what I need when I need it and only insofar that it adequately fulfils the requirements at that time'. I don't try to plan ahead (not in any granular sense anyway), I'm not building a reusable one-size-fits-all game engine, I'm not trying to make the code beautfiul, or win any awards or even make any money from the darn thing. It just needs to perform well enough for what I want it to do. So my immediate requirement is that I have a way to manage the player switching from walking to running to whatever. If I can use it elsewhere for other things then great... and I'll be honest, I do like reusable code so I tend to naturally sway toward that. What I'm trying to avoid is getting myself stuck in a rut, spending weeks/months deliberating over the smallest details because it's got to be 'perfect' and then realising I've still got 99.5% of the game to build! Quick and dirty is OK in my world. I often approach things from a top-down perspective. This boils down to: 'How do I want to instruct the computer to do x, y or z?' So for this particular requirement, how do I want to instruct the game that the player can change from walking to running and running to walking, or walking/running to falling (assuming I make that a player state - which I do), but not from sleeping to running for example? Hell, I don't even know all the states that I want yet, but these are the ones I have a feel for so far: Walking Running Skiiing Driving Falling Drowning Sleeping Eating Introducing 'When' I thought it might be nice to be able to write something like this in my player setup: // Configure valid player state transitions When( this.playerState ).changes().from( PLAYER_STATES.WALKING ).to( PLAYER_STATES.RUNNING ).then( function () { } ); When( this.playerState ).changes().from( PLAYER_STATES.RUNNING ).to( PLAYER_STATES.WALKING ).then( function () { } ); When( this.playerState ).changes().from( PLAYER_STATES.WALKING ).to( PLAYER_STATES.SKIING ).then( function () { } ); When( this.playerState ).changes().from( PLAYER_STATES.SKIING ).to( PLAYER_STATES.WALKING ).then( function () { } ); When( this.playerState ).changes().from( PLAYER_STATES.WALKING, PLAYER_STATES.RUNNING, PLAYER_STATES.SKIING ).to( PLAYER_STATES.FALLING ).then( function () { } ); There's probably a library for something like this out there, but heck, where's the fun in that?! So I create a new 'Stateful' object that represents a state (in this case the playerState) and it's allowed transitions and a 'When' function so I can write the code exactly as above: const Stateful = function () { } Stateful.isStateful = function ( obj ) { return obj.constructor && obj.constructor.name === Stateful.name; } Stateful.areEqual = function ( v1, v2 ) { return v1.equals ? v1.equals( v2 ) : v1 == v2; } Stateful.prototype = { constructor: Stateful, set: function ( v ) { let newState = typeof ( v ) === "function" ? new v() : v; for ( let i = 0; i < this.transitions.length; i++ ) { let transition = this.transitions[i]; if ( transition && typeof ( transition.callback ) === "function" ) { let fromMatch = Stateful.areEqual( transition.vFrom, this ); let toMatch = Stateful.areEqual( transition.vTo, newState ); if ( fromMatch && toMatch ) { // We can only change to the new state if a valid transition exists. this.previousState = Object.assign( Object.create( {} ), this ); Object.assign( this, newState ); transition.callback( this.previousState, this ); } } } }, transitions: Object.create( Object.assign( Array.prototype, { from: function ( vFrom ) { this.vFrom = typeof ( vFrom ) === "function" ? new vFrom() : vFrom; return this; }, to: function ( vTo ) { this.vTo = typeof ( vTo ) === "function" ? new vTo() : vTo; return this; }, remove: function ( fn ) { this.vFrom = this.vFrom === undefined ? { equals: function () { return true; } } : this.vFrom; this.vTo = this.vTo === undefined ? { equals: function () { return true; } } : this.vTo; for ( let i = 0; i < this.length; i++ ) { let transition = this[i]; let fromMatch = Stateful.areEqual( this.vFrom, transition.vFrom ); let toMatch = Stateful.areEqual( this.vTo, transition.vTo ); let fnMatch = fn === undefined ? true : transition.callback == fn; if ( fromMatch && toMatch & fnMatch ) { delete this[i]; } } } } ) ) } function When( statefulObj ) { if ( !Stateful.isStateful( statefulObj ) ) { throw "Argument must be a Stateful object"; } return { changes: function () { return { from: function ( ...vFrom ) { this.vFrom = vFrom; return this; }, to: function ( ...vTo ) { this.vTo = vTo; return this; }, then: function ( fn ) { if ( typeof ( fn ) === "function" ) { this.vFrom = this.vFrom === undefined ? [true] : this.vFrom; this.vTo = this.vTo === undefined ? [true] : this.vTo; for ( let i = 0; i < this.vFrom.length; i++ ) { for ( let j = 0; j < this.vTo.length; j++ ) { statefulObj.transitions.push( { vFrom: typeof ( this.vFrom[i] ) === "function" ? new this.vFrom[i]() : this.vFrom[i], vTo: typeof ( this.vTo[j] ) === "function" ? new this.vTo[j]() : this.vTo[j], callback: fn } ); } } } else { throw "Supplied argument must be a function"; } } }; } } } I drop the aforementioned 'When' statements into my Player setup and remove the old 'If' statements that were previously controlling changes between walking and running and insert the new playerState.set() calls where appropriate. e.g. "run": ( pc, keyup ) => { if ( keyup ) { _this.player.playerState.set( PLAYER_STATES.WALKING ); } else { _this.player.playerState.set( PLAYER_STATES.RUNNING ); } } And it seems to work! (Yes I was actually surprised by that) ๐Ÿ˜‚ TheBerg-StateChanges.mp4 p.s. I've switched to using Bandicam for screen capture as it seems far superior to what I was using previously.
  12. Greedy Goblin

    The Berg

  13. Greedy Goblin

    The Berg

    Album for The Berg
  14. Greedy Goblin

    Nighty Knight 3D [HTML5/Android/iOS] [FREE]

    To be honest, I was on my desktop PC at the time I checked it out so I couldn't play it properly as it doesn't appear to fully support keyboard controls... well, I couldn't use WASD to move anyway, the cursor keys seemed to allow me hack and slash a bit. I'll have to try it out on my mobile phone later.
  15. A code smell is not necessarily a bad piece of code, just something that needs further investigation in its own context if, like you say, the code is not performant or becoming bloated or overly complicated. That does not mean "if... is..." is necessarily wrong. My point was not to beat yourself up so much over your code quality. It's not healthy and very rarely helpful in my experience. If you have lots of If statements but your code is performing to your requirements and easy to read/maintain (which is of course subjective) then I fail to see what the problem is. Guides to writing good clean code are exactly that, guides, not some religious mandate (which is how some people seem to treat them). Thanks goodness I don't work in an environment like that any more. ๐Ÿ˜‚
  • 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!