Up-to-date setup instructions for a Windows development system?

Started by fernewelten, Mon 09/07/2018 11:15:53

Previous topic - Next topic

fernewelten

Hi folks,

I'm a computer scientist and former programmer (I've worked in a different profession in the last years). I've become interested in looking under the hood of the AGS system with the perspective of regularly dedicating/donating some development time in the mean term. I've got a Windows 10 system that I could use for this.

The first step would be to set up a working development system for AGS.

I've found this github project: https://github.com/adventuregamestudio/ags. From there, I was pointed to this thread.

However, starting to read this thread, I've got some grave misgivings whether its information is still up-to-date. It starts off by talking about Visual Studio 2008, and we are half-way through the year 2018 by now. Also, the source code described seems to be version-2, even referring in parts to the original Chris Jones code from 2011. And as far as I understand, even the current version 3.4.1 is on the brink of being heavily revised behind-the-scenes.

So, beginning with a machine that doesn't have anything installed over and above Notepad++, how do I get to a development system with all the necessary sources and libraries where I can press a button and half an hour later, a shiny compiled AGS drops out?

Crimson Wizard

This is... an unfortunate oversight that the forum thread is still mentioned there. That should be removed.
I also doubt the linked wiki page. That also seem outdated already, and frankly wiki on this site is rarely kept up-to-date, so I don't like to rely on it.
Real instructions are given in the Windows/README.md: https://github.com/adventuregamestudio/ags/blob/master/Windows/README.md
If you find anything incorrect or missing, README should be ammended.
We also have Wiki in github repository, which may be better place to keep extra information about working with the source code.


MSVS 2008 was used for a long time for some reasons, and still is for AGS 3.4.1.
For the future development ("master" and the top of "ags3" branch, which corresponds to 3.4.2 WIP version) we already switched to MSVS 2015, but you may also work in 2017 (and further, so long as they support 2015th projects). Community Edition should be sufficient.

For the reference, I recommend reading following ticket which explains the current split in development between ags3 and ags4 (master):
https://github.com/adventuregamestudio/ags/issues/448

Also, like I mentioned, we've got Wiki on github. Currently it has several pages explaining some internals of the engine: https://github.com/adventuregamestudio/ags/wiki

Crimson Wizard

Another important thing, if you do not like to spend time messing with libraries, here is a package containing all libraries prebuilt, for MSVS2008 and MSVS2015 separately:
https://www.dropbox.com/s/4p6nw6waqwat6co/ags-prebuilt-libs.zip?dl=0

fernewelten

Just a quick note:

I feel absolutely compelled to say how impressed I am by the support throughout the AGS forums and in particular right here. In less than a quarter of an hour after posting the question, I got thorough responses that really helped me on.

Also, waiting for my software to download, I read through the thread #448 “Moving to AGS 4.0” as well as through all of the long thread #403 “AGS4 and the death of legacy” that was referenced there. Contrary to the warning about “heated discussions”, I was very impressed by the thoughtful tone and the considerate way of interacting with each other on a touchy subject. Programmers of (probably) very different “generations” and outlooks managed to find a mature consensus, sometimes sharing their personal feelings and viewpoints with a surprisingly open heart on the way.

fernewelten

So, I've just managed to get a build of the "master" branch for the very first time, using the instructions at the address CW pointed me to.

There was only one change necessary, in the "Build Events/Post-Build-Event" property of the source "AGS.Native": It generates a DOS copy instruction where my source and target contain spaces, so the instruction wasn't parsed correctly by the operating system. Adding quotes solved the problem.
(To wit:
Spoiler

The original was: copy $(TargetPath) $(SolutionDir)..\Editor\References

This expands to: copy C:\Users\Peter G Bouillon\source\repos\ags\Editor\AGS.Native\Debug\AGS.Native.dll C:\Users\Peter G Bouillon\Source\Repos\ags\Solutions\..\Editor\Reference

This generates the error message: Error MSB3073   The command "copy C:\Users\Peter G Bouillon\source\repos\ags\Editor\AGS.Native\Debug\AGS.Native.dll C:\Users\Peter G Bouillon\Source\Repos\ags\Solutions\..\Editor\References
:VCEnd" exited with code 1.   AGS.Native   C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets   133


I changed this to: copy "$(TargetPath)" "$(SolutionDir)..\Editor\References"

This expands to: copy "C:\Users\Peter G Bouillon\source\repos\ags\Editor\AGS.Native\Debug\AGS.Native.dll" "C:\Users\Peter G Bouillon\Source\Repos\ags\Solutions\..\Editor\References"
[close]
)

So, do we have a standard way to check the build (such as a standard example project with known behaviour, etc.)?

Crimson Wizard

Quote from: fernewelten on Thu 12/07/2018 10:40:37
So, do we have a standard way to check the build (such as a standard example project with known behaviour, etc.)?

No, you need to get a source of some game. Certain templates, like 9-verb MI-style, contain more interactions that others and could be used as a quick test too. For specific features I was just keep making test games.

Over years there were suggestions to make a larger test game, but that was not done yet.

fernewelten

#6
So, I've used the last days for heavy-handed looking through the AGS code base, in order to get an overview on the coding. I've kept to the AGS4 branch for the time being. I'm still at it. --

Is anyone actively working on the parser right now? Because I'm noticing that the parser module is currently failing its own Googletest tests. It seems to correctly catch a type conversion error, but in a different way than the author of one of the tests expected.

Spoiler

(ags/Solutions/Compiler.Lib.sln, project Compiler.Lib.Test, testfile ags/compiler/test/cs_parser_test.cpp, line 77)
error: Value of: last_seen_cc_error
Actual: "Type mismatch: cannot convert 'DynamicSprite' to 'int'"
Expected: "Type mismatch: cannot convert 'DynamicSprite*[]' to 'int[]'
[close]

Crimson Wizard

Quote from: fernewelten on Tue 24/07/2018 19:21:42
Is anyone actively working on the parser right now?

Probably not, at least I haven't heard anyone making bigger changes to it for a while.
The difference in code and test may be explained by the fact that automatic server which ran the tests was no longer maintained at the time when these changes made.

But I'd like to ask, please make new thread or even open an issue on github to discuss particular errors or suggestions.

Another thing, if there is an actual bug in active release (even if only in tests) then please consider fixing it in AGS 3 branch first. Ags3 will be merged to ags4 periodically. (I also wanted to copy your post-build step fix there)

SMF spam blocked by CleanTalk