[QUOTE=Fourier;50126717]still, if all you have on table is monthly pay, then don't drop out. If you want money, then just find something simple, so you can have 300€.. if you live with parents, that should be more than enough for anything.. weed, alcohol, gaming pc (over months), sport, w/e[/QUOTE]
Money isn't the issue for me. I can pay my bills either way. The issue is that I am thinking about what's more valuable, the 3 years of experience in the industry, as a Unity C# programmer working with a bunch of cool indies, and then maybe progress into something even cooler. Or the 3 years I have left here, of which 1 year is an internship, to get a piece of paper that says I'm a certified AAA-ready developer for consoles and PC. And then get a job somewhere abroad maybe?
Here's my (incomplete) ES6 Promise implementation for my JS runtime, it's backed by a thread pool, so promises complete asynchronously (really, unlike node's).
[cpp]const Promise = (function() {
const resolveValueKey = Symbol(), rejectValueKey = Symbol(),
subscribersKey = Symbol(), broadcastResolveKey = Symbol(),
broadcastRejectKey = Symbol(), taskKey = Symbol();
return class Promise {
constructor(executor) {
if (typeof executor !== 'function') throw new TypeError('not a function');
this[subscribersKey] = [];
const broadcastResolve = this[broadcastResolveKey] = function(value) {
if (value === this)
throw new TypeError('A promise cannot be resolved with itself.');
this[resolveValueKey] = value;
this[subscribersKey].forEach(({ resolve, reject, promise }) => {
if (resolve) {
promise[taskKey] = Scheduler.schedule(function() {
promise[broadcastResolveKey](resolve(value));
});
}
});
};
const broadcastReject = this[broadcastRejectKey] = function(value) {
this[rejectValueKey] = value;
this[subscribersKey].forEach(({ resolve, reject, promise }) => {
if (reject) {
promise[taskKey] = Scheduler.schedule(function() {
promise[broadcastRejectKey](value);
promise[broadcastResolveKey](reject(value));
});
}
});
};
this[taskKey] = Scheduler.schedule(
executor.bind(null, broadcastResolve.bind(this), broadcastReject.bind(this))
);
}
then(resolve, reject) {
if (this[resolveValueKey] || this[rejectValueKey])
{
if (this[resolveValueKey] && resolve) {
return Promise.resolve(this[resolveValueKey]).then(resolve);
} else if (this[rejectValueKey] && reject) {
return Promise.reject(this[rejectValueKey]).then(reject);
} else {
return Promise.reject(new TypeError("invalid arguments"));
}
} else {
const promise = new Promise(function() {});
this[subscribersKey].push({ resolve, reject, promise });
return promise;
}
}
catch(handler) {
return this.then(undefined, handler);
}
static resolve(value) {
return new Promise((resolve, reject) => resolve(value));
}
static reject(value) {
return new Promise((resolve, reject) => reject(value));
}
static all(collection) {
}
static race(collection) {
}
}
})();
Console.log("starting");
const test = new Promise((resolve, reject) => reject(new Error('test')));
test.then(v => Console.log(`Then (1): ${v}`));
test.then(v => { Console.log(`Then (2): ${v}`); return "test1!!"; }).then(test => Console.log(test));
test.catch(e => { Console.log(`Catch (1): ${e}`); return 'bozo'; }).then(bozo => Console.log(bozo));
[/cpp]
Here's the output:
[code]
starting
Catch (1): Error: test
bozo
[/code]
I decided to make breaking changes to the API interface, now all globals are capitalized. I'm breaking off from Node.js completely. (bad move, I know, but I don't want people assuming that it'll be compatible to begin with)
[editline]14th April 2016[/editline]
I'm not even sure how my code works btw.
Okay, I'm reverting console back to lower case. It's annoying as hell having to capitalize it every time.
Edit:
Woohoooo! Promises are executing in parallel on all cores:
[IMG]https://dl.dropboxusercontent.com/u/27714141/Screenshot%20from%202016-04-14%2013-13-24.png[/IMG]
This is evident because the execution order is different every run.
Is there any kind of standard library/framework for writing C# based game servers?
Specifically for the likes of small (in amount of players), concurrent, action based games e.g. Rust, Most FPS games... And not standard RESTful based game servers
[QUOTE=Richy19;50130011][...] RESTful [...][/QUOTE]
On that note, what even is this? I keep hearing the term but I've never seen a good definition.
[QUOTE=Richy19;50130011]Is there any kind of standard library/framework for writing C# based game servers?
Specifically for the likes of small (in amount of players), concurrent, action based games e.g. Rust, Most FPS games... And not standard RESTful based game servers[/QUOTE]
Are you making your own game in C# or are you using Unity?
[QUOTE=Tamschi;50130118]On that note, what even is this? I keep hearing the term but I've never seen a good definition.[/QUOTE]
AFAIK 90% of definitions I hear about RESTful API's are bullshit.
My understanding is a RESTful API correctly uses HTTP verbs for certain actions (e.g. a get request should never add or modify data on the server) and the hierarchy of your URI should make sense (e.g. \type\identifier, like \users\protocol7 or some such.)
I'm probably wrong, but that's my understanding of it. I know they pretty much 100% apply to web APIs so I'm really not sure how a game server can be RESTful unless it's a turn based game that's built off a play-by-email sort of server.
[QUOTE=AtomiCal;50130157]Are you making your own game in C# or are you using Unity?[/QUOTE]
Ideally it would not be tied to any game engine, but I guess realistically it would be using Unity as the client. I am not making a game, but I wanted to know if there was already such a thing or if it could make a nice side project for me
[QUOTE=Richy19;50130359]Ideally it would not be tied to any game engine, but I guess realistically it would be using Unity as the client. I am not making a game, but I wanted to know if there was already such a thing or if it could make a nice side project for me[/QUOTE]
Unity has a pretty nice [URL="http://docs.unity3d.com/Manual/UNetOverview.html"]network solution[/URL] in place now if you want to make something work out of the box.
Unity also has some other network plugins on the asset store like [URL="https://www.photonengine.com/en/PUN"]Photon[/URL].
If you want to use something else and go more low level, you can use System.Net in C#.
Networking is a really broad and general concept and there are no "all in one" solutions.
It all depends on what you are making and what you want to do. You learn a lot by doing the dirty work of writing and parsing the packets yourself.
[QUOTE=AtomiCal;50130440]Unity has a pretty nice [URL="http://docs.unity3d.com/Manual/UNetOverview.html"]network solution[/URL] in place now if you want to make something work out of the box.
Unity also has some other network plugins on the asset store like [URL="https://www.photonengine.com/en/PUN"]Photon[/URL].
If you want to use something else and go more low level, you can use System.Net in C#.
Networking is a really broad and general concept and there are no "all in one" solutions.
It all depends on what you are making and what you want to do. You learn a lot by doing the dirty work of writing and parsing the packets yourself.[/QUOTE]
Although writing and parsing packets definitely isn't where the difficulty comes from. It's about load balancing, creating solutions, different servers, scalability, security.
If you want to make a Unity game, see if you can use the HLAPI. If you can't, maybe take a look at the LLAPI or Photon as AtomiCal suggested.
[QUOTE=AtomiCal;50130440]Unity has a pretty nice [URL="http://docs.unity3d.com/Manual/UNetOverview.html"]network solution[/URL] in place now if you want to make something work out of the box.
Unity also has some other network plugins on the asset store like [URL="https://www.photonengine.com/en/PUN"]Photon[/URL].
If you want to use something else and go more low level, you can use System.Net in C#.
Networking is a really broad and general concept and there are no "all in one" solutions.
It all depends on what you are making and what you want to do. You learn a lot by doing the dirty work of writing and parsing the packets yourself.[/QUOTE]
My thoughts if I were to do this from scratch would be to use Lidgren, I am guessing the Unity built in networking stuff isnt decoupled to the point where you can use it outside of unity?
[QUOTE=Richy19;50130449]My thoughts if I were to do this from scratch would be to use Lidgren, I am guessing the Unity built in networking stuff isnt decoupled to the point where you can use it outside of unity?[/QUOTE]
I have never tried it before but you can maybe just use UnityEngine.dll and UnityEngine.Networking.dll in your own standalone application?
I'm 40% sure there's some sense in what I'm saying but can someone correct me if I'm wrong?
[QUOTE=AtomiCal;50130498]I have never tried it before but you can maybe just use UnityEngine.dll and UnityEngine.Networking.dll in your own standalone application?
I'm 40% sure there's some sense in what I'm saying but can someone correct me if I'm wrong?[/QUOTE]
I dont know where the networking stuff is located, but you certainly can use those DLLs when compiling your C# code to a DLL for use in unity rather than using plain scripts
[QUOTE=Tamschi;50130118]On that note, what even is this? I keep hearing the term but I've never seen a good definition.[/QUOTE]
The acronym [b]REST[/b] stands for [b]Re[/b]presentational [b]S[/b]tate [b]T[/b]ransfer. No idea what it's supposed to mean though.
The basic concept is this: the entire basis of the system resides on "Resources." You can perform actions on these resources. For example, for a forum, you might have "boards," "threads," and "posts." REST says that each of these things should have their own set of URLs for managing each. For example, if you wanted to make a list of all posts, the URL for that would be "[i]/posts[/i]". REST also says that you use HTTP verbs for managing these resources. For example, to manage posts, you might have these URLs:
[code]
GET /posts
GET /posts/:id
POST /posts
PUT /posts/:id
DELETE /posts/:id
[/code]
This is REST, and this is what a RESTful API is.
[QUOTE=proboardslol;50127920]IT[/QUOTE]
There's your problem; IT is not CS.
[QUOTE=Asgard;50129456]Money isn't the issue for me. I can pay my bills either way. The issue is that I am thinking about what's more valuable, the 3 years of experience in the industry, as a Unity C# programmer working with a bunch of cool indies, and then maybe progress into something even cooler. Or the 3 years I have left here, of which 1 year is an internship, to get a piece of paper that says I'm a certified AAA-ready developer for consoles and PC. And then get a job somewhere abroad maybe?[/QUOTE]
No offense, but if you program snake games for 3 years then it doesn't means you are AAA-ready developer.
I'd say - do both, study and in spare time, work. You don't need to be hired for full time.
[QUOTE=Fourier;50131016]No offense, but if you program snake games for 3 years then it doesn't means you are AAA-ready developer.
I'd say - do both, study and in spare time, work. You don't need to be hired for full time.[/QUOTE]
Well we're not programming Snake games :v: But thanks, I might look into if that's possible
[QUOTE=Fourier;50131016]No offense, but if you program snake games for 3 years then it doesn't means you are AAA-ready developer.
I'd say - do both, study and in spare time, work. You don't need to be hired for full time.[/QUOTE]
I've never seen Part-Time programming work outside of contract work. (I haven't looked very hard though) I didn't think it existed.
Doesn't help that I'm in the least technical area of Canada as well...
[QUOTE=Janooba;50131205]I've never seen Part-Time programming work outside of contract work. (I haven't looked very hard though) I didn't think it existed.
Doesn't help that I'm in the least technical area of Canada as well...[/QUOTE]
If it's any reassurance, in the UK I just found a part time backend webdev job. I didn't think part-time software-creation-related jobs existed either, until I found this one. So maybe they're just rare? The company I've been hired by is extremely small (literally 3 people, expanding to 6) - it might be that part-time development work is more suited to smaller businesses, so you could try honing your searches a little :)
At least for uni students, it's pretty typical to intern part time during the school year, doing 10-20 hours / week
Is there a definitive spec for ES6's module loader object (System)? I've been trying to find it everywhere.
Going to a university that use methods used in real companies helps [B]a lot[/B]. (I think it's called vocational university??? idk I'm from Sweden). They often have contact with large companies within the industry, which makes finding internship positions easier.
I'm doing my 6 month unpaid internship at a AAA video game company [sp]EA DICE[/sp] as a part of the education, which is 2 years in total.
[QUOTE=Anven11;50131430]Going to a university that use methods used in real companies helps [B]a lot[/B]. (I think it's called vocational university??? idk I'm from Sweden). They often have contact with large companies within the industry, which makes finding internship positions easier.
I'm doing my 6 month unpaid internship at a AAA video game company [sp]EA DICE[/sp] as a part of the education, which is 2 years in total.[/QUOTE]
Definitely. Our school has a contract with Sony, so we have the option to work on PS4 dev kits. We also have some WiiU dev kits. So overall, it's a great way to step into being a console dev.
[QUOTE=Ac!dL3ak;50130785]The acronym [b]REST[/b] stands for [b]Re[/b]presentational [b]S[/b]tate [b]T[/b]ransfer. No idea what it's supposed to mean though.
The basic concept is this: the entire basis of the system resides on "Resources." You can perform actions on these resources. For example, for a forum, you might have "boards," "threads," and "posts." REST says that each of these things should have their own set of URLs for managing each. For example, if you wanted to make a list of all posts, the URL for that would be "[i]/posts[/i]". REST also says that you use HTTP verbs for managing these resources. For example, to manage posts, you might have these URLs:
[code]
GET /posts
GET /posts/:id
POST /posts
PUT /posts/:id
DELETE /posts/:id
[/code]
This is REST, and this is what a RESTful API is.[/QUOTE]
So essentially it's trying to build a sane system on top of an extremely inefficient legacy platform (that happens to be only marginally more easy to support than some binary equivalent, and that not even in all cases)? Got it.
I've uploaded the source code to [URL="https://github.com/voodooattack/nexusjs"]GitHub[/URL], if you feel inclined to experiment with it.
I don't know why so many people are angry at me for writing this code. I've never been assaulted with so much hate for writing a program before.
[QUOTE=Tamschi;50131592]So essentially it's trying to build a sane system on top of an extremely inefficient legacy platform (that happens to be only marginally more easy to support than some binary equivalent, and that not even in all cases)? Got it.[/QUOTE]
It's actually a pretty smart system if implemented well, it's the "implemented well" part that people tend to ignore.
Won 3rd place at my community college stem fair for my modem project. Shout out to ma nigga fourier who helped me figure out how the fuck to measure frequency of a discrete time wave
I'm making something for a currently secret project of mine, but it seems useful in general so I'd like to hear your opinion. Do you think that [code]// C#
class Notable : INotable
{
public int A { get; set; } = 1;
public float B { get; set; } = 2;
private char c = 'c';
private Embedded e = new Embedded() { E = 5 };
public int RestoreCount { get; private set; } = 0;
public NoteFormat NoteFormat
=> new MemberFormat<Notable>(
"Notable",
() => A,
() => B,
() => c,
() => e.E,
() => RestoreCount)
{
Initializer = @this => @this.e = new Embedded(),
Finisher = @this => @this.RestoreCount++
};
}[/code] is a good and/or intuitive format for a class serialisation descriptor? Can you think of a way to make it better?
[editline]edit[/editline] Updated the sample code slightly.
[vid]http://51.254.129.74/~anon/files/rec_1880654259.webm[/vid]
Animated sprites, game console using my [URL="https://github.com/cartman300/SFMLTextBuffer"]SFML text buffers[/URL] and commands implemented using attributes
[IMG]http://51.254.129.74/~anon/files/1460659625.png[/IMG]